import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif']=['SimHei'] # 用于正常显示中文标签
plt.rcParams['axes.unicode_minus']=False # 用来正常显示负号
1.从-pi到pi平均取256个点
#获取x坐标
X=np.linspace(-np.pi,np.pi,256,endpoint=True)
2.根据X的值,求正弦和余弦函数
#获取y坐标
sin,cos=np.sin(X),np.cos(X)
1.画正弦,余弦函数图
plt.plot(X,sin,"b-",lw=2.5,label="正弦")
plt.plot(X,cos,"r-",lw=2.5,label="余弦")
'''
X: x轴
sin: y轴
cos: y轴
b-: color="blue",linestyle="-"的简写
lw: linewidth
'''
plt.xlim(X.min()*1.5,X.max()*1.5)
plt.ylim(cos.min()*1.5,cos.max()*1.5)
plt.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi],[r'$-\pi$',r'$-\pi/2$',r'$0$',r'$\pi/2$',r'$\pi$'])
plt.yticks([-1,0,1])
ax=plt.gca()
5.隐藏右边界和上边界
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))
1.设定x轴值并找出点坐标位置,根据两点绘制一条直线
t=2*np.pi/3 #设定点x轴值
#第一个列表是x轴坐标值,第二个列表是y轴坐标值
plt.plot([t,t],[0,np.sin(t)],color ='b',linewidth=2.5,linestyle="--")
#这两个点坐标分别为(t,0)和(t,np.sin(t)),根据两点画直线l1
plt.plot([t,t],[0,np.cos(t)],color ='r',linewidth=2.5,linestyle="--")
#这两个点坐标分别为(t,0)和(t,np.cos(t)),根据两点画直线l2
plt.scatter([t,],[np.sin(t),], 50, color ='b')
plt.scatter([t,],[np.cos(t),], 50, color ='r')
plt.annotate(r'$\sin(\frac{2\pi}{3})=-\frac{1}{2}$',
xy=(t, np.sin(t)), #点的位置
xycoords='data', #注释文字的偏移量
xytext=(50,50), #文字离点的横纵距离
textcoords='offset points',
fontsize=13, #注释的大小
arrowprops=dict(arrowstyle="->",connectionstyle="arc3,rad=.2")) #箭头指向的弯曲度
plt.annotate(r'$\cos(\frac{2\pi}{3})=\frac{\sqrt{3}}{2}$',
xy=(t, np.cos(t)),
xycoords='data',
xytext=(-50,-50),
textcoords='offset points',
fontsize=13,
arrowprops=dict(arrowstyle="->",connectionstyle="arc3,rad=.2"))
for label in ax.get_xticklabels()+ax.get_yticklabels(): #获取刻度
label.set_fontsize(18) #设置刻度字体大小
label.set_bbox(dict(facecolor='r',edgecolor='g',alpha=0.2)) #set_bbox为刻度添加边框
#facecolor:背景填充颜色
#edgecolor:边框颜色
#alpha:透明度
plt.legend(loc='upper left')
第4步添加边框时,一般用以下这个代码,此步骤主要是为了使坐标轴刻度更清晰
label.set_bbox(dict(facecolor='w',edgecolor='None',alpha=0.5))
•利用np.linspace(-np.pi,np.pi,256,endpoint=True)
可以快速生产数据
• 通过plt.gca()获得当前的Axes对象ax
• 通过plt.xlim()方法来实现图表的留白
• 通过plt.xticks()、plt.yticks() 来设置坐标轴刻度
• 通过plt.annotate() 方法来为图表添加注释
• for label in ax.get_xticklabels() + ax.get_yticklabels():
方式来遍历图表中的label对象