Python数据分析(二) —— 进阶绘制双折线图

单折线图往往不能对两个或者多个事件在同一段时间的比较情况,那么就需要在一张折线图上绘制多条折线。其基本思路就是设置多个y值对应一个x值,就能反映出在同一段时间的不同事件的变化趋势和比较。

1、函数介绍

plt.legend()

当有多个折线图时需要对每个折线图设置图例,来注释它们分别代表什么

()内的参数为设置的信息,如果是汉字,需要使用matplotlib中的font_manager进行汉化,同时可以用loc='uper left'将图例设置在左上方,默认是右上方

plt.grid()

在窗口里绘制网格,更容易观察

()里面可以写alpha=0.8 用alpha来设置网格透明度

plt.plot()

用于拟合点和绘制线,相当于根据点绘制直线

()里面的参数可以有label是设置拟合的每一条曲线代表的是什么,marker设置对描点的点进行标记,markersize设置大小,linestyle可以设置线条的形式,一般有":","--"等形式

2、实战演练

某涛性男子在30岁时,统计了自己和同桌阿彬从11岁到30岁每年交的女(男)朋友的数量。在一个图中绘制出两个人的交友折线图,比较两个人的交友社交能力,同时分析每年交女(男)朋友的数量走势。阿涛和阿彬的交往女(男)朋友数目如下:

阿涛:[1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]

阿彬:[1,0,3,1,2,2,3,3,2,1,2,1,1,1,1,1,1,1,1,1]

老规矩,上代码:

# coding=utf-8
from matplotlib import pyplot as plt
from matplotlib import font_manager

# 设置字体
my_font = font_manager.FontProperties(fname="C:\Windows\Fonts\MSYHL.TTC")

# 设置X,Y的范围
x = range(11,31)
y_1 = [1, 0, 1, 1, 2, 4, 3, 2, 3, 4, 4, 5, 6, 5, 4, 3, 3, 1, 1, 1]
y_2 = [1, 0, 3, 1, 2, 2, 3, 3, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1]
# 设置图形大小
plt.figure(figsize=(20, 8), dpi=80)

# 绘制图像 label 设置标签 color设置颜色 linestyle 设置线条 linewidth 设置线条粗细 alpha设置透明度
plt.plot(x, y_1,label='阿涛交往女(男)朋友数', color='red', linestyle=':', marker='.', markersize=5)
plt.plot(x, y_2,label='阿彬交往女(男)朋友数', color='black',linestyle='--', marker='.', markersize=5)

# 设置X刻度
_xtick_labels = ['{}岁'.format(i) for i in x]
plt.xticks(x, _xtick_labels, rotation=45, fontproperties=my_font)

# 设置X,Y轴标签
plt.xlabel('年龄', fontproperties=my_font)
plt.ylabel('朋友个数', fontproperties=my_font)
plt.title('在11岁到30岁每年交往女(男)朋友的数目', fontproperties=my_font)
# plt.yticks(range(0,9)) 设置网格单位间距

# 绘制网格
plt.grid(alpha=0.8)   # alpha调整网格透明度

# 添加图例 先写label参数 再用plt.lenged()
plt.legend(prop=my_font, loc='upper left')  # 显示中文设置prop参数 loc='upper left'将图例移到左上方

# 展示图形
plt.show()

运行结果如下:

Python数据分析(二) —— 进阶绘制双折线图_第1张图片

程序分析:因为要显示汉字,所以要导入matplotlib中的font_manager模块进行汉化显示汉字。然后设置x轴范围为11-31,range函数含头不含尾,包含11不包含31,即为11-30岁,默认间隔1取值。然后键入y值即阿彬和阿涛的在11-30岁每年交往的女(男)朋友数,设置显示窗口大小,清晰度。分别对阿彬和阿涛的交友曲线进行拟合,然后对x轴进行设置,分别设置图例,通过plt.legend函数来显示,因为有汉字要调用自己电脑带的字体,loc=‘uper left’将图例设置在左上方。对串口绘制网格,设置透明度,最后显示图形,即可完成对阿彬和阿涛的交友数分析。通过折线图对比可以看出阿涛在24岁时正值风华年貌,桃花正盛;阿彬在11岁到30岁平平无奇,交往对象比较固定;综合来看阿涛是个海王,阿彬可能比较老实!你们觉得呢?

绘制三条四条以及多条折线图的方法与两条一致,即设置多个y值与x对应,分别拟合设置图例即可。

总结

本篇文章主要介绍了如何在一张图像中绘制多条折线图进行比较,来进行总体判别与趋势观察。同时结合了实战来进行讲解,对阿彬和阿涛的交往女(男)朋友数进行了比较,给广大男女性朋友择偶提供了分析的方法和技巧。元芳,你怎么看?

你可能感兴趣的:(Python数据分析,数据分析,数据可视化,python,matplotlib)