使用matplotlib绘图库的pyplot快速绘图
matplotlib是Python最常用的绘图库,在结果或数据可视化中常用pyplot实现快速绘图,下面参考张若愚主编的Python科学计算(第2版)介绍pyplot绘图:
导入pyplot模块
import numpy as np
import matplotlib.pyplot as plt
定义函数
x = np.linespace(0,8,100)
y = np.sin(2*x)
z = np.cos(x**2)
调用figure()创建一个figure对象
plt.figure(figsize=(8,4))
其中,figize指定Figure对象的宽度和高度,单位为英寸。也可以利用dpi参数指定单位英寸像素数,默认为80。
绘制y的图像
plt.plot(x,y,label="$sin(2*x)$",color="blue",linewidth=2)
label: 指定曲线的标签,$符号用法与LaTeX相同,作用为显示为数学公式。
color: 指定曲线颜色,可以用英文单词或者’#’开头的6位十六进制数表示, 例如’#ff0000’表示红色,也可以用值在0到1范围之内的三个元素的元组来表示,例如(0.0,0.0,1.0)也表示蓝色。
linewidth:曲线宽度,可以简写为lw
绘制z的图像
plt.plot(x,z,'r--',label="$cos(x^2)$")
可以直接通过’r–’指定曲线的颜色和线型,与MTALB用法类似
plt.plot() 可用颜色:
character | color | 颜色 |
---|---|---|
b | blue | 蓝色 |
g | green | 绿色 |
k | black | 黑色 |
c | cyan | 蓝绿色 |
m | magenta | 品红色 |
y | yellow | 黄色 |
w | white | 白色 |
plt.plot() 可用线型:
character | color |
---|---|
'.' | point marker |
',' | pixel marker |
'o' | circle marker |
'v' | triangle_down marker |
'^' | triangle_up marker |
'<' | triangle_left marker |
'>' | triangle_right marker |
'1' | tri_down marker |
'2' | tri_up marker |
'3' | tri_left marker |
'4' | tri_right marker |
's' | square marker |
'p' | pentagon marker |
'*' | star marker |
'h' | hexagon1 marker |
'H' | hexagon2 marker |
'+' | plus marker |
'x' | x marker |
'D' | diamond marker |
'd' | thin_diamond marker |
'|' | vline marker |
'_' | hline marker |
设置Axes对象的属性
plt.xlabel("Time(s)")
plt.ylabel("Volt")
plt.title("PyPlot First Example")
plt.ylim(-1.2,1.2)
plt.legend()
xlabel、ylabel: 设置X、Y轴名称。
title: 设置子图名称。
xlim、ylim: 设置X、Y轴显示范围。
legend: 显示图示,即图中的label和样式的矩形区域
显示绘画窗口,保存图像
plt.show()
运行代码,输入图像如下:
保存图像
在Python中,画出的图像可右击另存为保存,对于单个画图,可以用savefig()保存。
plt.savefig('plot1.jpg',dpi=100)
savefig()第一个参数是保存路径,第二个参数为保存图像的分辨率。
注意:plt.show()之后将创建了一个新的空白的图片(坐标轴),plt.savefig() 不会保存原图像而会保存这个新生成的空白图片。解决方法a:在plt.show()之前保存;解决方法b:为plt命名,使用命名保存。
配置参数
一次绘制多个图像并配置参数
plt.figure(figsize=(5,6))
x = np.arange(0,-pi,pi,0.05)
lines = plt.plot(x, np.sin(x), x, np.cos(x), x, np.tan(x))
lines[0].set_alpha(0.6)
plt.setp(lines[1], color='r',linewidth=3.0)
输入图像为:
这里,通过调用Line2D对象的set_alpha(),修改其在对应曲线的透明度;通过调用Line2D对象的setp(),修改其在对应曲线的颜色和线宽。
获取对象属性
print(lines[0].get_linewidth())
print(plt.getp(lines[0], 'color'))
>>1.5
1f77b4
获取对象的属性值的方法:get_*() 与plt.getp()。