matplotlib.pyplot(as mp or as plt)提供基于python语言的绘图函数

引用方式: import matplotlib.pyplot as mp / as plt 本章内容拟按官方手册(NumPy Reference, Release 1.14.5 )中的 plt 形式

像matlab一样,matplotlib.pyplot是一些命令样式函数。

pyplot函数都可以创建图形、再图形中创建绘图区、再绘图区中画线、用标签装饰图形等操作。

在pyplot的函数调用中,隐藏了各种状态,这就意味着要始终跟踪到当前的图形和绘图区域,并且绘图函数要指向当前的坐标轴(注意这里的坐标轴是数字坐标轴,而不是严格意义的数学术语)。

1 plot

plot()函数是用来绘制二维图像的,

plot的广泛的定义为:

plot(*args, **kwargs)

此定义意味着plot()这一通用函数可以接受任意参数

args 和 kwargs 参数具体化

1.1 asgs参数

plot([x], y, [fmt], data=None, **kwargs)plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)

x - 值是可选的,

y - 值是必选的,也就是说,当一个值时,默认为y

fmt - 用于定义基本格式化如颜色、标记和直线样式的shortcut string

注:可以增加多个Y值,及其相关基本格式化shortcut string

示例1

import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
plt.show() # 不写此语句,则图像存在于内存中,不会输出到显示器上

示例2  没有x轴时

import matplotlib.pyplot as plt
# x = [1, 2, 3, 4]
y =  [1, 4, 9, 16]
plt.plot(y)
plt.show()

当仅给plot()的args参数提供一个列表/数组时,则默认为y,此时缺省x;x轴上的数值是自动生成的,x轴上的值是默认从0开始,且x上的长度值与y轴一致,所以此时x轴上的值为[0, 1, 2, 3]

示例3

import matplotlib.pyplot as plt
#args参数  ‘bo’  格式化了图形形式
plt.plot([1, 2, 3, 4], [1, 4, 9, 16],'bo')
plt.show()

在plot()函数中,默认为绿色实线,对应格式字符串为‘b-’;实际上,标示线条颜色和类型的格式串来自于matlab。

另外还有一些其他格式字符串来控制线条样式或标记

字符    描述'-'     实线
'--'    虚线
'-.'    点与线
':'     点
'.'     点标记
','    像素标记
'o'    圆圈标记
'v'    倒三角标记
'^'    正三角标记
'<'    左三角标记
'>'    右三角标记
'    向下Y标记
'    向上Y标记
'    向左Y标记
'    向右Y标记
's'    正方形标记
'p'    五角星标记
'*'         *标记
'h'    六边形1 标记
'H'    六边形2 标记
'+'         +标记
'x'    x标记
'D'    钻石标记
'd'    薄砖石标记
'|'    垂直线标记
'_'    水平线标记

在默认格式字符串中,‘b-’ 中的 ‘-’ 表示实线,前面的字母 ‘b’ 则表示颜色

颜色相关的格式字符串及描述

字符    描述
‘b’      blue(蓝色)
‘g’      green(绿色)
‘r’      red(红色)
‘c’      cyan(青色)
‘m’     magenta(品红)
‘y’     yellow(黄色)
‘k’     black(黑色)
‘w’    white(白色)

除了常见的颜色缩写外,还有RGB / RGBA颜色元组((0,1,0,1)),或者灰度强度作为字符串( ‘ 0.8 ’ ),或者十六进制字符串(‘#0080000’)

如果不使用上述简写格式字符,也可以采用kwargs字典参数形式进行控制

1.2 kwargs参数

在一定程度上,kwargs参数与args参数是等效的。如下示例所示

示例1

import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y =  [1, 4, 9, 16]
plt.plot(x,y,'go--',linewidth = 2, markersize = 12)
# plt.plot(x, y, color='green', marker='o', linestyle='dashed',linewidth=2, markersize=12)
plt.show()

在示例中,采用 args 和 kwargs 的打印效果是一样的

在控制线条属性中,可以使用关键字参数进行设置

plt.plot(x, y, linewidth=2.0)

使用Line2D对象的setter方法,plot函数返回Line2D对象列表,例如 line1, line2 = plot(x1, y1, x2, y2) ,

import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
L1,L2 = plt.plot(x,y,y,x,linewidth = 3)
print(L1) # Line2D(_line0)
print(type(L1)) # <class 'matplotlib.lines.Line2D'>
print(L2) # Line2D(_line1)
plt.show()

在下段代码中,假设只有一行,因此返回的列表长度为1,使用元组来拆开line,并获取到列表的第一个元素。

import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
line, = plt.plot(x,y,'-')
# 记得添加逗号,
# 否则会报错AttributeError:
# 'list' object has no attribute 'set_antialiased'
# 也就意味plot返回的是数组list,
# 使用setter方法,则返回的是Line2D对象
line.set_antialiased(False) # turn off antialising
plt.show()

使用 setp() 命令,实现一行设置多个属性,采用一个或一组对象可以使 setp 工作更加 transparently(明亮地,显然地,易觉察地)

import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
lines = plt.plot(x, y, x, y)
# use keyword args
plt.setp(lines, color='r', linewidth=2.0)
plt.show()

采用 MATLAB 形式的键值对也可,此处略。

1.3 Line2D属性

在xdata、ydata序列中创建带有x、y数据的Line2D实例。

详细参数见 matplotlib.lines.Line2D,里面有针对每一个参数的详细讲解

Property Description
agg_filter a filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array
alpha float (0.0 transparent through 1.0 opaque)
animated bool
antialiased or aa bool
clip_box Bbox instance
clip_on bool
clip_path [(PathTransform) | Patch | None]
color or c any matplotlib color
contains a callable function
dash_capstyle [‘butt’ | ‘round’ | ‘projecting’]
dash_joinstyle [‘miter’ | ‘round’ | ‘bevel’]
dashes sequence of on/off ink in points
drawstyle [‘default’ | ‘steps’ | ‘steps-pre’ | ‘steps-mid’ | ‘steps-post’]
figure Figure instance
fillstyle [‘full’ | ‘left’ | ‘right’ | ‘bottom’ | ‘top’ | ‘none’]
gid an id string
label object
linestyle or ls [‘solid’ | ‘dashed’, ‘dashdot’, ‘dotted’ | (offset, on-off-dash-seq) | '-' | '--' | '-.' | ':' | 'None' | ' ' | '']
linewidth or lw float value in points
marker A valid marker style
markeredgecolor or mec any matplotlib color
markeredgewidth or mew float value in points
markerfacecolor or mfc any matplotlib color
markerfacecoloralt or mfcalt any matplotlib color
markersize or ms float
markevery [None | int | length-2 tuple of int | slice | list/array of int | float | length-2 tuple of float]
path_effects AbstractPathEffect
picker float distance in points or callable pick function fn(artist, event)
pickradius float distance in points
rasterized bool or None
sketch_params (scale: float, length: float, randomness: float)
snap bool or None
solid_capstyle [‘butt’ | ‘round’ | ‘projecting’]
solid_joinstyle [‘miter’ | ‘round’ | ‘bevel’]
transform matplotlib.transforms.Transform instance
url a url string
visible bool
xdata 1D array
ydata 1D array
zorder float

2 多图和多坐标轴

matlab、pyplot都有当前图和当前坐标轴的概念,所有的绘图命令都应用于当前轴。

函数gca()返回当前轴,get current axes

函数gcf()返回当前图,get current figure

 import numpy as np
 import matplotlib.pyplot as plt

 def f(t):
     return np.exp(-t) * np.cos(2*np.pi*t)

 t1 = np.arange(0.0, 5.0, 0.1)
 t2 = np.arange(0.0, 5.0, 0.02)

 plt.figure(1)
 plt.subplot(211)
 plt.plot(t1, f(t1), 'bo', t2, f(t2), 'k')

 plt.subplot(212)
 plt.plot(t2, np.cos(2*np.pi*t2), 'r--')
 plt.show()


10行 figure()命令是可选的,

这儿的figure()命令是可选的,因为figure(1)会被默认执行,就像subplot(111)也会被默认执行,只要你不手动定义任何的坐标轴。subplot()命令指定行数(numrows)、列数(numcols)、图形号(fignum),图形号的范围是从1到numrows*numcols。如果numrows*numcols<10,subplot()参数里的逗号是可选的。所以subplot(211)等同于subplot(2, 1, 1)。你可以创建任意数量的子图和坐标轴。如果你想手动放置坐标轴,例如不在一个直角网格里,可以使用axes()命令,axes可以让你给坐标轴定义位置,像axes([left, bottom, width, height]),参数都是小数(0-1)坐标。两个例子:

基于matplotlib的数据可视化 -的更多相关文章

  1. 基于matplotlib的数据可视化 - 笔记

    1 基本绘图 在plot()函数中只有x,y两个量时. import numpy as np import matplotlib.pyplot as plt # 生成曲线上各个点的x,y坐标,然后用一 ...

  2. 基于matplotlib的数据可视化 - 饼状图pie

    绘制饼状图的基本语法 创建数组 x 的饼图,每个楔形的面积由 x / sum(x) 决定: 若 sum(x) < 1,则 x 数组不会被标准化,x 值即为楔形区域面积占比.注意,该种情况会出现 ...

  3. 基于matplotlib的数据可视化 - 热图imshow

    热图: Display an image on the axes. 可以用来比较两个矩阵的相似程度 mp.imshow(z, cmap=颜色映射,origin=垂直轴向) imshow( X, cma ...

  4. 基于matplotlib的数据可视化 - 等高线 contour 与 contourf

    contour 与contourf 是绘制等高线的利器. contour  - 绘制等高线 contourf - 填充等高线 两个的返回值值是一样的(return values are the sam ...

  5. 基于matplotlib的数据可视化 - 三维曲面图gca

    1 语法 ax = plt.gca(projection='3d')ax.plot_surface(x,y,z,rstride=行步距,cstride=列步距,cmap=颜色映射) gca(**kwa ...

  6. 基于matplotlib的数据可视化 - 柱状图bar

    柱状图bar 柱状图常用表现形式为: plt.bar(水平坐标数组,高度数组,宽度比例,ec=勾边色,c=填充色,label=图例标签) 注:当高度值为负数时,柱形向下 1 语法 bar(*args, ...

  7. 基于matplotlib的数据可视化(图形填充fill fill_between) - 笔记(二)

    区域填充函数有 fill(*args, **kwargs) 和fill_between() 1  绘制填充多边形fill() 1.1 语法结构 fill(*args, **kwargs) args - ...

  8. matplotlib实现数据可视化

    一篇matplotlib库的学习博文.matplotlib对于数据可视化非常重要,它完全封装了MatLab的所有API,在python的环境下和Python的语法一起使用更是相得益彰. 一.库的安装和 ...

  9. 使用 jupyter-notebook + python + matplotlib 进行数据可视化

    上次用 python 脚本中定期查询数据库,监视订单变化,将时间与处理完成订单的数量进行输入写入日志,虽然省掉了人为定时查看数据库并记录的操作,但是数据不进行分析只是数据,要让数据活起来! 为了方便看 ...

随机推荐

  1. TCP/IP具体解释学习笔记--TCP的超时与重传

    1.基本概念 TCP之所以能够安全的将数据在传输中的安全性,是因为它每次给对方发送数据,都会等待对方给个确认,当长时间收不到这个确认,发送端就会重发这个数据. 2.超时时间的測量 要測超时时间,TCP ...

  2. 解决CentOS下无法发送邮件的问题

    最近有个项目从虚拟主机迁到云主机上,换了个环境,原来用于找回密码的发送邮件功能竟然用不了了!反应极慢,导致tenginx报504网关超时错误. 5.5 or 7.0, sockets 初次百度,看了别 ...

  3. Android 基本 Jackson Marshalling(serialize)/Unmarshalling(deserialize)

    本文内容 基本 Jack Marshalling 忽略属性 忽略 Null 字段 改变字段名字 基本 Jackson Marshalling 把 JSON 解析成 JsonNode Unmarshal ...

  4. Android 自定义 ListView 上下拉动刷新最新和加载更多

    本文内容 开发环境 演示上下拉动刷新最新和加载更多 ListView 参考资料 本文演示上下拉动,刷新最新和加载更多,这个效果很常见,比如,新闻资讯类 APP,当向下拉动时,加载最新的资讯:向上拉动时 ...

  5. Solidworks公司电脑图纸被加密之后如何解密输出

    第一步:打开总装配的组件(该组件需要包含你所有需要的零件),比如打开其中一个:   第二步:Solidworks的菜单中依次:"文件"→"打包"(有的版本是pa ...

  6. Discuz常见小问题-如何批量加精,置顶帖子

    批量选中帖子,然后置顶和精华都可以勾选 完成之后的效果

  7. 基于redis分布式缓存实现(新浪微博案例)转

    第一:Redis 是什么? Redis是基于内存.可持久化的日志型.Key-Value数据库 高性能存储系统,并提供多种语言的API. 第二:出现背景 数据结构(Data Structure)需求越来 ...

  8. 【iOS开发】如何用 Swift 语言进行LBS应用的开发?

    本文分为三部分,第一部分详解用Swift语言开发LBS应用,并给出完整的示例与源代码:第二部分介绍如何申请LBS密钥,第三部分是综合示例查看,扫描二维码即可查看示例demo. 第一部分 使用Swift ...

  9. MySQL排序:SELECT ORDER BY

    SELECT 和ORDER BY结合进行排序: products表例如以下: a 按产品名称列进行排序: b 按多个列进行排序,默认排序顺序为升序: c 指定排序方向,即指定为降序: d 对多个列进行 ...

  10. Android为ViewPager添加切换动画——自己定义ViewPager

    转载请注明出处:http://blog.csdn.net/allen315410/article/details/44224517 在上篇博客中,我写了一个使用属性动画为ViewPager加入切换动画 ...