Matplotlib 是 Python 的绘图库。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。 它也可以和图形工具包一起使用,如 PyQt 和 wxPython。
鉴于Matplotlib 可能是 Python 2D-绘图领域使用最广泛的套件。它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。这里将会探索 matplotlib 的常见用法。
matplotlib 官网 http://matplotlib.org/ 点击 docs 查阅参考文档和 API(方法和模块)
1、Matplotlib基本线图绘制
导入库模块:
import numpy as np
import matplatlib.pyplot as plt
定义图像定义域:
x = np.linspace(-np.pi, np.pi, 256, endpoint=True) #-pi和pi之间取256个点,并包含最后一个点
定义图像函数:
c, s = np.cos(x), np.sin(x)
绘图:
plt.figure(1) #制定为图1
plt.plot(x, c, color='blue', linewidth=1.0, linestyle='-', label="Cos", alpha=0.2) #自变量,因变量,线颜色,线宽,图像标签,透明度
plt.plot(x, s, "r*", label="Sin") #另一种制定方式, r代表red,*代表线型
# 设置横轴的上下限
plt.xlim(-4.0,4.0)
# 设置纵轴的上下限
plt.ylim(-1.0,1.0)
plt.title("Cos & Sin") #图像标题
plt.show()
显示两个坐标轴(通过对图1四周的边线来显示坐标轴):
ax = plt.gca() # gca就是轴的一个编辑器
ax.spines["right"].set_color("none") # spines 是四周的边线,none代表隐藏(右边)
ax.spines["top"].set_color("none") # spines 是四周的边线,none代表隐藏 (上面)
ax.spines["left"].set_position(("data", 0)) # 位置设置到数据域的 0 位置
ax.spines["bottom"].set_position(("data", 0)) #位置设置到数据域的 0 位置
plt.show()
设置坐标轴的记号:
ax.xaxis.set_ticks_position('bottom') #设置x轴的标注位于横轴的下面
ax.yaxis.set_ticks_position('left') #设置y轴的标注位于纵轴的左边
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],[r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$']) 注意这里使用了 LaTeX。
plt.yticks(np.linspace(-1,1,5,endpoint=True)) #纵轴设置5个记号
for label in ax.get_xticklabels() + ax.get_yticklabels(): #get获取记号,设置记号字体大小和颜色
label.set_fontsize(20)
label.set_bbox(dict(facecolor="white", edgecolor="None", alpha=0.2)) # facecolor背景颜色,edgecolor边缘颜色,alpha透明度
legend(loc='upper left') #图例,loc位置为上左
plt.grid() #显示网格线
plt.axis([-np.pi,-np.pi, -1, 1]) #指定图像显示范围,前两个是横轴,后两个是纵轴
plt.show()
填充和注释功能:
plt.fill_between(x, np.abs(x) < 0.5, c, c > 0.5, color="green", alpha=0.25) # 在c>0.5的区域内填充函数y=np.abs(x)<0.5与c函数包围的区域 ,对于函数y=np.abs(x)<0.5是分段函数,-0.5-0.5为1,其余区间为0
t = 1 #在t等于1的位置注释
plt.plot([t, t], [0, np.cos(t)], "y", linewidth=3, linestyle="--") #(t,0)到(t,cos(t))添加注释(y代表黄色),线型为虚线
plt.annotate("cos(1)", xy=(t, np.cos(1)), xytest=(1.5,0.6),testcoords="offset points",
arrowprops=dict(arrow,facecolor="black",shrink=0.05,connection))
#annotate参数详解:
——“标注”
——xy=(横坐标,纵坐标) :箭头尖端
——xytext=(横坐标,纵坐标):文字的坐标,指的是最左边的坐标,
——arrowprops= {facecolor= '颜色',shrink = '数字' <1 收缩箭头 }
plt.show()