001 Python数据可视化之折线图

2023-11-08

话说“人是视觉的动物”,本文从可视化入手来展现数据。试想一场景:某制造业工厂的CEO想了解两种成品的次品数及次品率,进而进行下一步决策。对于应用,excel在一定程度上可满足,如下图。

 

对于开发,Python[1][2]--作为受众度高的语言[3],在数据分析与可视化方面显现了它的灵涵与内炼,我们可借助较底层最基础的2D绘图库--Matplotlib[4]来进行展现,下面直接上代码来模拟并展现成品的次品数。代码中加了保姆级的注释,预估小白也能懂~

#*****提高图片显示的分辨率,如果无此语句,图片显示不清晰*****

%config InlineBackend.figure_format = 'svg' 

#导入matplotlib的子库pyplot并命名为plt

import matplotlib.pyplot as plt 

import numpy as np

#*****使图形中的中文正常编码显示*****

plt.rcParams['font.sans-serif'] = ['SimHei']

#*****使坐标轴刻度正常显示负号*****

plt.rcParams['axes.unicode_minus'] = False

#模拟生产数据

period = range(-12,0)

compA_defectNum = [10, 8, 9, 12, 9, 10, 9, 5, 4, 5, 3, 4]

compA_dayProduce = 100

compB_defectNum = [26, 28, 25, 24, 25, 22, 20, 8, 9, 10, 7, 8]

compB_dayProduce = 800

#折线绘图

plt.title('成品A和成品B近12个月的次品数', fontsize=13.5)

plt.xlabel('最近12个月(-1表示当月的前1个月)')

plt.ylabel('次品数')

plt.grid(True)

plt.plot(period, compA_defectNum, label='成品A次品数', c='b', ls='--', marker='D', lw=2)

plt.plot(period, compB_defectNum, label='成品B次品数', c='c', ls='-.', marker='o', lw=2)

plt.legend() #*****显示题注*****

#标注次品数及最大值

for comp in [compA_defectNum, compB_defectNum]:

    for a, b in zip(period, comp):

        plt.text(a, b+0.3, '%d'%b, ha='center', va='bottom', fontsize=9) 

    #*****重点标注次品数最大值***** #下句跟for a, b ... 对齐

    plt.annotate('最大值', (period[comp.index(max(comp))],max(comp)),                        (period[comp.index(max(comp))] + 0.5, max(comp)), xycoords='data',arrowprops=dict(facecolor='r', shrink=0.1), c='r',fontsize=10)

#拐点线

plt.vlines(period[6], compA_defectNum[6]-3, compA_defectNum[6]+3, linestyles ="dotted", colors ="r")

plt.vlines(period[6], compB_defectNum[6]-3, compB_defectNum[6]+3, linestyles ="dashed", colors ="r")

#显示水印

c = 0.4 * (min(period) + max(period))

d = min(compA_defectNum) + 1.85 * (max(compA_defectNum)-min(compA_defectNum))

plt.text(c, d, '前第6个月是次品数下降的拐点', ha='center', fontsize=12.5, rotation=-20, c='gray', alpha=0.4)

#设置坐标轴刻度

plt.xlim(-13, 0)

plt.ylim(0, 33.5)

#保存图片 #*****注:savefig要在show前面,否则保存的是空白的图片*****

plt.savefig("001_data_PlotLineChart.png")  

plt.show()

30行代码,就做出如下效果。jupyter环境中添加代码的第一句可提高图片显示分辨率,在.py文件中此句可省。代码中需要特别注意的点已用*****标注,跑代码时可先注释掉来加深领悟,属避坑系列。代码已共享到github,链接https://github.com/futurestar001/data_visualization,包含.py和jupyter双版本。

 

有了上面的基础,次品率留作作业了~

此帖旨在总结与分享我在折线图可视化中的一些重要领悟与相关代码示例,如有更优建议,欢迎各位留言与提前感谢不吝赐教,希望能帮到想学习/了解此方面知识的伙伴们~

参考文献或网站:

[1] Python, https://www.python.org/

[2] Python, https://m.runoob.com/python/

[3] TOIBE, https://www.tiobe.com/tiobe-index/

[4] Matplotlib, https://www.matplotlib.org.cn/tutorials/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

001 Python数据可视化之折线图 的相关文章

  • 即使页面未完全加载,我们也可以使用 Selenium 获取页面源吗(TimeoutException: Message: timeout)?

    即使遇到 TimeoutException Message timeout 也能获取页面源码吗 当我调用 driver page source 时 有时无法加载整页 但我只需要它的部分信息 尚未确定 所以我只想在任何情况下保存页面 是否可以
  • Python 2.7 将比特币私钥转换为 WIF 私钥

    作为一名编码新手 我刚刚完成了教程 教程是这样的 https www youtube com watch v tX XokHf nI https www youtube com watch v tX XokHf nI 我想用 1 个易于阅读
  • Python从int到string的快速转换

    我正在用 python 求解大量阶乘 并发现当我完成计算阶乘时 需要相同的时间才能转换为字符串以保存到文件中 我试图找到一种将 int 转换为字符串的快速方法 我将举一个计算和 int 转换时间的例子 我正在使用通用的 a str a 但感
  • 如何使用显式引用转储 YAML?

    递归引用非常适合ruamel yaml or pyyaml ruamel yaml dump ruamel yaml load A A id001 id001 然而 它 显然 不适用于普通引用 ruamel yaml dump ruamel
  • 为什么我的代码不能根据字典解码加密字符串?

    我有一本字典 其中包含代表字母的键和值 例如一个简单的 DICT CODE b g n a p o x d t y 我收到了一个加密代码 并将该字符串转换为一个列表 其中每个项目都是一个单词 我需要根据字典中的项目来解决它 代码示例是 wo
  • 根据开始列和结束列扩展数据框(速度)

    我有一个pandas DataFrame含有start and end列 加上几个附加列 我想将此数据框扩展为一个时间序列 从start值并结束于end值 但复制我的其他专栏 到目前为止 我想出了以下内容 import pandas as
  • 登录网站并使用 python 请求下载文件

    我有一个带有 HTML 表单的网站 登录后 它会将我带到 start php 站点 然后将我重定向到overview php 我想从该服务器下载文件 当我单击 ZIP 文件的下载链接时 链接后面的地址是 getimage php path
  • 更改 python tkinter canvas 中的线坐标

    我画了一条线tkinter Canvas现在我想移动一端 这可能吗 例如和itemconfig import tkinter tk tkinter Tk canvas tkinter Canvas tk canvas pack line c
  • Python Fabric - 未找到主机。请指定用于连接的(单个)主机字符串:

    如何获取 找不到主机 请指定用于连接的 单个 主机字符串 面料如何解决 def bootstrap host ec2 54 xxx xxx xxx compute 1 amazonaws com env hosts host env use
  • python是带有字符串的运算符行为[重复]

    这个问题在这里已经有答案了 我无法理解以下行为 我正在创建 2 个字符串 并使用 is 运算符来比较它 对于第一种情况 它的工作方式有所不同 对于第二种情况 它按预期工作 当我使用逗号或空格时 它显示是什么原因False与比较is当没有使用
  • 在Python中计算内存碎片

    我有一个长时间运行的进程 不断分配和释放对象 尽管正在释放对象 但 RSS 内存使用量会随着时间的推移而增加 如何计算发生了多少碎片 一种可能性是计算 RSS sum of allocations 并将其作为指标 即便如此 我该如何计算分母
  • 乘以行并按单元格值附加到数据框

    考虑以下数据框 df pd DataFrame X a b c d Y a b d e Z a b c d 1 2 1 3 df 我想在 列中附加数字大于 1 的行 并在该行中的数字减 1 df 最好应该 然后看起来像这样 或者它可能看起来
  • Python 惰性迭代器

    我试图了解迭代器表达式如何以及何时被求值 以下似乎是一个懒惰的表达 g i for i in range 1000 if i 3 i 2 然而 这个在构造上失败了 g line strip for line in open xxx r if
  • 如何使用 paramiko 查看(日志)文件传输进度?

    我正在使用 Paramiko 的 SFTPClient 在主机之间传输文件 我希望我的脚本打印文件传输进度 类似于使用 scp 看到的输出 scp my file user host user host password my file 1
  • 具有屏蔽无效值的 pcolormesh

    我试图将一维数组绘制为 pcolormesh 因此颜色沿 x 轴变化 但每个 x 的 y 轴保持不变 但我的数据有一些错误值 因此我使用屏蔽数组和自定义颜色图 其中屏蔽值设置为蓝色 import numpy as np import mat
  • PyTorch DataLoader 对并行运行的批次使用相同的随机种子

    有一个bug https tanelp github io posts a bug that plagues thousands of open source ml projects 在 PyTorch Numpy 中 当并行加载批次时Da
  • Python]将两个文本文件合并为一个(逐行)[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我是蟒蛇新手 我想做的是将文件 a 和文件 b 逐行合并到一个文件中 例如 text file a a n b n c text fi
  • 如何在单元测试中使用 JSON 发送请求

    我的 Flask 应用程序中有在请求中使用 JSON 的代码 我可以像这样获取 JSON 对象 Request request get json 这一直工作得很好 但是我正在尝试使用 Python 的 unittest 模块创建单元测试 但
  • 在 Django shell 会话期间获取 SQL 查询计数

    有没有办法打印 Django ORM 在 Django shell 会话期间执行的原始 SQL 查询的数量 Django 调试工具栏已经提供了此类信息 例如 5 QUERIES in 5 83MS但如何从 shell 中获取它并不明显 您可
  • 如何为所有用户安装 Anaconda python?

    Anaconda python 发行版 https store continuum io cshop anaconda 非常方便地部署科学计算环境 SCE 并根据需要切换python版本 默认情况下 安装会将 python 定位到 anac

随机推荐

  • matlab 保存不了文件,关于matlab文件无法保存的原因(转)

    mdl文件在6 5里面做的 但是到了7 0里面却打不开 下面就是相关信息 Warning Unable to load model file d MATLAB7 work mdl Run bdclose all set param 0 Ch
  • MCU端 Boot+App设计方案

    概述 本文结合当前主流主机厂的升级规范来介绍不用MCU升级方案及其优缺点 除了本文提及的方案外还有很多其他的升级方案 升级方案的设定要考虑到客户需求以及硬件资源等因素 目前主流的客户需求 要求存储区划分要有Boot段 Config段 App
  • 刷个宇宙题:剑指offerⅡ:02整数系列——二进制加法、03前 n 个数字二进制中 1 的个数

    题目 解题 还算简单的思路 只要注意a i 有可能会溢出 用a at i 避免溢出的情况 还有一些string的api需要多用记忆一下 前 n 个数字二进制中 1 的个数 class Solution public vector
  • Python基础内容四 :适合刚入门的朋友看的教程

    13 Python标准库 Python标准库是随Pthon附带安装的 包含了大量极其有用的模块 我们主要了解下sys和os就够了 13 1 sys模块 sys模块主要是针对与Python解释器相关的变量和方法 不是主机操作系统 sys ar
  • TCP参数参数调优

    前言 TCP 性能的提升不仅考察 TCP 的理论知识 还考察了对于操心系统提供的内核参数的理解与应用 TCP 协议是由操作系统实现 所以操作系统提供了不少调节 TCP 的参数 如何正确有效的使用这些参数 来提高 TCP 性能是一个不那么简单
  • SpringBoot整合微信支付(Native最详细)

    一 微信支付产品介绍 1 付款码支付 用户展示微信钱包内的 付款码 给商家 商家扫描后直接完成支付 适用于线下面对面收银的场景 2 JSAPI支付 线下场所 商户展示一个支付二维码 用户使用微信扫描二维码后 输入需要支付的金额 完成支 付
  • Java容器常见面试题汇总

    目录 1 java 容器都有哪些 2 Collection 和 Collections 有什么区别 3 List Set Map 之间的区别是什么 4 ArrayList 和 LinkedList 的区别是什么 5 说一说ArrayList
  • 基于Linux操作系统下的Shell排序算法

    一 Shell排序算法原理 希尔排序 Shell Sort 是 DLShell 于1959 年提出来的一种排序算法 在这之前排序算法的时间复杂度基本都是 O n2 的 希尔排序算法是突破这个时间复杂度的第一批算法之一 直接插入排序 应该说
  • 牛客网在线编程输入输出

    多行输入 输入第一个数据为接下来要输入的行数 接下来的几行每一行仅有一个数字 const readline require readline const rl readline createInterface input process s
  • Visual Assist X 10.6.1837.0 Cracked

    http download csdn net download dengai 2918948 http download csdn net detail u013127159 6721815
  • 设计模式--访问者模式

    访问者模式 属于行为型模式基本原理 元素类的执行算法随着访问者改变而改变 主要流程 1 创建元素类 内有不同的执行算法 根据不同的访问者选择不同的执行算法 2 创建访问类 实现不同的访问派生类 将自身传入元素类的执行算法 include
  • Linux中opengl库叫什么名字,Linux下的OpenGL——Mesa和GLX简介

    一 什么是Mesa和GLX 众所周知 OpenGL作为图形界的工业标准 其仅仅定义了一组2D和3D图形接口API 而对于窗口管理 IO消息响应等并没有规定 也就是说 OpenGL依赖各平台提供用于渲染的context以及具体实现方式 而各平
  • 时间序列数据的正态性检验

    目录 正态分布 柯尔莫可洛夫 斯米洛夫检验 Kolmogorov Smirnov检验原理 工具箱介绍 Lilliefors检验 雅各 贝拉检验 安得森 达令检验 正态分布 y1中100是 5是 而不是平方 Matlab中legend的用法总
  • 管理数据库用户

    紫色代表一级目录 粉红代表二级目录 蓝色代表三级目录 红色代表关键字 橙色代表说明 管理过程 创建用户 Oracle中 创建用户的语法 授予用户权限的语法 Microsoft SQL Server中 创建用户 账户的语法 把用户添加到数据库
  • Unity 云雾shader

    先上效果图 Shader Demo MainCloud Properties LightIntensity 光照强度 Range 0 75 1 1 MainColor MainCol Color 0 6 0 6 0 6 1 MainTex
  • 什么是反向跟单?反向跟单怎么运作?

    所谓反向跟单 顾名思义 就是依据跟单样本的下单方向 反方向下单交易 一 反向原理 基于交易市场的 二八定律 即 二盈八亏 或 一盈二平七亏 依据市场的交易行为 进行反方向操作 锁定盈利 二 反跟途径 运用计算机技术 搭建一套虚拟交易端软件
  • ChatGPT/GPT4开源“平替”汇总

    寻找那些ChatGPT GPT4开源 平替 们 ChatGPT爆火出圈 国内很多高校 研究机构和企业都发出类似ChatGPT的发布计划 ChatGPT没有开源 复现难度极大 即使到现在GPT3的完全能力也没有任何一个单位或者企业进行了复现
  • openvswitch--OpenFlow 流表设置

    流规则组成 每条流规则由一系列字段组成 分为基本字段 条件字段和动作字段三部分 基本字段包括生效时间duration sec 所属表项table id 优先级priority 处理的数据包数n packets 空闲超时时间idle time
  • Windows 8 Metro Stype App 学习笔记(五)--文件操作

    Windows 8 Metro Style App中文件操作都包含在Windows Storage命名空间中 其中包括StorageFolder StorageFile FileIO等类库 文件对象用StorageFile实现 文件头用St
  • 001 Python数据可视化之折线图

    话说 人是视觉的动物 本文从可视化入手来展现数据 试想一场景 某制造业工厂的CEO想了解两种成品的次品数及次品率 进而进行下一步决策 对于应用 excel在一定程度上可满足 如下图 对于开发 Python 1 2 作为受众度高的语言 3 在