文章目录
参考:
莫凡Python
引入matlibplot库
import matplotlib.pyplot as plt
import numpy as np
plt.figure()
figure(num=None, figsize=None)
- num:编号或名字
- figsize:图片大小(单位英寸)
创建数据
x = np.linspace(-3, 3, 500)
y1 = x ** 2 + 2 + x
y2 = 4 * x + 1
plt.plot()
l1, = plt.plot(x, y1, color='r',
linewidth=1.0,
linestyle='--',
label='down')
l2, = plt.plot(x, y2,label='up')
前面加不加都可以,加上是个默认参数留在图例的时候用
参数介绍:
- x,y:两个等长的序列表示坐标然后连起来
- color:颜色
- linewideh:线宽
- linestyle:线型
- label:默认图例
坐标轴限制limit
plt.xlim((-1, 3))
plt.ylim((-2, 15))
限制左右上下范围
坐标轴名字label
plt.xlabel('i am x')
plt.ylabel('i am y')
坐标轴名字自由选择ticks
这是我认为比matlab更好用的一个地方:
plt.xticks(np.linspace(-1, 3, 5))
plt.yticks([-1, 2, 4, 8, 11], ['E', 'D', 'C', 'B', 'A'])
两种主要的方法
- 直接自由分割几个点做标注
- 用两个等长的list作等位置的替换
边框plt.gca()&&选择(0,0)为坐标轴原点
gca : get current axis
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data',0))
ax.spines['left'].set_position(('data',0))
设置右边和上面边框格式为空
定位左边和下面边框为选定的边框
设置左边和下边的坐标轴为(0,0),选定数据为‘data’
plt.legend()图例
简单写法为:
plt.legend(labels=[],loc='best')
理解为上面画图参数为构造函数的默认参数,这个是构造函数,传入的参数可覆盖过去的图例信息
位置信息为loc,一般选用best
plt.legend(handles=[l1, l2,], labels=['n', 'm'], loc='best')
第一个参数为选择性显示
确定点到下方x轴的垂直线
x0 = 1
y0 = 4 * x0 + 1
plt.scatter(x0, y0, s=50, color='g')
plt.plot([x0, x0], [0, y0], 'k--', lw=2)
确认xy点之后画出点,之后画直线,[x0, x0], [0, y0],相当于是作轴的垂直线,lw是线宽的简写
某点标注plt.annotate()
plt.annotate('2x+1=%s' % y0, xy=(x0, y0),
xycoords='data',
xytext=(30,-30),
textcoords='offset points',
fontsize=16,
arrowprops=dict(arrowstyle='->',
connectionstyle="arc3,rad=.2"))
参数先输入要填写的东西,之后xy是坐标,xycoords是说基于数据的值来选位置
xytext表示显示的点的偏移值(肯定不能选择在图像上面写东西除非确实要这样做)
最后是对箭头的表述
text文本添加plt.text()
plt.text(-1, 3, r'$it\ is\ annotation\ !$',
# fontproperties = 'SimHei',
fontdict={'size': 16, 'color': 'r'})
前面两个是坐标位置,最后fondict是表示字体说明
最终代码
import matplotlib.pyplot as plt
import numpy as np
plt.figure(num=1,figsize=(8,5),)
x = np.linspace(-3, 3, 500)
y1 = x ** 2 + 2 + x
y2 = 4 * x + 1
l1, = plt.plot(x, y1, color='r',
linewidth=1.0,
linestyle='--',
label='down')
l2, = plt.plot(x, y2,label='up')
plt.xlim((-1, 3))
plt.ylim((-2, 15))
plt.xlabel('i am x')
plt.ylabel('i am y')
plt.xticks(np.linspace(-1, 3, 5))
plt.yticks([-1, 2, 4, 8, 11], ['E', 'D', 'C', 'B', 'A'])
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data',0))
ax.spines['left'].set_position(('data',0))
plt.legend(handles=[l1, l2,], labels=['n', 'm'], loc='best')
x0 = 1
y0 = 4 * x0 + 1
plt.scatter(x0, y0, s=50, color='g')
plt.plot([x0, x0], [0, y0], 'k--', lw=2)
plt.annotate('2x+1=%s' % y0, xy=(x0, y0),
xycoords='data',
xytext=(30,-30),
textcoords='offset points',
fontsize=16,
arrowprops=dict(arrowstyle='->',
connectionstyle="arc3,rad=.2"))
plt.text(-1, 3, r'$it\ is\ annotation\ !$',
# fontproperties = 'SimHei',
fontdict={'size': 16, 'color': 'r'})
效果图
版权声明:本文为qq_43409560原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。