本节以函数
y
=
x
2
y=x^2
y=x2以及
y
=
s
i
n
(
x
)
y=sin(x)
y=sin(x)为例,较为全面的讲解如何用matplotlib绘制函数图像
1. y = x 2 y=x^2 y=x2
导入库:
import matplotlib.pyplot as plt
import numpy as np
写标题:
plt.title(r'$y = x^2$')#绘图时所有公式为Latex格式
绘制x、y轴:
#显示中文:
plt.rcParams['font.sans-serif'] = [u'SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.xlabel('x轴名称')#x轴名称
plt.ylabel('y轴名称')
plt.xlim(xmin=-10,xmax=10)#x轴范围
plt.ylim(ymin=-1,ymax=100)
plt.locator_params('x',nbins=10)#x轴刻度数
plt.locator_params('y',nbins=10)
写出x,y关系式,作图:
x = np.arange(-10,10,0.01)
y = x**2
plt.plot(x,y,c='blue',ls='--')
plot函数中c为线条颜色,可选颜色见下图:
ls为线段类型,可选类型见下图:
若需某处添加文字:
plt.text(2,50,'此处添加文字')
前两个参数为文字位置坐标,最后一个参数为文字内容
最终,显示网格,将图像可视化:
plt.grid()
plt.show()
完整代码如下:
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = [u'SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.title(r'$y = x^2$')#绘图时所有公式为Latex格式
plt.xlabel('x轴名称')#x轴名称
plt.ylabel('y轴名称')
plt.xlim(xmin=-10,xmax=10)#x轴范围
plt.ylim(ymin=0,ymax=100)
plt.locator_params('x',nbins=10)#x轴刻度数
plt.locator_params('y',nbins=10)
x = np.arange(-10,10,0.01)
y = x**2
plt.plot(x,y,c='blue',ls='--')
plt.text(2,50,'此处添加文字')
plt.grid()
plt.show()
图像如下:
2. y = s i n ( x ) y=sin(x) y=sin(x)
在作
y
=
x
2
y = x^2
y=x2图像的讲解中,我们学习了一些基本操作,本节中主要是学习添加注释以及坐标轴的其他操作。
代码如下:
from matplotlib import pyplot as plt
import numpy as np
fig=plt.figure(figsize=(8,4))#生成画布
ax=fig.add_subplot(111)#取子图
x=np.arange(-2*np.pi,2*np.pi,0.01)#设定x
y=np.sin(x)#y=sin(x)
ax.plot(x,y,color='red',label='y=sin(x)')#红色曲线,图例
ax.legend(loc='upper left')#图例位置
#移动坐标轴,使原点位于中心:
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.spines['left'].set_position(('data',0))
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data',0))
ax.xaxis.set_ticks_position('bottom')
#设置x轴单位,标注:
ax.set_xticks([-2*np.pi,-3*np.pi/2,-np.pi,
-np.pi/2,0,np.pi/2,np.pi,3*np.pi/2,2*np.pi])
ax.set_xticklabels([r'$-2\pi$',r'$-\frac{3\pi}{2}$',r'$-\pi$',
r'$\frac{\pi}{2}$','0',r'$\frac{\pi}{2}$',r'$\pi$',
r'$\frac{3\pi}{2}$',r'$2\pi$'])
#特殊点标注:
t = 2*np.pi/3
ax.scatter([t],[np.sin(t)],color='blue')
ax.plot([t,t],[0,np.sin(t)],linestyle='--')
ax.annotate("($2\pi/3$,$\sqrt{3}/2$)",
xy=(t,np.sin(t)),
xycoords='data',
xytext=(+10,+30),
textcoords='offset points',
fontsize=16,
arrowprops=dict(arrowstyle='->'))
plt.title('y=sin(x) graph')#标题
plt.grid()#显示网格
plt.show()#可视化
各个操作可以参考注释,图像如下: