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. OpenGL ES 3.0之顶点缓冲

    所谓顶点缓冲就是直接将顶点数据存储在gpu的一段缓冲区,不需要从cpu拷贝到gpu.提高了程序的运行效率. 操作步骤 1.创建顶点缓冲对象 GLuint vertexBufferID; 2.分配空间 ...

  2. Objective-C编程 - 1. 浅谈内存分配

    Objective-C语言的对象类型都必须用指针,对象所占的内存是在堆(heap)上分配的. NSString也必须在堆上分配,因此必须用指针. NSString *someString = @&qu ...

  3. Google Chrome Resize Plugin

    https://chrome.google.com/webstore/detail/window-resizer/kkelicaakdanhinjdeammmilcgefonfh

  4. Lanczos Algorithm and it's Parallelization Stragegy

    由于写了降维的一个系列算法分析,本来以为对这个Lanczos算法会理解一点,但是还是不知道讲了什么,最多的就是会如何调用,然后出结果,所以就翻译官网的相关内容.本篇翻译来自Dimensional Re ...

  5. 001-Go JSON处理

    在golang中提供的encoding/json包可以编码JSON以及解码JSON数据. 1.编码JSON 使用json包中的Marshal函数进行编码,源码如下: func Marshal(v in ...

  6. Eclipse Java注释模板设置详解以及版权声明

    网上的Eclipse注释模板,在这里稍稍整理一些比较常用的. 编辑注释模板的方法:Window->Preference->Java->Code Style->Code Temp ...

  7. 批处理转exe工具(Quick Batch File Compiler )|bat格式化exe

    看到的,就是回忆.历史总是那么漫不经心,走完一生.留下可以记忆的脚本.... 对于window编写的bat脚本,想加密吗? 你所想的,前辈们基本上都有产出成果.所以在这个开源.共享.进步的互联网时代. ...

  8. QQ登录整合/oauth2.0认证-01-申请appkey和appid

    本节需要你申请appkey和appid还有绑定域名的空间 首先 再讲课之前 你需要准备以下东西 到腾讯开发平台中申请 开发者 获得appid 和appkey 这两个东东 这两个东东 就算没审核 也可以 ...

  9. C-pthread_cond_wait 详解

    pthread_cond_wait() 用于阻塞当前线程,等待别的线程使用 pthread_cond_signal() 或 pthread_cond_broadcast 来唤醒它. pthread_c ...

  10. iOS获取真机沙盒文件、获取真机本地数据

    有时我们需要对真机内的数据进行分析,那么如何获取沙盒所有数据文件呢? 1.设备连接到电脑,打开xcode 2.打开window-devices 3.打开后,选择设备名,选择app,导出数据 4.最后拿 ...