Python里经常需要绘图,客http://nbviewer.jupyter.org/github/lijin-THU/notes-python/blob/master/index.ipynb ,此博文里有详细的Python学习笔记,针对绘图也有详细的说明。此文仅为自己学习实践的记录。
1. plt.plot(x1,y1,format_str, x2,y2,format_str)可以用来画多组图。
plt.show 函数用来显示图像。图像格式如下。除了用format_str指定格式外,还可以用linewidth和color显示的指定线条格式。
plt.plot 函数有范围值,返回的是各组线条的句柄,通过函数plt.setp(line, ...)设置句柄,可以改变线条宽度颜色等属性。
字符 | 颜色 |
‘b’ | 蓝色,blue |
‘g’ | 绿色,green |
‘r’ | 红色,red |
‘c’ | 青色,cyan |
‘m’ | 品红,magenta |
‘y’ | 黄色,yellow |
‘k’ | 黑色,black |
‘w’ | 白色,white |
字符 | 类型 | 字符 | 类型 |
‘-‘ | 实线 | ‘--‘ | 虚线 |
‘-.‘ | 虚点线 | ‘:‘ | 点线 |
‘.‘ | 点 | ‘,‘ | 像素点 |
‘o‘ | 圆点 | ‘v‘ | 下三角点 |
‘^‘ | 上三角点 | ‘<‘ | 左三角点 |
‘>‘ | 右三角点 | ‘1‘ | 下三叉点 |
‘2‘ | 上三叉点 | ‘3‘ | 左三叉点 |
‘4‘ | 右三叉点 | ‘s‘ | 正方点 |
‘p‘ | 五角点 | ‘*‘ | 星形点 |
‘h‘ | 六边形点1 | ‘H‘ | 六边形点2 |
‘+‘ | 加号点 | ‘x‘ | 乘号点 |
‘D‘ | 实心菱形点 | ‘d‘ | 瘦菱形点 |
‘_‘ | 横线点 |
2. 坐标轴显示范围设定,plt.axis([xmin, xmax, ymin, ymax])
3. plt.figure(num) 产生指定编号为num的图。plt.subplot(rows, cols, fignum) 在一幅图中产生多幅子图。当 numrows * numcols < 10 时,中间的逗号可以省略,因此 plt.subplot(211) 就相当于 plt.subplot(2,1,1)。
4. plt.xlabel, plt.ylabel, plt.title 产生图的对应标签。plt.text(x,y,str) 在指定位置生成文本说明。plt.grid(True/False)显示网格。
5. plt.annotate(str(注释的内容), xy=(x,y), xytext=(x,y), str(注释的样式))。
import numpy as np
import matplotlib.pyplot as plt
t = np.arange(0, 5, 0.1)
plt.figure(1)
plt.subplot(211)
plt.title(‘Sin-function‘)
plt.xlabel(‘t‘)
plt.ylabel(‘y‘)
plt.axis([0, 4, -1, 1])
plt.plot(t, np.sin(2*np.pi*t)*0.5, ‘b-‘, t, np.exp(-t)*np.cos(2*np.pi*t), ‘g-.‘)
plt.annotate(‘local max‘, xy = (5/4, 0.5), xytext = (2, 0.8), arrowprops=dict(facecolor=‘black‘, shrink=0.05))
plt.subplot(2,1,2)
plt.plot(t, np.cos(2*np.pi*t), ‘r--‘)
plt.title(‘Cos-function‘)
plt.xlabel(‘t‘)
plt.ylabel(‘y‘)
plt.axis([0, 5, -1, 1])
plt.tight_layout(0.5) # 设定子图之间的间距
plt.savefig(‘plt.jpg‘) # 存储绘图
plt.show()
6. 使用style配置pyplot风格。pyplot有多种预设风格,可以使用 plt.style.available 来查看:包括[u‘dark_background‘, u‘bmh‘, u‘grayscale‘, u‘ggplot‘, u‘fivethirtyeight‘]。
plt.figure(1)
x = np.linspace(0, 2*np.pi)
y = np.sin(x)
with plt.style.context((‘dark_background‘)):
plt.plot(x, y, ‘r-o‘)
plt.show()
## 黑色背景