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. 使用Filter过滤非法内容

    1.首先,需要编写一个响应的封装器ResponseReplaceWrapper,用它来缓存response中的内容,代码如下: ResponseReplaceWrapper.java package ...

  2. 微软BI 之SSRS 系列 - 如何实现报表标签的本地化 - 中文和英文的互换

    SSRS 中并没有直接提供本地化的配置方式,因此在 SSRS 中实现本地化,比如有英文标题还有可选的中文标题,就需要通过其它的方式来解决. 比如默认是这样的英文标题 - 但是本地中方用户可能比较喜欢看 ...

  3. 调用OpenCVSharp进行拍照

    一.核心代码: using OpenCvSharp; using System; using System.Collections.Generic; using System.IO; using Sy ...

  4. java推断字符串中是否包括字母

    1.java代码推断字符串中是否包括字母: 思路:使用正則表達式的来验证 1.1演示样例代码例如以下: /** * 该方法主要使用正則表達式来推断字符串中是否包括字母 * @author fengga ...

  5. python2和python3网络访问包

    python3 import http.client import urllib.parse python2 import httplib import urllib

  6. 西数移动固态SSD

    好款推荐! 我可没有收广告费:哈哈哈 就是看着产品不错,喜欢小米! 西数出了SSD移动固态硬盘真心不错!     文章来源:刘俊涛的博客 欢迎关注,有问题一起学习欢迎留言.评论

  7. xampp 教程

    xampp教程1 使用安装包进行安装 (目前有三种可供选择下载的XAMPP for Windows: 安装包   简单且安全:XAMPP 的便捷安装程序.) 使用安装包来安装XAMPP是最简单的方法. ...

  8. sqlserver 日志查看

    sqlserve的ErrorLog文件有时候会碰到文件很大的情况,可能通过命令xp_readerrorlog 或 sp_readerrorlog 执行,可以加搜索文本或起止时间 -- 日志查看 --e ...

  9. Linux进程共享通信 -- mmap实现

    https://blog.csdn.net/y396397735/article/details/50651633 使用mmap内存映射实现一端写,另一端读的进程间通信 写端代码write.c /*w ...

  10. django之创建第8个项目-数据库配置及同步研究

    1.sqlitestudio-2.1.5数据库可视化工具--百度云盘下载 2.编写C:\djangoweb\helloworld\blog\models.py文件 # Create your mode ...