什么叫【包含置信区间的折线柱状图】?因为图有点复杂,实在不知道应该叫什么名字好。。

图片

今天导师发来一张图片,就是下面这张,是一篇论文中的插图,他说这张图片画的挺漂亮,想让我用python模仿一下。

首先分析一下这张图分为柱状图3组和折线图3组,共六组数据,其中每根折线都有上下的置信区间,此外还有横轴标题、纵轴标题和图例。

尝试

这张图是我用python的matplotlib包画的,除了最外层的纵向彩色坐标轴以及横坐标轴上的红色字体,其他都已实现,接下来将详细讲解绘图过程。

代码

首先导入必要的包pandas、matplotlib和numpy,数据集stock.csv我会放在文末供大家练习。数据集的第一行是没有标题的,因此header=None,将6列数据分别命名为'bar1', 'bar2', 'bar3', 'line1', 'line2', 'line3'.

import pandas as pd

import matplotlib.pyplot as plt

import numpy as np

jddf = pd.read_csv('stock.csv', sep=',', header=None,

names=['id', 'time', 'bar1', 'bar2', 'bar3', 'line1', 'line2', 'line3'])

设置X轴为1至16的十六个整数数字,y2, y2, y3分别在柱状图中使用,index列表示X轴的坐标文字。

# 设置X轴和Y轴取值

x = np.arange(1,17)

y1 = jddf['bar1']

y2 = jddf['bar2']

y3 = jddf['bar3']

index = jddf['id'].tolist()

绘制柱状图:

在color设置部分,三个数字/256分别是颜色所对应的RGB的三个数字。想要获得和原图一样的配色,我的做法是,用Windows自带的画图工具打开,然后取色笔工具获取颜色的RGB三个数字。

# 柱形图

plt.figure(figsize=(14,4))

bar_width = 0.2 # 设置柱状图的宽度

bar1 = plt.bar(x-bar_width, y1, bar_width, color=(0/256, 114/256, 189/256))

bar2 = plt.bar(x, y2, bar_width, color=(217/256, 83/256, 25/256))

bar3 = plt.bar(x+bar_width, y3, bar_width, color=(237/256, 177/256, 32/256))

绘制折线图及其置信区间:

我们通过一张表来看各参数的用法:

更过细节用法可以参考Matplotlib的官方文档,这里有个更大更详细的表格。

# 折线图

line1, = plt.plot(np.arange(1,17), jddf['line1'], color='purple', lw=0.5, ls='-', marker='o', ms=4)

line2, = plt.plot(np.arange(1,17), jddf['line2'], color='green', lw=0.5, marker='^', ms=4)

line3, = plt.plot(np.arange(1,17), jddf['line3'], color='blue', lw=0.5, ls='-.', marker='s', ms=4)

# 折线图置信区间

plt.fill_between(np.arange(1,17), jddf['line1'] - 2, jddf['line1'] + 2, color=(229/256, 204/256, 249/256), alpha=0.9)

plt.fill_between(np.arange(1,17), jddf['line2'] - 2, jddf['line2'] + 2, color=(204/256, 236/256, 223/256), alpha=0.9)

plt.fill_between(np.arange(1,17), jddf['line3'] - 2, jddf['line3'] + 2, color=(191/256, 191/256, 255/256), alpha=0.9)

设置X,Y轴的文字和图例,因为X轴文字较长所以要旋转一下,且以文字最右端对其柱状图中的数据点。

最后保存图片的时候,如果你用的是Jupyter Notebook你能看到画质实在感人。要想使保存的图片足够清楚就要使用savefig()函数来设置保存的dpi数值,但是该函数一定要放在plt.show()之前,否则画出的图是空白的。

# X轴和y轴坐标文字设置

plt.xticks(rotation=20)

plt.xticks(x,index, horizontalalignment='right')

plt.ylabel('Contributions to toal aviation emission(%)')

# 图例设置

plt.legend([bar1, bar2, bar3, line1, line2, line3], ["Aviation BC number emission", "Aviation BC mass emission", "Aviation fuel consumption", "Geometric mean diameter(GMD)", "Geometric standard deviation(GSD)", "Average fleet EI(BC)"], loc='upper right')

# 保存数据并画图

plt.savefig("temp.png",dpi=500,bbox_inches = 'tight')#解决图片不清晰,不完整的问题

plt.show()

获取本文中所使用的jupyter notebook代码及stock.csv数据集,请关注下方微信公众号。

python成绩区间曲线图_Python重现论文图表之【包含置信区间的折线柱状图】相关推荐

  1. python成绩查询系统_python成绩查询

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 学了点python后,看到各种爬虫教程,原本想做个统计平均学分绩的小爬虫. 当真 ...

  2. python成绩查询系统_Python爬虫实战:登录教务系统查成绩

    本文记录我用Python登录教务系统查询成绩的过程.手动输入验证码,简单获取成绩页面.后续将可能更新自动识别验证码登录查询 前期准备 本爬虫用到了Python的Requests库和BeautifulS ...

  3. python绘制余弦曲线图_Python绘制正余弦函数图像

    公众号:Python编程时光 今天打算通过绘制正弦和余弦函数,从默认的设置开始,一步一步地调整改进,让它变得好看,变成我们初高中学习过的图象那样.通过这个过程来学习如何进行对图表的一些元素的进行调整. ...

  4. python如何绘制曲线图_python怎么画曲线图

    展开全部 # encoding=utf-8 import matplotlib.pyplot as plt from pylab import * #支持中文 mpl.rcParams['font.s ...

  5. python绘制三维曲线图_Python基于matplotlib实现绘制三维图形功能示例

    本文实例讲述了Python基于matplotlib实现绘制三维图形功能.分享给大家供大家参考,具体如下: 代码一: # coding=utf-8 import numpy as np import m ...

  6. python如何绘制曲线图_python pandas plot画折线图如何显示x轴的值?

    在使用python pandas Series plot画折线图时,不知道该如何显示x轴的值. 代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ...

  7. python成绩登录界面_python实现登录界面

    关注公众号:Python爬虫数据分析挖掘,回复[开源源码]免费获取更多源码 本例,展示了通过登录界面打开主界面的实现方式. 其中,登录的账号与密码判断都比较简单,请大家根据自己需要,自行完善补充. [ ...

  8. python绘制余弦曲线图_Python使用matplotlib绘制正弦和余弦曲线的方法示例

    本文实例讲述了Python使用matplotlib绘制正弦和余弦曲线的方法.分享给大家供大家参考,具体如下: 一 介绍 关键词:绘图库 二 代码 import numpy as np import m ...

  9. 怎么用python找论文_如何利用Python绘制学术论文图表方法

    论文中图表形式多样,常用的处理工具有excel.MATLAB以及Python等,excel自处理的方法有两个缺陷: 1.当数据较多时,容易出现excel"翻白眼"的现象: 2.需要 ...

最新文章

  1. jquery手写轮播图_15个超强的jQuery/HTML5图片轮播插件
  2. ubuntu手动修改anaconda环境变量
  3. appium===安卓SDK下载很慢的解决办法
  4. git 子模块_Git子模块的问题
  5. oracle报sp20042,oracle中ora-04301故障处理
  6. Fiddler-2 Fiddler抓包原理
  7. Webstorm配置运行React Native
  8. C++中带默认参数的函数定义及使用总结
  9. 创客匠人直播升级服务,打造主流直播课堂​
  10. 随机森林算法的扩展-深度森林(deep forest)
  11. 【分析】魔兽争霸3的MPQ文件及模型格式分析
  12. 【安价】亚拉奈夫想要复兴贫弱男爵家的样子【内政】1
  13. 交易开拓者-附录二:函数速查
  14. 如何高效学习的一点思考
  15. GIS+=地理信息+行业+大数据——纽约公开11亿条出租车和Uber原始数据下载及分析
  16. JavaBean与Map互转
  17. iconfont的使用,阿里矢量图库的引用,配置,改变图标大小和图标颜色
  18. decode函数python在哪里,Python SHA1 DECODE函数
  19. keytool list -rfc -keystore 查看证书信息
  20. Linux文件或者文件夹的管理

热门文章

  1. hibernate id生成策略 mysql_Hibernate中ID生成策略
  2. mm1排队系统仿真matlab实验报告,MM1排队系统仿真matlab实验报告.doc
  3. html换行符_HTML 列表
  4. linux java heap space_Linux tomcat9 java.lang.OutOfMemoryError: Java heap space 解决方法
  5. linux命令行安装vnc_centos 6.5 命令行方式可以用vnc连接吗
  6. html项目_Python Selenium项目实战之添加发送HTML测试报告邮件!
  7. 查询出两个表中不同的数据
  8. Double类型比较大小
  9. 如何实现按钮水平居中
  10. RabbitMQ 基本使用(注解的方式)