matplotlib基本作图方法小结

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轴

有时我们需要在一张图上画具有不同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()


发布了24 篇原创文章 · 获赞 19 · 访问量 6万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章