Py-plt:Plot如何控制坐标轴,图例和注释画出精美的图

Python - Matplotlib

Matplotlib 是一个用于在 Python 中绘制数组的图形库
下面代码可以直接在python环境下运行

目录

例子1:控制图的X坐标和Y坐标的取值范围

  • 方法1:plt.axis([xmin,xmax,ymin,ymax])
  • 方法2:plt.xlim(xmin, xmax), plt.ylim(ymin, ymax)

例子2:控制图x,y坐标的刻度

  • plt.xticks(), plt.yticks()

例子3:控制图的图例

  • plt.plot(x, y, label)
  • plt.legend(), 它的labels参数控制labels, loc 参数控制图例位置

例子4:控制图的注释

  • plt.annotate(text, xy, xytext, arrowprops)

正文

例子1:控制图的X坐标和Y坐标

import random
import numpy as np
#随机产生20个1-50/30/20之间的整数(不包含50,30,20)
y1 = np.random.randint(1,50,20)
y2 = np.random.randint(1,30,20)
y3 = np.random.randint(1,15,20)

x = np.arange(20)
#plot 结果是下面图1
import matplotlib.pyplot as plt

#在一个图里面展示三条线
plt.plot(x, y1, '--')
plt.plot(x, y2, '--')
plt.plot(x, y3, '--')

#控制图的x,y坐标轴的取值范围
plt.axis([-1,20,0,80])
plt.show()
#测试plt.xlim 和 plt.ylim, 结果如图2
import matplotlib.pyplot as plt

#在一个图里面展示三条线
plt.plot(x, y1, '--')
plt.plot(x, y2, '--')
plt.plot(x, y3, '--')

#控制图的x,y坐标轴的取值范围
plt.xlim(-1,30)
plt.ylim(0,70)
plt.show()

上面代码生成的图:
结果截图结果截图
例子2:控制图x,y坐标的刻度

  • 使用上面的代码中的x, y1, y2, y3值
  • plt.xticks(), plt.yticks()
#测试plt.xlim 和 plt.ylim
import matplotlib.pyplot as plt

#在一个图里面展示三条线
plt.plot(x, y1, '--')
plt.plot(x, y2, '--')
plt.plot(x, y3, '--')

#控制图的x,y坐标轴的数值
y_axis = np.arange(0,50,5)
plt.xticks(x)
plt.yticks(y_axis)
plt.show()

结果:
这时候x轴的坐标变成了0-19间距为1, y轴变成了0-50间距为5
在这里插入图片描述
例子3:控制图的图例

  • plt.legend(), 控制label的显示,注释掉,则label内容不显示。
#测试labels 和 plt.legend()
import matplotlib.pyplot as plt

#在一个图里面展示三条线
plt.plot(x, y1, '--', label='Y1: Mean=%.2f'%np.mean(y1))
plt.plot(x, y2, '--', label='Y2: Mean=%.2f'%np.mean(y2))
plt.plot(x, y3, '--', label='Y2: Mean=%.2f'%np.mean(y2))

#控制图的x,y坐标轴的数值
y_axis = np.arange(0,50,5)
plt.xticks(x)
plt.yticks(y_axis)

#控制图的显示
plt.legend()
plt.show()
  • 另一种控制label展示的方式, plt.legend()。
  • plt.legend(loc=“lower left”), 它包含loc 函数,可以控制图例的位置。
  • 官方文档
#测试label在plt.legend()的另一种显示方式
import matplotlib.pyplot as plt

#在一个图里面展示三条线
plt.plot(x, y1, '--')
plt.plot(x, y2, '--')
plt.plot(x, y3, '--')

#控制图的x,y坐标轴的数值
y_axis = np.arange(0,50,5)
plt.xticks(x)
plt.yticks(y_axis)

#控制图的显示, 把图例显示在做下角
plt.legend(labels=('Y1: Mean=%.2f'%np.mean(y1),'Y2: Mean=%.2f'%np.mean(y2),'Y2: Mean=%.2f'%np.mean(y2)), loc='lower left')
plt.show()

结果
例子3第一段代码结果
例子3第二段代码结果
例子4:控制图的注释

  • 官方文档
  • plt.annotate(text, xy, xytext), 不附加xytext,注释显示在点附近
  • 参数:
    • text:注释的内容
    • xy:要注释的点
    • xytext: 注释文本显示的位置
#测试plt.annotate
import matplotlib.pyplot as plt

#在一个图里面展示三条线
plt.plot(x, y1, '--', label='Y1: Mean=%.2f'%np.mean(y1))
plt.plot(x, y2, '--', label='Y2: Mean=%.2f'%np.mean(y2))
plt.plot(x, y3, '--', label='Y2: Mean=%.2f'%np.mean(y2))

#控制图的x,y坐标轴的数值
y_axis = np.arange(0,50,5)
plt.xticks(x)
plt.yticks(y_axis)

#控制图的注释
plt.annotate('The Max value is %d'%max(y1), #控制注释的内容
             xy=(y1.index(max(y1)),max(y1)) #要注释的点,y1.index(max(y1)):y1中最大值的索引, max(y1):y1中的最大值
             )

#控制图的显示
plt.legend(loc='upper left')
plt.show()
  • plt.annotate(text, xy, xytext, arrowprops)
  • 参数arrowpros:
    • facecolor:箭头颜色
    • width:箭头宽度
    • headwidth: 箭头的头宽度
#测试plt.xlim 和 plt.ylim
import matplotlib.pyplot as plt

#在一个图里面展示三条线
plt.plot(x, y1, '--', label='Y1: Mean=%.2f'%np.mean(y1))
plt.plot(x, y2, '--', label='Y2: Mean=%.2f'%np.mean(y2))
plt.plot(x, y3, '--', label='Y2: Mean=%.2f'%np.mean(y2))

#控制图的x,y坐标轴的数值
y_axis = np.arange(0,50,5)
plt.xticks(x)
plt.yticks(y_axis)

#控制图的注释
plt.annotate('The Max value is %d'%max(y1), #控制注释的内容
             xy=(y1.index(max(y1)),max(y1)), #要注释的点,y1.index(max(y1)):y1中最大值的索引, max(y1):y1中的最大值
             xytext = (16,45), #注释显示的位置
             arrowprops=dict(facecolor='black', width=0.5, headwidth=5) #控制箭头的颜色,宽度,箭头宽度
             #arrowprops=dict(arrowstyle=''<->'') #尝试这个
             )

#控制图的显示
plt.legend(loc='upper left')
plt.show()

结果
代码1结果
代码2结果

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值