Python绘制组合图的示例


Posted in Python onSeptember 18, 2020

绘制组合图:

组合图就是将多个形状,组合到⼀个图形中,主要作⽤是节约作图的空间,节省读者的时间,从⽽提⾼
信息传达的效率。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
def plot_combination1():
 sale = pd.read_excel('./data/每月目标销售额和实际销售额.xlsx',header=0,index_col=0)
 # 设置正常显示中文标签
 plt.rcParams['font.sans-serif'] = ['SimHei']
 # 正常显示负号
 plt.rcParams['axes.unicode_minus'] = False
 # 设置字体大小
 plt.rcParams.update({'font.size':16})

 # 提取数据
 x = np.arange(12)+1
 y1 = sale.目标销售额
 y2 = sale.实际销售额

 # 计算目标完成率
 y3 = y2/y1 # float
 # print(y3) 1月 1.120000 2月 0.887500 3月 1.118182 4月 1.150000
 """
 第一种方式:是⽤两个不同颜⾊的柱⼦,分别展示每个⽉的实际销售额和⽬标销售额,
 ⽤折线图展示⽬标完成率。
 左边的主坐标轴是柱形图对应的数据,右边的次坐标轴是折线图对应的
 数据,下边的横坐标轴表示细分的维度,⽐如时间、地区、渠道等。
 """
 plt.figure(figsize=(16,8))
 plt.subplot(111)

 # 柱形宽度
 bar_width = 0.35

 # 在主坐标轴绘制柱形图
 plt.bar(x,y1,bar_width,label='目标销售额')
 plt.bar(x+bar_width,y2,bar_width,label='实际销售额')

 # 设置坐标轴的取值范围,避免柱子过高而与图例重叠
 plt.ylim(0,max(y1.max(),y2.max())*1.2)

 # 设置图例
 plt.legend(loc='upper left')

 # 设置横坐标的标签
 plt.xticks(x)
 # plt.set_xticklabels(sale.index)

 # 在次坐标轴上绘制折线图
 plt.twinx()
 # ls:线的类型,lw:宽度,o:在顶点处实心圈
 plt.plot(x,y3,ls='-',lw=2,color='r',marker='o',label='目标完成率')

 # 设置次坐标轴的取值范围,避免折线图波动过大
 plt.ylim(0,1.35)

 # 设置图例
 plt.legend()

 # 定义显示百分号的函数
 def to_percent(number, position=0):
 return '%.f' % (number * 100) + '%'

 # 次坐标轴的标签显示百分号 FuncFormatter:自定义格式函数包
 from matplotlib.ticker import FuncFormatter
 plt.gca().yaxis.set_major_formatter(FuncFormatter(to_percent))

 # 设置标题
 plt.title('\n每月销售目标达成情况\n',fontsize=36,loc='center',color = 'k')
 plt.show()



def plot_combination2():
 """
 第二种方式:是⽤两条不同颜⾊的折线,分别展示每个⽉的实际销售额和⽬标销售额,再⽤两种不同颜
 ⾊的柱形图展示实际与⽬标的差额,绿⾊代表完成⽬标,红⾊代表没有完成⽬标,
 这种组合图不需要⽤到两个纵坐标轴,
 """
 import pandas as pd
 import numpy as np
 import matplotlib.pyplot as plt

 # 设置正常显示中⽂标签
 plt.rcParams['font.sans-serif'] = ['SimHei']

 # 正常显示负号
 plt.rcParams['axes.unicode_minus'] = False

 # 设置字体⼤⼩
 plt.rcParams.update({'font.size': 16})

 # 从 Excel ⽂件中读取数据,第⼀列设置为索引
 sale = pd.read_excel('./data/每月目标销售额和实际销售额.xlsx', index_col=0)
 # 提取数据
 # print('index')
 x = sale.index # Index(['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], dtype='object', name='month')
 # print(x)
 y1 = sale.目标销售额
 y2 = sale.实际销售额
 # 计算差额
 y3 = y2 - y1
 # 绘制折线图
 plt.figure(figsize=(16, 8))
 plt.subplot(111)
 plt.plot(x, y1, ls='-', lw=2, label='目标销售额')
 plt.plot(x, y2, ls='--', lw=2, label='实际销售额')
 # ⽤列表推导式定义柱⼦的颜⾊,绿⾊代表完成⽬标, 红⾊代表没有完成⽬标
 color = ['g' if i > 0 else '#dc5034' for i in y3]

 # 绘制柱形图
 plt.bar(x, y3, color=color, label='差额')
 # 设置图例
 plt.legend(loc='upper left')
 # 设置标题
 title = '\n每月销售目标达成情况\n'
 plt.title(title, fontsize=36, loc='center', color='k')
 plt.show()

if __name__ == '__main__':
 plot_combination1()
 plot_combination2()

绘制结果:

第一种 

Python绘制组合图的示例

第二种:

Python绘制组合图的示例

参考书目:

以上就是Python绘制组合图的示例的详细内容,更多关于Python绘制组合图的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python 可爱的大小写
Sep 06 Python
Python中用于转换字母为小写的lower()方法使用简介
May 19 Python
python实现简单ftp客户端的方法
Jun 28 Python
Python使用pyshp库读取shapefile信息的方法
Dec 29 Python
解决python2 绘图title,xlabel,ylabel出现中文乱码的问题
Jan 29 Python
Python 实现文件打包、上传与校验的方法
Feb 13 Python
Python可变和不可变、类的私有属性实例分析
May 31 Python
python视频按帧截取图片工具
Jul 23 Python
python gdal安装与简单使用
Aug 01 Python
解决Python import docx出错DLL load failed的问题
Feb 13 Python
Python如何设置指定窗口为前台活动窗口
Aug 12 Python
Python如何使用神经网络进行简单文本分类
Feb 25 Python
记一次Django响应超慢的解决过程
Sep 17 #Python
Visual Studio Code搭建django项目的方法步骤
Sep 17 #Python
Windows下pycharm安装第三方库失败(通用解决方案)
Sep 17 #Python
PyCharm中关于安装第三方包的三个建议
Sep 17 #Python
Scrapy项目实战之爬取某社区用户详情
Sep 17 #Python
django跳转页面传参的实现
Sep 17 #Python
解决Ubuntu18中的pycharm不能调用tensorflow-gpu的问题
Sep 17 #Python
You might like
PHP图片上传类带图片显示
2006/11/25 PHP
PHP文件上传实例详解!!!
2007/01/02 PHP
php防注入,表单提交值转义的实现详解
2013/06/10 PHP
PHP删除HTMl标签的三种解决方法
2013/06/30 PHP
Zend Framework实现留言本分页功能(附demo源码下载)
2016/03/22 PHP
HTML复选框和单选框 checkbox和radio事件介绍
2012/12/12 Javascript
jQuery弹性滑动导航菜单实现思路及代码
2013/05/02 Javascript
解析ScrollPic在ie8下只滚动一遍,然后变为空白 ie6,ie7,chrome,firefox正常
2013/06/26 Javascript
JavaScript开发人员的10个关键习惯小结
2014/12/05 Javascript
js性能优化技巧
2015/11/29 Javascript
javascript实现保留两位小数的多种方法
2015/12/18 Javascript
详谈javascript异步编程
2016/02/21 Javascript
AngularJS模板加载用法详解
2016/11/04 Javascript
Vue.js自定义事件的表单输入组件方法
2018/03/08 Javascript
Vue2.0 给Tab标签页和页面切换过渡添加样式的方法
2018/03/13 Javascript
基于mpvue搭建微信小程序项目框架的教程详解
2019/04/10 Javascript
详解小程序设置缓存并且不覆盖原有数据
2019/04/15 Javascript
JS浏览器BOM常见操作实例详解
2020/04/27 Javascript
详解Vue.js 响应接口
2020/07/04 Javascript
[01:06:54]DOTA2-DPC中国联赛 正赛 RNG vs Dragon BO3 第一场 1月24日
2021/03/11 DOTA
在Python中处理XML的教程
2015/04/29 Python
Python导出数据到Excel可读取的CSV文件的方法
2015/05/12 Python
Python2.x版本中基本的中文编码问题解决
2015/10/12 Python
Python编程实现使用线性回归预测数据
2017/12/07 Python
Python3.4 tkinter,PIL图片转换
2018/06/21 Python
Python 抓取微信公众号账号信息的方法
2019/06/14 Python
Python如何使用vars返回对象的属性列表
2020/10/17 Python
matplotlib bar()实现多组数据并列柱状图通用简便创建方法
2021/02/24 Python
CSS3用@font-face实现自定义英文字体
2013/09/23 HTML / CSS
英语国培研修感言
2014/02/13 职场文书
个人贷款担保书
2014/04/01 职场文书
2014基建处领导班子“四风”对照检查材料思想汇报
2014/10/04 职场文书
先进工作者个人总结
2015/02/15 职场文书
活着观后感
2015/06/03 职场文书
让世界充满爱观后感
2015/06/10 职场文书
Python游戏开发实例之graphics实现AI五子棋
2021/11/01 Python