可视化库----Matplotlib进阶篇

1.1创建三角函数及重构

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-np.pi,np.pi,256,endpoint=True)
C = np.cos(x)
S = np.sin(x)
plt.plot(x,C)
plt.plot(x,S)
plt.show()

1.2 重构1 线条

#线宽加颜色的修改
##### 'b-':表示color='blue',linestyle="-"
plt.plot(x,C,"b-",lw=2.5)  #lw是线宽
plt.plot(x,S,"r-",lw=2.5)
plt.show()

1.3 坐标轴重构

plt.xlim(x.min()*1.5,x.max()*1.5)
plt.ylim(C.min()*1.5,C.max()*1.5)

1.4 坐标刻度重构

plt.xticks([-np.pi,np.pi/2,0,np.pi/2,np.pi])
plt.yticks([-1,0,1])

1.5 坐标刻度重构2

###使得刻度变成真正的π
plt.xticks([-np.pi,np.pi/2,0,np.pi/2,np.pi],
           [r'$-\pi$',r'$-\pi/2$'r'$\pi/2$'r'$\pi$'])
plt.yticks([-1,0,1])

这里写图片描述

1.6坐标轴放到中间

ax = plt.gca()                          #通过plt.gca()获取当前的Axes对象 ax
ax.spines['right'].set_color('none')    #先把右边和上边的边界设置为不可见
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')   #下边界移动到0点
ax.spines['bottom'].set_position(('data',0))
ax.yaxis.set_ticks_position('left')     #左边界移动到0点
ax.spines['left'].set_position(('data',0))

1.7图例区分正余弦

#########加图例
plt.polt(x,C,"b-",lw=2.5,label='cosine')
plt.polt(x,S,"r-",lw=2.5,label='sine')
plt.legend(loc="upper left")

1.8特殊点的注释

##########特殊点的注释
t = 2*np.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'$\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"))
plt.plot([t,t],[0,np.sin(t)],color='red',linewidth=2.5,linestyle='--')#需要标注的线
plt.scatter([t,],[np.sin(t,)],50,color='blue')#需要标注的点
plt.annotate(r'$\cos(\frac{2\pi}{3})=-\frac{1}{2}$',
             xy=(t,np.sin(t)),xycoords='data',
             xytext=(-90,-50),textcoords='offset points',fontsize=16,
             arrowprops=dict(arrowstyle="=>",connectionstyle="arc3,rad=.2"))

1.9完整代码

import matplotlib.pyplot as plt
import numpy as np
plt.rcParams["font.sans-serif"]=['SimHei']  # 用于正常显示中文标签
plt.rcParams['axes.unicode_minus']=False  # 用来正常显示负号
#从pi导入256个点
x = np.linspace(-np.pi,np.pi,256,endpoint=True)
#根据x的值,求正弦和余弦函数
sin,cos = np.sin(x),np.cos(x)  #y值

plt.plot(x,sin,"g-",lw=2.5,label="正弦")
plt.plot(x,cos,"y-",lw=2.5,label="正弦")
#将x和Y轴放大1.5倍
plt.xlim(x.min()*1.5,x.max()*1.5)
plt.ylim(sin.min()*1.5,cos.max()*1.5)

#指定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$"])#替换x中的数字为数学符号
plt.yticks([-1,0,1])

#获取AXES对象
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")   #获取y轴左边界
ax.spines["bottom"].set_position(("data",0))
ax.spines["left"].set_position(("data",0))

# plt.xticks([])
plt.legend() #显示图例



#标注
t=2*np.pi/3
# 以下代码是:画出需要标注的蓝色的线,cos余弦
plt.plot([t,t],[0,np.cos(t)],  #前者是两点的x轴,后者是两者的Y值
         color ='blue',
         linewidth=2.5,
         linestyle="--")
#描点,先标注

plt.scatter([t,],[np.cos(t),], 20, color ='blue')#值,点的大小,颜色
#写注释
plt.annotate(r'$\cos(\frac{2\pi}{3})=-\frac{1}{2}$',
            xy=(t, np.cos(t)),#需要标注的位置
             xycoords='data',#文字的偏移量
             xytext=(-50, -50),#注释的文字的位置,是相对于备注点的位置
             textcoords='offset points',
             fontsize=10, #注释的大小
            arrowprops=dict(arrowstyle="->",connectionstyle="arc3,rad=.2"))#箭头指向的弯曲度


t=2*np.pi/3
# 以下代码是:画出需要标注的蓝色的线,sin正弦
plt.plot([t,t],[0,np.sin(t)],  #前者是两点的x轴,后者是两者的Y值
         color ='red',
         linewidth=2.5,
         linestyle="--")
plt.scatter([t,],[np.sin(t),], 20, color ='red')
#同上
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=10, #注释的大小
            arrowprops=dict(arrowstyle="->",connectionstyle="arc3,rad=.2"))#箭头指向的弯曲度

#获取x,y轴的刻度,并设置字体
for label in ax.get_xticklabels() + ax.get_yticklabels():
    label.set_fontsize(12)  #字体大小
    label.set_bbox(dict(facecolor='w',edgecolor='b',alpha=0.5))  #为刻度设置边框格式
# facecolor背景填充颜色,edgecolor边框颜色,alpha透明度
plt.show()

                                                                                                  这里写图片描述

猜你喜欢

转载自blog.csdn.net/sakura55/article/details/80748510