matplotlib作为python的基本绘图包,用起来还是挺方便的,与matlab大同小异。个人觉得比matlab的图稍微好看一些。科研中用的最多的还是折线图,下面是其基本用法:
import matplotlib.pyplot as plt
x = [1,2,3,10]
y = [8,5,4,12]
#可用字符串表示线的样式,比如"b^-",ms是标记大小,label是图例
#还可以根据需求设置线的粗细等其他样式
plt.plot(x,y,"b^-",ms="6",label="mylabel")
#设置横纵坐标轴的范围
plt.xlim(-2,12)
plt.ylim(2,14)
#设置横纵坐标轴标签
plt.xlabel("x")
plt.ylabel("y")
#设置标题
plt.title("mytitle")
plt.legend()
#画网格线,默认横纵坐标轴都画,grid(axis="y")表示只画y轴
plt.grid()
plt.show()
自定义坐标轴
有时我们想自定义坐标轴,比如想让上图点的横坐标等距分布,可以使用xticks():
import matplotlib.pyplot as plt
x = [1,2,3,10]
y = [8,5,4,12]
#可用字符串表示线的样式,比如"b^-",ms是标记大小,label是图例
#还可以根据需求设置线的粗细等其他样式
plt.plot([2,4,6,8],y,"b^-",ms="6",label="mylabel")
plt.xticks([2,4,6,8],x)
#设置横纵坐标轴的范围
plt.xlim(-2,12)
plt.ylim(2,14)
#设置横纵坐标轴标签
plt.xlabel("x")
plt.ylabel("y")
#设置标题
plt.title("mytitle")
plt.legend()
#画网格线,默认横纵坐标轴都画,grid(axis="y")表示只画y轴
plt.grid()
plt.show()
双y轴
import matplotlib.pyplot as plt
x1 = [1,2,3,10]
y1 = [8,5,4,12]
x2 = [2,4,8,10]
y2 = [800,600,500,650]
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.set_xlabel("x")
ax1.set_ylabel("y1")
ax1.plot(x1,y1,"o-")
ax1.set_ylim(2,14)
ax2 = ax1.twinx()
#这里用到了一个小技巧,重复画两次y2,后一次把前一次覆盖了
#这样可以让两条线看似在一个图例中显示,比分开显示图例好看些
ax2.plot(x2,y2,"o-",ms="5",label="y1")
ax2.plot(x2,y2,"s-",label="y2")
ax2.set_ylim(400,1000)
ax2.set_ylabel("y2")
plt.xlim(0,12)
plt.title("mytitle")
plt.legend()
plt.grid(axis="y")
#图标注释
ax1.annotate('point',xy=(5,5.8),xytext=(7,7),
arrowprops=dict(arrowstyle="->",connectionstyle="arc3"))
plt.show()