首页 > 其他 > 详细

Matplotlib 设置

时间:2019-11-08 22:12:44      阅读:95      评论:0      收藏:0      [点我收藏+]
# 导入相关模块 
import matplotlib.pyplot as plt 
import numpy as np

设置 figure 

  Matplotlib 绘制的图形都在一个默认的 figure 中,我们可以自己创建 figure,可以控制更多的参数,常见的就是控制图形的大小

plt.figure(figsize=(6, 3)) 
plt.plot(x, y) 
plt.plot(x, y * 2) 
plt.show()

技术分享图片

设置标题

plt.plot(x, y) 
plt.plot(x, y * 2) 
plt.title("sin(x) & 2sin(x)") 
plt.show()

技术分享图片

 

 

设置坐标轴 

  • 通过  xlim   和  ylim   来限定坐标轴的范围
  • 通过 xlabel 和 ylabel 来设置坐标轴的名称
  • 通过 xticks 和 yticks  来设置坐标轴的刻度
plt.plot(x, y) 
plt.plot(x, y * 2)
plt.xlim((0, np.pi + 1)) 
plt.ylim((-3, 3)) 
plt.xlabel(X) 
plt.ylabel(Y)
plt.show()

技术分享图片

 

plt.plot(x, y) 
plt.plot(x, y * 2) 
plt.xticks((0, np.pi * 0.5, np.pi, np.pi * 1.5, np.pi * 2)) 
plt.show()

技术分享图片

 

设置 label 和 legend

  为了区分出每个数据对应的图形名称

plt.plot(x, y, label="sin(x)") 
plt.plot(x, y * 2, label="2sin(x)")
# plt.legend(loc=1) 
plt.legend(loc=best) 
plt.show()

技术分享图片

  图例的位置由 loc 关键字控制,其取值范围为 0-10,每个数字代表图表中的一处位置
技术分享图片

添加注释

  有时候我们需要对特定的点进行标注,我们可以使用 plt.annotate 函数来实现
  这里我们要标注的点是 (x0, y0) = (π, 0) 
  我们也可以使用 plt.text 函数来添加注释

plt.plot(x, y) 
x0 = np.pi 
y0 = 0 
# 画出标注点, s 代表点的大小 
plt.scatter(x0, y0, s=50) 
#添加文本 
plt.text(0, -0.25, "y = sin(x)", fontdict={size: 16, color: r}) 
#添加注释 
plt.annotate(sin(np.pi)=%s %y0, xy=(np.pi, 0), xycoords=data, xytext=(+30, -30),textcoords=offset points, fontsize=16,             
arrowprops=dict(arrowstyle=->, connectionstyle="arc3,rad=.2")) 
plt.show() 

技术分享图片

  对于 annotate 函数的参数,做一个简单解释:

  •   ‘sin(np.pi)=%s‘ % y0 :标注的内容,可以通过字符串 %s 将 y0 的值传入字符串
  •   xycoords=‘data‘ :基于数据的值来选位置
  •   xytext=(+30, -30) 和 textcoords=‘offset points‘ :对于标注位置的描述 和 xy 偏差 \值,即标注位置是   xy 位置向右移动 30,向下移动30;
  •   arrowprops :对图中箭头类型和箭头弧度的设置,需要用 dict 形式传入。

使用子图 

  有时候我们需要将多张子图展示在一起,可以使用 subplot() 实现。即在调用 plot() 函数之前需要先调用 subplot() 函数。该函数的第一个参数代表子图的总行数,第二个参数代表子图的 总列数,第三个参数代表活跃区域

ax1 = plt.subplot(2, 2, 1) # (行,列,活跃区) 
plt.plot(x, np.sin(x), r)
ax2 = plt.subplot(2, 2, 2, sharey=ax1) # 与 ax1 共享y轴 
plt.plot(x, 2 * np.sin(x), g)
ax3 = plt.subplot(2, 2, 3) 
plt.plot(x, np.cos(x), b)
ax4 = plt.subplot(2, 2, 4, sharey=ax3) # 与 ax3 共享y轴 
plt.plot(x, 2 * np.cos(x), y)
plt.show()

技术分享图片

  可以看到,上面的每个子图的大小都是一样的。有时候我们需要不同大小的子图。比如将上面第一 张子图完全放置在第一行,其他的子图都放在第二行。

ax1 = plt.subplot(2,1,1)
plt.plot(x,np.sin(x),r)
ax2 = plt.subplot(2,3,4)
plt.plot(x,2*np.sin(x),g)
ax3 = plt.subplot(2,3,5,sharey=ax2)
plt.plot(x,np.cos(x),b)
ax4 = plt.subplot(2,3,6,sharey=ax2)
plt.plot(x,2*np.cos(x),y)

技术分享图片

 

 

  简单解释下, plt.subplot(2, 1, 1) 将图像窗口分为了 2 行 1 列, 当前活跃区为 1。
  使用 plt.subplot(2, 3, 4) 将整个图像窗口分为 2 行 3 列, 当前活跃区为 4。
  解释下为什么活跃区为 4,因为上一步中使用 plt.subplot(2, 1, 1) 将整个图像窗口分为 2 行 1 列, 第1个小图占用了第1个位置, 也就是整个第1行. 这一步中使用 plt.subplot(2, 3, 4) 将整个图 像窗口分为 2 行 3 列, 于是整个图像窗口的第1行就变成了3列, 也就是成了3个位置, 于是第2行的 第1个位置是整个图像窗口的第4个位置。

练习

画如下图形

  sin(x*i)    i = 0,...,4

  cos(x*i)     i = 0,...,4

  exp(x*i)/3  i = 0,...,4

import matplotlib.pylab as plt
import numpy as np
plt.figure(figsize=(6,9))
x = np.linspace(0, 3, 100)
for i in range(5):
    plt.subplot(3,1,1)
    plt.plot(x,np.sin(x * i))
    plt.subplot(3,1,2)
    plt.plot(x,np.cos(x * i))
    plt.subplot(3,1,3)
    plt.plot(x,np.exp(x * i / 3))

技术分享图片

 

 

Matplotlib 设置

原文:https://www.cnblogs.com/zry-yt/p/11823377.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!