当前位置:   article > 正文

matplotlib入门之plt.plot折线图跟常用基本函数_plt折线图

plt折线图

目录

一、简单折线图

二、常用基本函数:plt.xticks,plt.yticks,ply.xlim,plt.ylim,plt.xlabel,plt.ylabel,plt.title,plt.legend等

三、折线图函数plt.plot()的参数介绍及详解

四、调整坐标轴:plt.spines[]

五、文本标注:plt.text()

六、文本箭头注释:plt.annotate()

七、绘图的填充:plt.fill_between()

八、归纳练习

九、面对对象画图

一、简单折线图

1、调用包:

  1. import numpy as np
  2. import matplotlib.pyplot as plt

2、正常显示中文及负号:(经常用到,否则无法显示中文及负号,经常用到,建议记住代码)

  1. plt.rcParams['font.family'] = 'SimHei' # 正常显示中文
  2. plt.rcParams['axes.unicode_minus'] = False # 正常显示负号

3、简单折线图:以横轴坐标值为x,纵轴坐标值为sin(x),颜色为红色画线

  1. x = np.linspace(0, 10, 30) # x轴坐标值
  2. plt.plot(x, np.sin(x),c = 'r') # 参数c为color简写,表示颜色,r为red即红色
  3. plt.show() # 显示图像

4、常用颜色简写为:

 高级配色参考网站:https://xkcd.com/color/rgb/

 网站界面如下:

 把#开头的复制到参数c中即可,如下:

二、常用基本函数:plt.xticks,plt.yticks,plt.xlim,plt.ylim,plt.xlabel,plt.ylabel,plt.title,plt.legend等

1、plt.xticks()、plt.yticks()分别表示横纵轴的刻度:

    labels参数调整刻度为自己想要的字符或文字:

 2、plt.xlim(),plt.ylim()分别表示横纵轴的刻度范围:

 3、给图设置标题:plt.title(),plt.xlabel(),plt.ylabel()

 4,显示图例:plt.legend()

    首先要在折线图上注明label参数:

       plt.legend()中loc参数可选值如下(默认为best):

  1. best
  2. upper right
  3. upper left
  4. lower left
  5. lower right
  6. right
  7. center left
  8. center right
  9. lower center
  10. upper center
  11. center

 5、网格线:plt.grid()

6、保存图片:plt.savefig(fname)

三、折线图函数plt.plot()的参数介绍及详解

调用方法:plt.plot(x, y, linestyle, linewidth,color,marker, markersize, markeredgecolor, markerfactcolor, label, alpha)

  • x:指定折线图的x轴数据;
  • y:指定折线图的y轴数据;
  • linestyle:指定折线的类型,可以是实线、虚线、点虚线、点点线等,默认实线;
  • linewidth:指定折线的宽度
  • marker:可以为折线图添加点,该参数是设置点的形状;
  • markersize:设置点的大小;
  • markeredgecolor:设置点的边框色;
  • markerfacecolor:设置点的填充色;
  • label:为折线图添加标签,类似于图例的作用;

 用法:

  1. plt.plot(x,
  2. np.sin(x),
  3. color = 'b', # 线条颜色 blue
  4. linewidth = 1, # 线条宽度
  5. linestyle='-', # 线的类型:虚线:'--',点线:'-.',短虚线':',实线:'-'
  6. marker='o', # 线上点的形状
  7. markersize = 10, # 点的大小
  8. markeredgecolor = 'r', # 点的边框颜色
  9. markerfacecolor ='y', # 点的背景颜色
  10. label = 'sin', # 图例
  11. alpha = 1 ) # 透明度:0-1之间 ,默认1
  12. plt.legend(fontsize = 15) # 显示图例
  13. plt.show()

 

 其中参数color可简写成c,linewidth可简写为lw,linestyle可简写为ls

四、调整坐标轴:plt.spines[]

1、去除上轴线及右边轴线:

  1. x = np.linspace(0, 10, 30)
  2. plt.plot(x, np.sin(x),c = '#0ffef9',label = 'sin(x)')
  3. ax = plt.gca() # 获取当前子图 get current axes
  4. ax.spines['right'].set_color('none') # spines中文脊柱的意思,表示图边框四条脊柱线:top,bottom,left,right
  5. ax.spines['top'].set_color('none') # 使上轴线及右轴线颜色设置为none或‘white’
  6. plt.show()

 2、调整坐标轴为x,y直角坐标轴

  1. x = np.linspace(0, 10, 30)
  2. plt.plot(x, np.sin(x),c = '#0ffef9',label = 'sin(x)')
  3. ax = plt.gca() # 获取当前子图 get current axes
  4. ax.spines['right'].set_color('none') # spines中文脊柱的意思,表示图边框四条脊柱线:top,bottom,left,right
  5. ax.spines['top'].set_color('none') # 使上轴线及右轴线颜色设置为none或‘white’
  6. ax.spines['left'].set_position(('data',0)) # 调整左轴线位置到横坐标0的位置
  7. ax.spines['bottom'].set_position(('data',0)) # 调整下轴线位置到纵坐标0的位置
  8. plt.show()

 

五、文本标注:plt.text()

plt.text(x,y,s)

 x表示x轴坐标值,y表示y轴坐标值 通过x,y来控制标注的位置

  1. x = np.linspace(0, 10, 30)
  2. plt.plot(x, np.sin(x),c = '#0ffef9',label = 'sin(x)')
  3. # plt.text(x,y,s) x表示x轴坐标值,y表示y轴坐标值 通过x,y来控制标注的位置
  4. plt.text(x = 1,y = 0.5,s = '这是标注',fontsize = 15,c = 'b',rotation = 20) # rotation控制文本字体角度
  5. plt.show()

六、文本箭头注释:plt.annotate()

plt.annotate(text,xy,xytext,arrowprops)

text表示注释文本,xy表示箭头端点位置,xytext表示文本注释的位置,arrowprops控制箭头,形式为字典

  1. x = np.linspace(0, 10, 30)
  2. plt.plot(x, np.sin(x),c = '#0ffef9',label = 'sin(x)')
  3. plt.annotate(text = '底点',xy = (4.65,-1),xytext = (4.2,0),
  4. arrowprops = {'headwidth':10,'facecolor':'r'},fontsize = 15)
  5. plt.show()

 注:若未设置arrowprops参数则没有箭头显示,只有文本注释

七、绘图的填充:plt.fill_between()

  1. x = np.linspace(0, 10, 30)
  2. y1 = x*2
  3. y2 = x**2+5
  4. plt.figure(figsize = (8,5))
  5. plt.plot(x,y1,'r',x,y2,'g') #注:可以在一个plot函数内画出多条线
  6. plt.fill_between(x,y1,y2,facecolor = 'k',alpha = 0.2)
  7. plt.show()

# 第一个参数表示要覆盖的左右范围,第二个参数表示覆盖的下限,第三个参数表示覆盖的上限,在这里则表示填充y1曲线和y2曲线中间的区域

八、归纳练习

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. plt.rcParams['font.family'] = 'SimHei' # 正常显示中文
  4. plt.rcParams['axes.unicode_minus'] = False # 正常显示负号
  5. x = np.linspace(-3, 3, 50)
  6. y1 = 2*x + 1
  7. y2 = x**2
  8. # 创建画布并设置大小
  9. plt.figure( figsize=(8, 5))
  10. plt.plot(x, y1, label='linear line',marker = '+')
  11. # zorder控制绘图顺序,值越大画的越慢,防止先画从而被后画的图挡住,如下图防止红线被图例挡住从而不清晰
  12. plt.plot(x, y2, color='red', lw=2.0, ls='--', label='square line',zorder = 10)
  13. plt.xlim(-4,5)
  14. plt.ylim(-5,10)
  15. plt.xticks(rotation = 30,fontsize = 12,c = 'k') # rotation:旋转角度
  16. plt.yticks(rotation = 30,fontsize = 12,c = 'k')
  17. plt.grid(True)
  18. plt.legend(loc='upper right',edgecolor = 'none',facecolor = 'g',fontsize =13)
  19. # 注释
  20. plt.text(-2,-4,'这是直线',fontsize = 15,c = 'b')
  21. plt.annotate('这是曲线',xy = (2,2),xytext = (3,-1),
  22. arrowprops ={'headwidth':10,'facecolor':'g'},fontsize = 15,c = 'r')
  23. # 填充
  24. plt.fill_between(x,y1,y2,facecolor = 'g',alpha = 0.2)
  25. plt.show()

九、面对对象画图:

在面对对象画图前,让我们来看看图像的组成:

Figure:画布,顶层级,用来容纳所有绘图元素

Axes:可以认为是figure这张画图上的子图,因为子图上一般都是坐标图,也可以愿意理解为轴域或者坐标系。

Axis:axes的下属层级,用于处理所有和坐标轴有关的元素

Tick:axis的下属层级,用来处理所有和刻度有关的元素
 

综上可知,画出的图像是在画布figure上显示的,axes可理解成figure上的一个子图,axis可理解成子图axes的坐标轴,tick是坐标轴axis上的刻度

我们来看看面对对象是如何画图的,其实很简单,只需要把plt改为面对自己创建的axes即可

如下:

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. plt.rcParams['font.family'] = 'SimHei' # 正常显示中文
  4. plt.rcParams['axes.unicode_minus'] = False # 正常显示负号
  5. x = np.linspace(-3, 3, 50)
  6. y1 = 2*x + 1
  7. y2 = x**2
  8. # 方法一
  9. fig = plt.figure( figsize=(8, 5)) # 创建画布并设置大小
  10. ax = fig.add_subplot(111) # 111,表示在画布中创建一行,一列,编号为一的子图,即创建一个子图的意思
  11. # 方法二
  12. # fig,ax = plt.subplots(figsize =(8,5))
  13. ax.plot(x, y1, label='linear line',marker = '+')
  14. ax.plot(x, y2, color='red', lw=2.0, ls='--', label='square line',zorder = 10)
  15. ax.set_xlim(-4,5)
  16. ax.set_ylim(-5,10)
  17. plt.xticks(rotation = 30,fontsize = 12,c = 'k') # rotation:旋转角度
  18. plt.yticks(rotation = 30,fontsize = 12,c = 'k')
  19. ax.grid(True)
  20. ax.legend(loc='upper right',edgecolor = 'none',facecolor = 'g',fontsize =13)
  21. # 注释
  22. ax.text(-2,-4,'这是直线',fontsize = 15,c = 'b')
  23. ax.annotate('这是曲线',xy = (2,2),xytext = (3,-1),
  24. arrowprops ={'headwidth':10,'facecolor':'g'},fontsize = 15,c = 'r')
  25. # 填充
  26. ax.fill_between(x,y1,y2,facecolor = 'g',alpha = 0.2)
  27. plt.show()

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/480155
推荐阅读
相关标签
  

闽ICP备14008679号