python数据分析007_使用Matplotlib绘折线图

一. 画图中中文显示

  1.如果想要Matplotlib显示中文我们可以使用三种方法:

     第一种:直接修改Matplotlib配置文件matplotlibrc 第二种:动态修改配置 第三种:设置自定义字体
  2.第三种eg:
  • %matplotlib inline
  • from matplotlib import pyplot as plt
  • from matplotlib import font_manager
  • import random
  • # 创建字体对象
  • my_font = font_manager.FontProperties(fname='/data/course_data/data_analysis/STSONG.TTF',size=18)
  • x = range(0,120)
  • y = [random.randint(10,30) for i in range(120)]
  • # 添加字体属性
  • plt.ylabel("次数",fontproperties=my_font)
  • plt.xlabel("时间",fontproperties=my_font)
  • # 设置标题
  • plt.title('每分钟跳动次数',fontproperties=my_font)
  • plt.plot(x,y)
  • plt.show()

二. 自定义X轴刻度

  1.画图时刻度可能显示不全,造成这个问题的原因是:

  • 刻度的文字过长,但是图片的宽度不够。
  • x轴和y轴刻度会默认根据x值和y值生成,并且Matplotlib默认会生成它认为合适的刻度间距。

  2.使用plt.xticks()这个方法自定义x轴的刻度

  • xticks(locs, [labels], **kwargs) 
  • locs参数为数组参数,表示x-axis的刻度线显示标注的地方,即ticks放置的地方,第二个参数也为数组参数,表示在locs数组表示的位置添加的标签。

  3.plt.xticks(range(0,len(x),3),x[::3],rotation=45)       plt.yticks(range(0,max(count),10),range(0,max(count),10))

  • range(0,len(x),3)为xticks()的第一个参数,根据x值的个数调整x轴的刻度疏密程度。
  • x[::3]为xticks()的第二个参数,还是使用x的值作为刻度的标签值,但是这里获取了其中的一部分,确保第一个参数和第二个参数的个数相同。
  • rotation=45默认刻度的值是横向书写的,这样会有一定的重叠,所以我们将文字进行旋转操作,45位旋转的度数。
  4.matplotlib 中设置图形大小
  • plt.figure(figsize=(a, b), dpi=dpi)
  • 其中: - figsize 设置图形的大小,a 为图形的宽, b 为图形的高,单位为英寸 - dpi 为设置图形每英寸的点数,即每英寸多少个像素
 三.一图多线
  1.一个坐标系中绘制两条折线,只需要使用两次plt.plot()方法就可以了。
  • # 绘制开盘价折线
  • plt.plot(x,y)
  • # 绘制收盘价折线
  • plt.plot(x,z)
   2.添加图例
  • my_font = font_manager.FontProperties(fname='/data/course_data/data_analysis/STSONG.TTF')
  • plt.plot(x,y,label='开盘价')
  • plt.plot(x,z,label='收盘价')
  • plt.legend(prop=my_font)
     plt.legend(prop=my_font)是添加图例的方法,prop=my_font参数是设置图例上中文显示的属性,另外一个比较重要的是,图例上显示的文字我们需要添加在plt.plot(x,y,label='开盘价')方法的label属性中。
  3.添加网格
    代码plt.grid(alpha=0.4),这行代码就是添加网格的效果,这里面的alpha=0.4是设置网格线的透明度,范围是(0~1)。绘制网格的作用就是为了辅助我们更好的观察数据的x值和y值。

 四.一图多个坐标系子图

   1.调用plt.subplot()函数就可以在画布上创建一个子图,plt.subplot()的使用方法如下:
  • plt.subplot(nrows, ncols, index)

   函数的 nrows 参数指定将数据图区域分成多少行;ncols 参数指定将数据图区域分成多少列;index 参数指定获取第几个区域。

  • plt.subplot(2, 2, 1)
  • plt.plot(y)
  • plt.title('Axes1')
  • #第二个子图
  • # 折线图,y轴每个数据的立方
  • plt.subplot(2, 2, 2)
  • plt.plot(y**3)
  • plt.title('Axes2')
  • #第三个子图
  • # 折线图,x轴和y轴均指定数据
  • plt.subplot(2, 2, 3)
  • plt.plot(x,y)
  • plt.title('Axes3')
 五.总结

 

 

 
 
posted @ 2020-05-20 17:56  番薯大大  阅读(666)  评论(0编辑  收藏  举报