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位旋转的度数。
- plt.figure(figsize=(a, b), dpi=dpi)
- 其中: - figsize 设置图形的大小,a 为图形的宽, b 为图形的高,单位为英寸 - dpi 为设置图形每英寸的点数,即每英寸多少个像素
三.一图多线
1.一个坐标系中绘制两条折线,只需要使用两次plt.plot()方法就可以了。
- # 绘制开盘价折线
- plt.plot(x,y)
- # 绘制收盘价折线
- plt.plot(x,z)
- 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')
五.总结