matplotlib pyplot 画图 基础api

先生成几组的数据

  • sinx
    train_data = np.linspace(0, 10, 50)
    train_label = np.sin(train_data) + (np.random.rand(len(train_data)) - 0.5) * 0.2
  • random

分割画布 subplot and subplots

  • subplot:随用随切,灵活布局
    plt.subplot(4,3,7):将画布分成4行,3列,取第7个子块
matplotlib pyplot 画图 基础api_第1张图片
image.png
  • subplots:规划合理,一步到位
    fig,ax = plt.subplots(4,3):将画布分成4行,3列后,返回一个元组,
    第一项是Figure Object,第二列是所有的ax组成的ndarray。
    如果想画第2行第2列幅图,就使用ax[1][1]
    值得注意的是:在subplots方法中有一个bool类型的squeeze参数,该参数如果为True,生成形状为n1或者1n的图表时,会只返回一个1维ndarray;如果是False,则生成一个2维的ndarray。默认是True
matplotlib pyplot 画图 基础api_第2张图片
image.png
  • 可以看到subplot和subplots有一定的区别
    • subplot调用后、其他位置都是空白的
    • subplots调用后、其他位置已经生成了图
    • 可以总结出来两者调用方式的差异,subplot调用了之后,只取了当前画布的指定块,所以还可以对其他的位置进行再分配。而subplots调用之后,就一次性将当前画布进行了分配。
    • 从代码量上看,subplot每次切割都需要一行,subplots切12个图,只需要一行。
    • 从灵活性上看,subplot可以进行再分配,subplots就不行。一个较为灵活的例子如下
plt.subplot(4,3,7)
plt.plot(train_data,train_label)
plt.subplot(4,3,10)
plt.plot(train_data,train_label)
plt.subplot(2,1,1)
plt.plot(train_data,train_label)
plt.subplot(2,2,4)
plt.plot(train_data,train_label)
matplotlib pyplot 画图 基础api_第3张图片
image.png

散点图和曲线图 针对2维的简单数据

  • scatter:散点
    ax.scatter(train_data,train_label,marker = "+")
  • plot:连线
    ax.plot(train_data,train_label)


    matplotlib pyplot 画图 基础api_第4张图片
    image.png

直接显示一个numpy或者图片

a = np.linspace(1,256,256)
a = a.reshape((16,16))
plt.imshow(a)

绘制3D图

from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = Axes3D(fig)
X = np.arange(-2, 2, 0.1)
Y = np.arange(-2, 2, 0.1)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(abs(4-(X ** 2) - (Y ** 2)))
#Z = np.sin(R)
# 具体函数方法可用 help(function) 查看,如:help(ax.plot_surface)
ax.plot_surface(X, Y, R, rstride=1, cstride=1, cmap='rainbow')
plt.show()

属性和样式设置

plt.figure(i) 参数i设置图的编号
plt.ylim(down,top) 设置y轴的上下界
plt.margins(f) 参数f是0-1的小数,设置相对边距

ax.set(xlabel="x", ylabel="y=f(x)", title="y = sin(x),red:predict data,bule:true data")
ax.grid(True)

更多图的画法可参考

更多图
一些样式

https://blog.csdn.net/claroja/article/details/70792880

https://www.cnblogs.com/zhizhan/p/5615947.html

你可能感兴趣的:(matplotlib pyplot 画图 基础api)