基于matplotlib的数据可视化 -
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 |
a Bbox instance |
clip_on |
bool |
clip_path |
[(Path, Transform) | 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 |
a 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 |
a 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的数据可视化 -的更多相关文章
- 基于matplotlib的数据可视化 - 笔记
1 基本绘图 在plot()函数中只有x,y两个量时. import numpy as np import matplotlib.pyplot as plt # 生成曲线上各个点的x,y坐标,然后用一 ...
- 基于matplotlib的数据可视化 - 饼状图pie
绘制饼状图的基本语法 创建数组 x 的饼图,每个楔形的面积由 x / sum(x) 决定: 若 sum(x) < 1,则 x 数组不会被标准化,x 值即为楔形区域面积占比.注意,该种情况会出现 ...
- 基于matplotlib的数据可视化 - 热图imshow
热图: Display an image on the axes. 可以用来比较两个矩阵的相似程度 mp.imshow(z, cmap=颜色映射,origin=垂直轴向) imshow( X, cma ...
- 基于matplotlib的数据可视化 - 等高线 contour 与 contourf
contour 与contourf 是绘制等高线的利器. contour - 绘制等高线 contourf - 填充等高线 两个的返回值值是一样的(return values are the sam ...
- 基于matplotlib的数据可视化 - 三维曲面图gca
1 语法 ax = plt.gca(projection='3d')ax.plot_surface(x,y,z,rstride=行步距,cstride=列步距,cmap=颜色映射) gca(**kwa ...
- 基于matplotlib的数据可视化 - 柱状图bar
柱状图bar 柱状图常用表现形式为: plt.bar(水平坐标数组,高度数组,宽度比例,ec=勾边色,c=填充色,label=图例标签) 注:当高度值为负数时,柱形向下 1 语法 bar(*args, ...
- 基于matplotlib的数据可视化(图形填充fill fill_between) - 笔记(二)
区域填充函数有 fill(*args, **kwargs) 和fill_between() 1 绘制填充多边形fill() 1.1 语法结构 fill(*args, **kwargs) args - ...
- matplotlib实现数据可视化
一篇matplotlib库的学习博文.matplotlib对于数据可视化非常重要,它完全封装了MatLab的所有API,在python的环境下和Python的语法一起使用更是相得益彰. 一.库的安装和 ...
- 使用 jupyter-notebook + python + matplotlib 进行数据可视化
上次用 python 脚本中定期查询数据库,监视订单变化,将时间与处理完成订单的数量进行输入写入日志,虽然省掉了人为定时查看数据库并记录的操作,但是数据不进行分析只是数据,要让数据活起来! 为了方便看 ...
随机推荐
- This is a bug I believe, and it took me 2-3 days to figure it out. Please do the following to get it working,
This is a bug I believe, and it took me 2-3 days to figure it out. Please do the following to get it ...
- [Algorithm] Search element in a circular sorted array
function findInCircularlySortedAry (ary = [], target) { ) { ; } ) { ] === target ? : -; } let , high ...
- Masonry自动布局使用
Masonry是一个轻量级的布局框架,采用更好的语法封装自动布局,它有自己的布局DSL.简洁明了并具有高可读性 而且同时支持 iOS 和 Max OS X. 下载 NSLayoutConstraint ...
- Hbase总结(六)hbase37个笔试题
下面试题是摘自互联网的基础上自己加了选项说明解释便于自己以后看时方便节省时间 1. HBase来源于哪篇博文? C A The Google File System B MapReduce C Big ...
- 2014年10月底/终于/HTML5定稿……/技术从来不会成为发展的绝对瓶颈/反而商业成了无法逾越的鸿沟【转载+整理】
原文地址 本文内容 一.HTML5 诞生 二.HTML5 第一阶段: Web 增强与打破垄断 三.HTML5 第二阶段: 移动互联网 四.HTML5 这回真的来了 五.颠覆原生 App 六.还有什么会 ...
- 单例模式在生产环境jedis集群中的应用
背景:不久前单位上线一款应用,上了生产环境之后,没过多久,便吃掉了服务器所有的内存,最后导致网站服务挂了. 在解决了这一问题之后,我发现这其实是典型的一单例模式,现分享一下. 之前存在问题的老代码如下 ...
- 牛客网-《剑指offer》-旋转数组的最小数
题目:http://www.nowcoder.com/practice/9f3231a991af4f55b95579b44b7a01ba C++ class Solution { public: in ...
- JavaScript正则式入门
正则式 正则表达式,又称规则表达式.(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表通常被用来检索.替换那些符合某个模式(规 ...
- Installing ODIConsole application using weblogic server
在ODI 创建Java EE Agent时候, 启动Fusion Middleware配置向导创建新域的时候,选择的模板如下,已经包含了 Oracle Data Integrator - Consol ...
- urllib2特点--超时设置
# -*- coding: cp936 -*- #python 27 #xiaodeng #urllib2特点--超时设置 import urllib2 def urlopen(): url='htt ...