CSDN博客:皮乾东
知乎:Htrying
微博:Htring的微博
微信公众号:自然语言处理爱好者(ID:NLP_lover)
引言
总所周知,matlab绘图强大的绘图能力,但是对于强大的python来说,绘制出好看的数学图形也不是一件难事,在使用python做数据分析的时候,绘图也是展现分析结果的重要的一部分。这里就绘制一个具体的图形做介绍。
环境
环境准备:win10 ,python3.6
依赖包:pip install numpy
、pip install matplotlib
程序
以下以案例的形式进行介绍:
import numpy as np
#引入matplotlib
import matplotlib.pyplot as plt
def main():
#定义横轴,创建从-pi到pi,256个点,并且最后一点点包含入内
x=np.linspace(-np.pi,np.pi,256,endpoint=True)
#定义正弦和余弦函数
co,si=np.cos(x),np.sin(x)
#绘制第一个图
plt.figure(1)
#绘图,自变量,因变量,并设置颜色,宽度,风格,标签,透明度
plt.plot(x,co,color="blue",linewidth=1.0,linestyle="-",label="COS",alpha=0.5)
#另一种方式,红色,*行,
plt.plot(x,si,"r*",label="SIN")
#添加标题
plt.title("cos&sin")
#创建一个坐标轴的编辑器
ax=plt.gca()
#隐藏坐标轴右边和上边的线
ax.spines['right'].set_color("none")
ax.spines['top'].set_color("none")
#将左边的,下边的轴线移到中间(数据域)
ax.spines['left'].set_position(("data",0))
ax.spines['bottom'].set_position(("data",0))
#把坐标轴的数据放到下边,左边
ax.xaxis.set_ticks_position("bottom")
ax.yaxis.set_ticks_position("left")
#设置横轴显示的点
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(np.linspace(-1,1,5,endpoint=True))
#设置显示的点的格式
for label in ax.get_xticklabels()+ax.get_yticklabels():
#设置字体大小
label.set_fontsize(10)
#设置label的小方块,前景色为白色,边缘色无,透明度为0.2
label.set_bbox(dict(facecolor="white",edgecolor="None",alpha=0.2))
# 添加图例 在上方,偏左
plt.legend(loc="upper left")
# 添加网格线
plt.grid()
#设置显示范围,横轴/竖轴,最小/大
#plt.axis([-1,1,-0.5,1])
#横轴在-0.5-0.5,纵轴在大于0.5处开始填充
plt.fill_between(x,np.abs(x)<0.5,co,co>0.5,color="red",alpha=0.2)
#在t=1处添加注释
t=1
plt.plot([t,t],[0,np.cos(t)],'y',linewidth=3,linestyle="--")
#添加注释 参数分别释义:cos(1)就是要显示的注释;
#xy为注释显示的地方(指向的目标,箭头尖端);xycoords="data":表示使用的是原始坐标
#xytext:文本的位置坐标(offset points:偏移点)(坐标偏移)textcoords:设置其坐标规范
#arrowprops:设置箭头属性,参数类型为字典;arrowstyle:箭头风格;connectionstyle:连接风格
plt.annotate("cos(1)",xy=(t,np.cos(1)),xycoords="data",xytext=(+10,+30),textcoords="offset points",arrowprops=dict(arrowstyle="->",connectionstyle="arc3,rad=.2"))
#显示
plt.show()
if __name__ == '__main__':
main()
效果: