今天遇上一个小的需求就是需要绘制双轴的图,这个之前使用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轴绘图——图书销售数据可视化分析相关推荐

  1. python之matplotlib制作双Y轴图含详细代码解释

    前言:好久没更新啦,最近在参加OCALE全国跨境电商大赛,今天更新的内容是python制作双Y轴图片. 目录 一.函数介绍 二.实际应用 2.1 实验数据展示 2.2 代码实现: 2.3 最终结果显示 ...

  2. python双y轴的折线图_python matplotlib实现双Y轴的实例

    python matplotlib实现双Y轴的实例 如下所示: import matplotlib.pyplot as plt import numpy as np x = np.arange(0., ...

  3. python绘制多条不同x轴曲线_Python matplotlib 绘制双Y轴曲线图的示例代码

    Matplotlib简介 Matplotlib是非常强大的python画图工具 Matplotlib可以画图线图.散点图.等高线图.条形图.柱形图.3D图形.图形动画等. Matplotlib安装 p ...

  4. Python实现双X轴双Y轴绘图

    Python微信订餐小程序课程视频 https://blog.csdn.net/m0_56069948/article/details/122285951 Python实战量化交易理财系统 https ...

  5. echarts折线图y轴根据数值自动_Python matplotlib 绘制双Y轴曲线图的示例代码

    双X轴的 可以理解为共享y轴 ax1=ax.twiny() ax1=plt.twiny() 双Y轴的 可以理解为共享x轴 ax1=ax.twinx() ax1=plt.twinx() 自动生成一个例子 ...

  6. echarts折线图怎么从y轴开始_基于echarts的双y轴实时更新折线图

    一款基于echarts的双y轴实时更新折线图效果,页面加载后开始自动更新数据并绘制对应的折线图,可以点击右上角的按钮:显示数据视图.刷新数据和将数据存储为png的图片. 查看演示 下载资源: 46 次 ...

  7. python画双折线图详解_Python教程:matplotlib 绘制双Y轴曲线图

    #-*- coding: utf-8 -*- #调用包 importpandas as pdimportnumpy as npimportmatplotlib.pyplot as plt#读取文件 i ...

  8. 基于Pandas和PyEcharts的当当网图书信息可视化分析

    1 绘制python图书封面的照片墙 import math import os from PIL import Imagedef makePicturesWall(picdir):picslist ...

  9. python绘图时如何添加图例_【Python】matplotlib 双y轴绘制及合并图例

    1.双y轴绘制 关键函数:twinx() 问题在于此时图例会有两个. # -*- coding: utf-8 -*- import numpy as np import matplotlib.pypl ...

最新文章

  1. C++ 字符串字母大小写转换
  2. 《Ceph源码分析》——第1章,第5节RADOS
  3. linux 信号 core,Shell 信号发送与捕捉
  4. php正则原子,PHP正则表达式---原子
  5. 图像局部显著性—点特征(FREAK)
  6. form表单中的input有哪些类型
  7. HH SaaS电商系统的库存调整单设计
  8. 机器学习笔记(十)---- KNN(K Nearst Neighbor)
  9. 博弈-巴什博奕-P/N图
  10. 计算机网络中的数据通信——(1)基本结构
  11. Vue - Todos 案例
  12. 百度云下载不限速方法+软件
  13. V-for and slot-scoped报错问题
  14. 小米电视2测评:蓝图远大,力不从心
  15. SPRING BOOT之三-Tests
  16. softlayer iso_从Go编程语言获取SoftLayer API的命令
  17. 数据泄露的常见原因是什么,后果是什么?
  18. 计算机应用基础终极性,计算机应用基础z终结性考核(8页)-原创力文档
  19. 将Discuz!设置到新版应用中心,无需升级Discuz!版本的方法(临时方案)
  20. 计算机网络数据通信论文,浅谈计算机网络与数据通信的发展

热门文章

  1. 请问JS中new 一个对象发生了什么
  2. 大众点评海底捞分店数据及评论数据
  3. 【安装Ubuntu18.04遇到的问题】未找到WIFI适配器
  4. 如何突破一线交易所的壁垒?BIKI Winter这样说!
  5. 愤怒的小鸟noip2017dayt3
  6. IDEA软件安装与配置
  7. MYSQL索引失效场景
  8. 小红书7月最新的创作趋势是什么?
  9. 【原创】C#搭建足球赛事资料库与预测平台(2) 数据库与XCode组件
  10. 《复联 4》上映,来看看 GitHub 上这几个漫威项目!