从零开始学Python【14】--matplotlib(折线图)

往期matplotlib绘图系列

从零开始学Python【13】--matplotlib(直方图)

从零开始学Python【12】--matplotlib(箱线图)

从零开始学Python【11】--matplotlib(饼图)

从零开始学Python【10】--matplotlib(条形图)


前言


       我们接着上一期matplotlib绘图内容,讲解一下关于折线图的绘制,折线图一般是用来表示某个数值变量随着时间的推移而形成的趋势,这种图还是比较常见的,如经济走势图、销售波动图、PV监控图等。在Python的matplotlib模块中,我们可以调用plot函数就能实现折线图的绘制了,先来看看这个函数的一些参数含义。

plot函数的参数解读


       matplotlib模块中plot函数语法及参数含义:

plt.hist(x,y,linestyle,
        linewidth,color,marker,
        markersize,markeredgecolor,
        markerfactcolor,label,alpha)
  • x:指定折线图的x轴数据;

  • y:指定折线图的y轴数据;

  • linestyle:指定折线的类型,可以是实线、虚线、点虚线、点点线等,默认文实线;

  • linewidth:指定折线的宽度

  • marker:可以为折线图添加点,该参数是设置点的形状;

  • markersize:设置点的大小;

  • markeredgecolor:设置点的边框色;

  • markerfactcolor:设置点的填充色;

  • label:为折线图添加标签,类似于图例的作用;


一元折线图的绘制


案例:每天进步一点点2015公众号文章阅读人数

# 导入模块import pandas as pdimport matplotlib.pyplot as plt# 设置绘图风格plt.style.use('ggplot')# 设置中文编码和负号的正常显示plt.rcParams['font.sans-serif'] = 'Microsoft YaHei'plt.rcParams['axes.unicode_minus'] = False# 读取需要绘图的数据article_reading = pd.read_excel('wechart.xlsx')# 取出8月份至9月28日的数据sub_data = article_reading.loc[article_reading.date >= '2017-08-01' ,:]# 设置图框的大小fig = plt.figure(figsize=(10,6))# 绘图plt.plot(sub_data.date, # x轴数据
         sub_data.article_reading_cnts, # y轴数据
         linestyle = '-', # 折线类型
         linewidth = 2, # 折线宽度
         color = 'steelblue', # 折线颜色
         marker = 'o', # 点的形状
         markersize = 6, # 点的大小
         markeredgecolor='black', # 点的边框色
         markerfacecolor='brown') # 点的填充色# 添加标题和坐标轴标签plt.title('公众号每天阅读人数趋势图')
plt.xlabel('日期')
plt.ylabel('人数')# 剔除图框上边界和右边界的刻度plt.tick_params(top = 'off', right = 'off')# 为了避免x轴日期刻度标签的重叠,设置x轴刻度自动展现,并且45度倾斜fig.autofmt_xdate(rotation = 45)# 显示图形plt.show()

       由于x轴是日期型数据,当数据量一多的时候,就会导致刻度标签的重叠或拥挤,为了防止重叠的产生,我们需要让日期型的x轴刻度标签自动展现,从而避免重叠的现象。下面两幅图是对比自动刻度标签的前后变化:

0?wx_fmt=png

0?wx_fmt=png


       可能你并不满足这样的刻度标签展现形式,你想以个性化的展现方式,如“YYYY-MM-DD”的显示方式,同时又想以固定的几天作为间隔,这样的设置又该如何实现?其实非常的简单,只需要在上面代码的基础上添加几行代码就可以轻松搞定。

一元折线图的绘制—图形优化


# 导入模块import matplotlib as mpl# 设置图框的大小fig = plt.figure(figsize=(10,6))# 绘图plt.plot(sub_data.date, # x轴数据
         sub_data.article_reading_cnts, # y轴数据
         linestyle = '-', # 折线类型
         linewidth = 2, # 折线宽度
         color = 'steelblue', # 折线颜色
         marker = 'o', # 点的形状
         markersize = 6, # 点的大小
         markeredgecolor='black', # 点的边框色
         markerfacecolor='steelblue') # 点的填充色# 添加标题和坐标轴标签plt.title('公众号每天阅读人数趋势图')
plt.xlabel('日期')
plt.ylabel('人数')# 剔除图框上边界和右边界的刻度plt.tick_params(top = 'off', right = 'off')# 获取图的坐标信息ax = plt.gca()# 设置日期的显示格式  date_format = mpl.dates.DateFormatter("%Y-%m-%d")  
ax.xaxis.set_major_formatter(date_format) 

# 设置x轴显示多少个日期刻度#xlocator = mpl.ticker.LinearLocator(10)# 设置x轴每个刻度的间隔天数xlocator = mpl.ticker.MultipleLocator(5)
ax.xaxis.set_major_locator(xlocator)# 为了避免x轴日期刻度标签的重叠,设置x轴刻度自动展现,并且45度倾斜fig.autofmt_xdate(rotation = 45)# 显示图形plt.show()

0?wx_fmt=png

多元折线图的绘制


       如果你需要在一张图形中画上两条折线图,也很简单,只需要在代码中写入两次plot函数即可,其他都不需要改动了。具体可以参考下面的代码逻辑:

# 设置图框的大小fig = plt.figure(figsize=(10,6))# 绘图--阅读人数趋势plt.plot(sub_data.date, # x轴数据
         sub_data.article_reading_cnts, # y轴数据
         linestyle = '-', # 折线类型
         linewidth = 2, # 折线宽度
         color = 'steelblue', # 折线颜色
         marker = 'o', # 点的形状
         markersize = 6, # 点的大小
         markeredgecolor='black', # 点的边框色
         markerfacecolor='steelblue', # 点的填充色
         label = '阅读人数') # 添加标签# 绘图--阅读人次趋势plt.plot(sub_data.date, # x轴数据
         sub_data.article_reading_times, # y轴数据
         linestyle = '-', # 折线类型
         linewidth = 2, # 折线宽度
         color = '#ff9999', # 折线颜色
         marker = 'o', # 点的形状
         markersize = 6, # 点的大小
         markeredgecolor='black', # 点的边框色
         markerfacecolor='#ff9999', # 点的填充色
         label = '阅读人次') # 添加标签# 添加标题和坐标轴标签plt.title('公众号每天阅读人数和人次趋势图')
plt.xlabel('日期')
plt.ylabel('人数')# 剔除图框上边界和右边界的刻度plt.tick_params(top = 'off', right = 'off')# 获取图的坐标信息ax = plt.gca()# 设置日期的显示格式  date_format = mpl.dates.DateFormatter('%m-%d')  
ax.xaxis.set_major_formatter(date_format) 

# 设置x轴显示多少个日期刻度#xlocator = mpl.ticker.LinearLocator(10)# 设置x轴每个刻度的间隔天数xlocator = mpl.ticker.MultipleLocator(3)
ax.xaxis.set_major_locator(xlocator)# 为了避免x轴日期刻度标签的重叠,设置x轴刻度自动展现,并且45度倾斜fig.autofmt_xdate(rotation = 45)# 显示图例plt.legend()# 显示图形plt.show()

0?wx_fmt=png

两条折线图很完美的展现在一张图中,公众号的阅读人数与人次趋势完全一致,而且具有一定的周期性,即过几天就会有一个大幅上升的波动,这个主要是由于双休日的时候,时间比较空闲,就可以更新并推送文章了。

结语


       OK,今天关于Pyhton绘制折线图的讲解就到此结束,如果你感兴趣,不妨和我一起学习与交流,同时也欢迎各位朋友继续转发与分享,让系统的知识不断的扩散出去。下一期我们将推送散点图的绘制。文中相关的Python脚本和PDF版本已存放到百度云盘,可以通过下面的链接获取:

链接: https://pan.baidu.com/s/1geX2RiN 密码: wnr3

每天进步一点点2015

学习与分享,取长补短,关注小号!

640?wx_fmt=jpeg
长按识别二维码 马上关注



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sim1480

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值