matplotlib—画正弦、余弦函数图

一.导入模块

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
'''

matplotlib—画正弦、余弦函数图_第1张图片
2.将x,y轴同时拉伸1.5倍

plt.xlim(X.min()*1.5,X.max()*1.5)
plt.ylim(cos.min()*1.5,cos.max()*1.5)

matplotlib—画正弦、余弦函数图_第2张图片
3.设置x,y轴的坐标刻度

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])

matplotlib—画正弦、余弦函数图_第3张图片
4.获取Axes对象

ax=plt.gca()

5.隐藏右边界和上边界

ax.spines['right'].set_color('none') 
ax.spines['top'].set_color('none')

matplotlib—画正弦、余弦函数图_第4张图片
6.将x,y坐标轴刻度显示到下方位置

ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))

matplotlib—画正弦、余弦函数图_第5张图片
7.平移坐标轴

ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))

matplotlib—画正弦、余弦函数图_第6张图片

四.为函数图添加特殊点

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

matplotlib—画正弦、余弦函数图_第7张图片
2.用绘制散点图的方法在正弦,余弦函数上标注这两个点的位置

plt.scatter([t,],[np.sin(t),], 50, color ='b')
plt.scatter([t,],[np.cos(t),], 50, color ='r')

matplotlib—画正弦、余弦函数图_第8张图片
3.为图表添加注释

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"))

matplotlib—画正弦、余弦函数图_第9张图片
4.获取x,y轴的刻度,并设置字体

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:透明度

matplotlib—画正弦、余弦函数图_第10张图片
5.显示图例

plt.legend(loc='upper left')

matplotlib—画正弦、余弦函数图_第11张图片

第4步添加边框时,一般用以下这个代码,此步骤主要是为了使坐标轴刻度更清晰

label.set_bbox(dict(facecolor='w',edgecolor='None',alpha=0.5))

matplotlib—画正弦、余弦函数图_第12张图片

五.重要参数知识

plt

•利用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对象

你可能感兴趣的:(matplotlib—画正弦、余弦函数图)