matplotlib快速入门(1)(annotate重点)

CSDN博客:皮乾东
知乎:Htrying
微博:Htring的微博
微信公众号:自然语言处理爱好者(ID:NLP_lover)

引言

总所周知,matlab绘图强大的绘图能力,但是对于强大的python来说,绘制出好看的数学图形也不是一件难事,在使用python做数据分析的时候,绘图也是展现分析结果的重要的一部分。这里就绘制一个具体的图形做介绍。

环境

环境准备:win10 ,python3.6
依赖包:pip install numpypip 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()

效果:

这里写图片描述
这里写图片描述

猜你喜欢

转载自blog.csdn.net/meiqi0538/article/details/81266235