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版本的读写锁操作方法
Apr 25 Python
Python编程中实现迭代器的一些技巧小结
Jun 21 Python
Scrapy框架CrawlSpiders的介绍以及使用详解
Nov 29 Python
python读取并写入mat文件的方法
Jul 12 Python
Python的Tkinter点击按钮触发事件的例子
Jul 19 Python
python之yield和Generator深入解析
Sep 18 Python
Python笔记之工厂模式
Nov 20 Python
pytorch-神经网络拟合曲线实例
Jan 15 Python
python 使用递归回溯完美解决八皇后的问题
Feb 26 Python
学python最电脑配置有要求么
Jul 05 Python
Python 抓取数据存储到Redis中的操作
Jul 16 Python
python实现web邮箱扫描的示例(附源码)
Mar 30 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
2020显卡排行榜天梯图 显卡天梯图2020年3月最新版
2020/04/02 数码科技
mysql建立外键
2006/11/25 PHP
php mssql 时间格式问题
2009/01/13 PHP
Apache中php.ini的设置方法
2013/02/28 PHP
浅析PHP原理之变量(Variables inside PHP)
2013/08/09 PHP
php cli配置文件问题分析
2015/10/15 PHP
javascript针对DOM的应用实例(一)
2012/04/15 Javascript
输入密码检测大写是否锁定js实现代码
2012/12/03 Javascript
Jquery如何实现点击时高亮显示代码
2014/01/22 Javascript
点击显示指定元素隐藏其他同辈元素的方法
2014/02/19 Javascript
JavaScript将XML转成JSON的方法
2015/03/12 Javascript
javascript实现方法调用与方法触发小结
2016/03/26 Javascript
详解Webpack DLL用法以及功能
2017/07/11 Javascript
vue如何使用 Slot 分发内容实例详解
2017/09/05 Javascript
详解node.js中的npm和webpack配置方法
2018/01/21 Javascript
js设置鼠标悬停改变背景色实现详解
2019/06/26 Javascript
layui radio点击事件实现input显示和隐藏的例子
2019/09/02 Javascript
JS如何操作DOM基于表格动态展示数据
2020/10/15 Javascript
[04:45]上海特级锦标赛主赛事第三日TOP10
2016/03/05 DOTA
django1.8使用表单上传文件的实现方法
2016/11/04 Python
浅析python中的迭代与迭代对象
2018/10/08 Python
django 连接数据库 sqlite的例子
2019/08/14 Python
Python爬虫实现vip电影下载的示例代码
2020/04/20 Python
Python selenium环境搭建实现过程解析
2020/09/08 Python
Python提取视频中图片的示例(按帧、按秒)
2020/10/22 Python
荷兰电脑专场:Paradigit
2018/05/05 全球购物
美国巧克力喷泉品牌:Sephra
2019/05/05 全球购物
如何为DataGridView添加一个定制的Column Type
2014/01/21 面试题
大学毕业生简单自荐信
2013/11/05 职场文书
《一件运动衫》教学反思
2014/02/19 职场文书
工程技术员岗位职责
2014/03/02 职场文书
2015毕业生实习工作总结
2014/12/12 职场文书
回复函范文
2015/07/14 职场文书
2015年汽车销售员工作总结
2015/07/24 职场文书
婚宴父母致辞
2015/07/27 职场文书
班级元旦晚会开幕词
2016/03/04 职场文书