关于Matplotlib
- Matplotlib是python的绘图库之一,既适合交互式地进行制图,也可以作为绘图控件方便得嵌入GUI应用程序中
- Matplotlib的pyplot字库,方便用户快速绘制2D图标,包括直方图、饼图、散点图…
- Matplotlib配合NumPy使用,可以实现科学计算的可视化显示
- 使用简单绘图语句,实现复杂绘图效果
- 以交互式操作实现渐趋精细的图形效果
- 使用嵌入式的Latex输出具有印刷级别的图标、科学表达式和符号文本
- 对图标的组成元素实现精细化控制
导入matpotlib.pyplot模块
import matplotlib.pyplot as plt
显示所绘图像
%matplotlib inline #在notebook中显示图像
plt.show() #在spyder中显示图像
绘图
简单图像
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0.05, 10, 1000) #在0.05到10之间取1000个数
y = np.sin(x)
plt.plot(x, y)
plt.show() #显示图像
带颜色color、节点样式marker、画线样式linestyle的图像
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(1, 10, 10)
y = x ** 2
plt.plot(x, y, color='red', marker='*', linestyle='--')
#也可写成plt.plot(x, y, 'r*--')
plot.show()
color
character | color |
---|---|
‘b’ | blue |
‘g’ | green |
‘r’ | red |
‘c’ | cyan |
‘m’ | magenta |
‘y’ | yellow |
‘k’ | black |
‘w’ | white |
marker
character | description |
---|---|
‘.’ | 点 |
‘,’ | 像素点 |
‘o’ | 圆点 |
‘v’ | 下三角点 |
‘^’ | 上三角点 |
‘<’ | 左三角点 |
‘>’ | 右三角点 |
‘1’ | 下三叉点 |
‘2’ | 上三叉点 |
‘3’ | 左三叉点 |
‘4’ | 右三叉点 |
‘s’ | 正方点 |
‘p’ | 五角点 |
‘*’ | 星形点 |
‘H’ | 六边形点2 |
‘h’ | 六边形点1 |
‘+’ | 加号点 |
‘×’ | 乘号点 |
‘D’ | 实心菱形点 |
‘d’ | 瘦菱形点 |
‘|’ | |
‘_’ | 横线点 |
linestyle
chacter | description |
---|---|
‘-’ | 实线 |
‘–’ | 虚线 |
‘-.’ | 虚点线 |
‘:’ | 点线 |
带线条宽度linewidth、透明度alpha、描点方式drawstyle的图像
- linewidth :定义线条的宽度,可取任意实数
- alpha :定义线条的透明度,一般取值[0,1]之间
- drawstyle :定义描点方式
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(1, 10, 10)
y = np.cos(x)
plt.plot(x, y, 'b*--', linewidth=10, alpha=0.3, drawstyle='steps')
plot.show()
常用图像设置命令(1)
- plt.title() :设置图像标题
- plt.xlim() :设置x轴显示范围
- plt.ylim() :设置y轴显示范围
- plt.xlabel() :设置x轴名称
- plt.ylabel() :设置y轴名称
- plt.grid() :显示坐标网格线
代码中需加入以下两行命令:
plt.rcParams[‘font.sans-serif’] = [‘SimHei’] #用来正常显示中文标签
plt.rcParams[‘axes.unicode_minus’] = False #用来正常显示正负号
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif']=['SimHei']#用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False#用来正常显示正负号
x = np.linspace(1, 10, 10)
y = np.cos(x)
plt.plot(x, y, 'b*--', linewidth=10, alpha=0.3, drawstyle='steps')
plt.title('我的Matlpotlib图')
plt.xlim(2,6)
plt.xlabel('x轴')
plt.ylabel('y轴')
plt.grid()
plot.show()
常用图像设置命令(2)
- plt.axhline :平行于x轴的水平参考线
- plt.axvline :平行于y轴的垂直参考线
- plt.axhspan :平行于y轴的区域
- plt.axvspan :平行于x轴的区域
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 10)
y = np.cos(x)
plt.plot(x, y, 'b*--', linewidth=10, alpha=0.3, drawstyle='steps')
plt.title('我的Matlpotlib图')
plt.axhline(y=0.5, c='r', linewidth=3)
plt.axvline(x=6, c='r', linewidth=3)
plt.axhspan(-0.25, 0.25, facecolor='green', alpha=0.3)
plt.axvspan(5, 7, facecolor='green', alpha=0.3)
plot.show()
常用图像设置命令(3)
- plt.lengend() :标示不同图形的文本标签图例
- plt.xticks() :设置x轴的标签名称
- plt.yticks() :设置y轴的标签名称
- plt.text() :添加图形内容细节的无指向型注释文本
- plt.annotate() :添加图形内容细节的指向型注释文本,默认为系统认为最好的地方
位置 | 位置 | 位置 |
---|---|---|
2 | 9 | 1 |
6 | 10 | 5/7 |
3 | 8 | 4 |
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 10)
y = np.cos(x)
plt.plot(x, y, 'g*-', linewidth=10, alpha=0.9, drawstyle='steps', label='y=sin(x)')
plt.title('我的Matplotlib图')
plt.grid(ls=':', c='b')
plt.legend(loc='upper right')
plt.xticks([2,3,4,5,6,7],['A','B','C','D','E','F'])
plt.text(1.5, 0, 'y=cos(x)', weight='bold', color='b')
plt.annotate('最大值', xy=(0,1), xytext=(0.8,1), arrowprops=dict(arrowstyle='->'))