Matplotlib-综合演练

绘制正余弦图像


1. 快速创建三角函数

import matplotlib.pyplot as plt
import numpy as np
from numpy import pi #导入numpy中的pi常量
#用来正常显示中文标签 
plt.rcParams['font.sans-serif']=['SimHei'] 
#用来正常显示负号 
plt.rcParams['axes.unicode_minus']=False

'''
np.linspace(start,end,points,endpoint)
start     int/float   取值的开始位置
end       int/float   取值的结束位置
points    int         取点的个数
endpoint  bool        是否取到最后一个点   
'''


#在-pi 到 pi 之间等距取256个点
x = np.linspace(-np.pi,np.pi,256,endpoint=True)#endpoint参数设置最后一个数是否包含

c = np.cos(x)#产生余弦函数
s = np.sin(x)#产生正弦函数

2. 绘制函数图像并修改线宽及颜色

#绘制正弦及余弦函数
'''
`b-`是`color="blue",linestyle="-"`的简写形式
`lw`=`linewidth`
'''
plt.plot(x,s,'b-',label='正弦',lw=2.5)
plt.plot(x,c,'r-',label='余弦',lw=2.5)

3. 调整坐标轴

#缩放坐标轴的长度
plt.xlim(x.min()*1.5, x.max()*1.5) 
plt.ylim(c.min()*1.5, c.max()*1.5)

#设置x,y轴刻度
plt.xticks([-pi, -pi/2, 0, pi/2, pi],[r'$-\pi$',r'$-\pi/2$',r'$0$',r'$\pi/2$',r'$+\pi$']) 
plt.yticks([-1,0,1])
#获取当前绘图对象的Axes坐标系统
ax = plt.gca()
#获取当前绘图区域的边界并设置颜色
ax.spines['right'].set_color('none') #先把右边和上边 的边界设置为不可见 
ax.spines['top'].set_color('none')
#设置x轴及y轴刻度的位置(将坐标轴置于原点处)
ax.xaxis.set_ticks_position('bottom') 
ax.spines['bottom'].set_position(('data',0))#移动x轴时,坐标是相对于y轴
ax.yaxis.set_ticks_position('left') 
ax.spines['left'].set_position(('data',0))#移动y轴时,坐标是相对于x轴
plt.legend(loc='upper left')

4. 特殊点注释


t = 2*pi/3
plt.plot([t,t],[0,np.cos(t)], color ='blue', linewidth=2.5, linestyle="--")
plt.scatter([t,],[np.cos(t),], 50, color ='blue')

plt.annotate(r'$\sin(\frac{2\pi}{3})=\frac{\sqrt{3}}{2}$',
         xy=(t, np.sin(t)), xycoords='data',
         xytext=(+10, +30), textcoords='offset points', fontsize=16,
         arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))

plt.plot([t,t],[0,np.sin(t)], color ='red', linewidth=2.5, linestyle="--")
plt.scatter([t,],[np.sin(t),], 50, color ='red')

plt.annotate(r'$\cos(\frac{2\pi}{3})=-\frac{1}{2}$',
         xy=(t, np.cos(t)), xycoords='data',
         xytext=(-90, -50), textcoords='offset points', fontsize=16,
         arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))

#细节的修改(增大坐标轴上刻度的字体大小)
for label in ax.get_xticklabels() + ax.get_yticklabels():
    label.set_fontsize(16)
    label.set_bbox(dict(facecolor='white', edgecolor='None', alpha=0.65 ))

plt.show()

完成图

这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_27171347/article/details/81292445