Python基于Matplotlib实现双Y轴绘图——图书销售数据可视化分析
今天遇上一个小的需求就是需要绘制双轴的图,这个之前使用excel的话是可以很快绘制出来的,但是基于代码实现的话好像还么怎么用过,所以这里研究了下,绘制好后,分享记录一下,首先看下数据:
主要是不同种类的编程开发相关的书籍的销售数据,首先加载数据:
# 数据加载
workbook = xlrd.open_workbook(data, encoding_override="utf-8")
table = workbook.sheets()[0]
row_num, col_num = table.nrows, table.ncols
data_list = []
for i in range(0, row_num):one_list = []for j in range(0, col_num):try:one_list.append(table.cell_value(i, j))except Exception as e:one_list.append(0)data_list.append(one_list)
print("data_list_length: ", len(data_list))
之后对读取的数据进行解析处理:
# 数据计算
final2018 = 0
need_list = []
for one_list in data_list:if one_list[0].strip() == book:cell = one_list[-1]try:date = datetime.datetime(*xldate_as_tuple(cell, 0))cell = date.strftime("%Y-%d-%m")except Exception as e:print("Exception: ", e)print("cell: ", cell)one_list[-1] = cellif cell.startswith("2019"):need_list.append(one_list)if cell.startswith("2018-12"):final2018 = sum([int(one) for one in one_list[3:10]])else:pass
print("need_list_length: ", len(need_list))
for one_list in need_list:print(need_list)
print("final2018: ", final2018)
num_list = []
for one_list in need_list:nums = [int(one) for one in one_list[3:10]]num_list.append([one_list[-1], sum(nums)])
sorted_list = sorted(num_list, key=lambda e: e[0])
print(sorted_list)
x, y1, y2 = [], [], []
for i in range(len(sorted_list)):x.append(i)y1.append(sorted_list[i][1])if i == 0:try:y2.append((sorted_list[i][1] - final2018) / final2018)except:y2.append(0)else:y2.append((sorted_list[i][1] - sorted_list[i - 1][1]) / sorted_list[i - 1][1])
最后是结果数据的可视化:
# 绘图
fig = plt.figure(figsize=(10, 8), facecolor="#00E5EE")
# 字体使用楷体
plt.rcParams["font.sans-serif"] = ["STKAITI"]
plt.rcParams["axes.unicode_minus"] = False
# 设置背景色
plt.rcParams["axes.facecolor"] = "#cc00ff"
ax1 = fig.add_subplot(111)
plt.title("《Python数据分析与应用》2019年环比增长情况", color="r", fontsize=25, y=1.04)
plt.xticks(x,["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"],color="b",fontsize=20,
)
plt.xlabel("月份", color="b", fontsize=20)
plt.ylabel("全国销量(册)", color="b", fontsize=20)
ax1.bar(x, y1, color="#33ff66", label="left")
# 增加一条坐标轴
ax2 = ax1.twinx()
ax2.plot(x, y2, color="#3399ff", linestyle="--", marker="o", linewidth=2)
ax2.set_ylabel("增长率", color="b", fontsize=20)
ax2.tick_params(axis="y", color="green", labelsize=20, labelcolor="#B22222")
for a, b in zip(x, y2):plt.text(a, b + 0.02, "%.2f" % b, ha="center", va="bottom", fontsize=20, color="red")
plt.show()
我们看下效果图:
看上去有点花里胡哨,当然了也可以去掉不需要的背景色:
这样看上去就好多了,可以看到:这里主要是做了一个简单的可视化,分析某种书籍的各个月份的销量情况,同时绘制了增长率的折线图,左轴和右轴的刻度也是不一样的。
Python基于Matplotlib实现双Y轴绘图——图书销售数据可视化分析相关推荐
- python之matplotlib制作双Y轴图含详细代码解释
前言:好久没更新啦,最近在参加OCALE全国跨境电商大赛,今天更新的内容是python制作双Y轴图片. 目录 一.函数介绍 二.实际应用 2.1 实验数据展示 2.2 代码实现: 2.3 最终结果显示 ...
- python双y轴的折线图_python matplotlib实现双Y轴的实例
python matplotlib实现双Y轴的实例 如下所示: import matplotlib.pyplot as plt import numpy as np x = np.arange(0., ...
- python绘制多条不同x轴曲线_Python matplotlib 绘制双Y轴曲线图的示例代码
Matplotlib简介 Matplotlib是非常强大的python画图工具 Matplotlib可以画图线图.散点图.等高线图.条形图.柱形图.3D图形.图形动画等. Matplotlib安装 p ...
- Python实现双X轴双Y轴绘图
Python微信订餐小程序课程视频 https://blog.csdn.net/m0_56069948/article/details/122285951 Python实战量化交易理财系统 https ...
- echarts折线图y轴根据数值自动_Python matplotlib 绘制双Y轴曲线图的示例代码
双X轴的 可以理解为共享y轴 ax1=ax.twiny() ax1=plt.twiny() 双Y轴的 可以理解为共享x轴 ax1=ax.twinx() ax1=plt.twinx() 自动生成一个例子 ...
- echarts折线图怎么从y轴开始_基于echarts的双y轴实时更新折线图
一款基于echarts的双y轴实时更新折线图效果,页面加载后开始自动更新数据并绘制对应的折线图,可以点击右上角的按钮:显示数据视图.刷新数据和将数据存储为png的图片. 查看演示 下载资源: 46 次 ...
- python画双折线图详解_Python教程:matplotlib 绘制双Y轴曲线图
#-*- coding: utf-8 -*- #调用包 importpandas as pdimportnumpy as npimportmatplotlib.pyplot as plt#读取文件 i ...
- 基于Pandas和PyEcharts的当当网图书信息可视化分析
1 绘制python图书封面的照片墙 import math import os from PIL import Imagedef makePicturesWall(picdir):picslist ...
- python绘图时如何添加图例_【Python】matplotlib 双y轴绘制及合并图例
1.双y轴绘制 关键函数:twinx() 问题在于此时图例会有两个. # -*- coding: utf-8 -*- import numpy as np import matplotlib.pypl ...
最新文章
- C++ 字符串字母大小写转换
- 《Ceph源码分析》——第1章,第5节RADOS
- linux 信号 core,Shell 信号发送与捕捉
- php正则原子,PHP正则表达式---原子
- 图像局部显著性—点特征(FREAK)
- form表单中的input有哪些类型
- HH SaaS电商系统的库存调整单设计
- 机器学习笔记(十)---- KNN(K Nearst Neighbor)
- 博弈-巴什博奕-P/N图
- 计算机网络中的数据通信——(1)基本结构
- Vue - Todos 案例
- 百度云下载不限速方法+软件
- V-for and slot-scoped报错问题
- 小米电视2测评:蓝图远大,力不从心
- SPRING BOOT之三-Tests
- softlayer iso_从Go编程语言获取SoftLayer API的命令
- 数据泄露的常见原因是什么,后果是什么?
- 计算机应用基础终极性,计算机应用基础z终结性考核(8页)-原创力文档
- 将Discuz!设置到新版应用中心,无需升级Discuz!版本的方法(临时方案)
- 计算机网络数据通信论文,浅谈计算机网络与数据通信的发展