比较(五)利用python绘制棒棒糖图

news2024/11/18 16:32:55

比较(五)利用python绘制棒棒糖图

棒棒糖图(Lollipop plot)简介

1

棒棒糖图实际上是修饰后的条形图。当在处理大量的值,并且当这些值都很高时,棒棒糖图就很有用。

快速绘制

  1. 基于matplotlib

    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    
    # 自定义数据
    df = pd.DataFrame({'group':list(map(chr, range(65, 85))), 'values':np.random.uniform(size=20) })
    
    # 按值重新排序
    ordered_df = df.sort_values(by='values')
    my_range=range(1,len(df.index)+1)
    
    # 利用stem(茎叶图)快速绘制
    plt.stem(ordered_df['values'])
    plt.xticks( my_range, ordered_df['group'])
    
    plt.show()
    

    2

定制多样化的棒棒糖图

自定义棒棒糖图一般是结合使用场景对相关参数进行修改,并辅以其他的绘图知识。参数信息可以通过官网进行查看,其他的绘图知识则更多来源于实战经验,大家不妨将接下来的绘图作为一种学习经验,以便于日后总结。

matplotlib主要利用stem绘制棒棒糖图,可以通过matplotlib.pyplot.stem了解更多用法

  1. 修改参数

    import pandas as pd
    import matplotlib as mpl
    import matplotlib.pyplot as plt
    import numpy as np
    
    plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
    
    # 自定义数据
    values = np.random.uniform(size=50)
    
    # 初始化布局
    fig = plt.figure(figsize=(12,6))
    
    # 隐藏标记
    plt.subplot(2, 3, 1) 
    plt.stem(values, markerfmt=' ', bottom=0.5)
    plt.title('隐藏标记')
    
    # 隐藏基线
    plt.subplot(2, 3, 2) 
    plt.stem(values, basefmt=" ")
    plt.title('隐藏基线')
    
    # 自定义基线位置
    plt.subplot(2, 3, 3) 
    plt.stem(values, markerfmt=' ', bottom=0.5)
    plt.title('自定义基线位置')
    
    
    # 通过获取stem返回值获取(markers, stemlines, baseline),并进行自定义操作
    # 获取markers并自定义标记
    plt.subplot(2, 3, 4) 
    (markers, stemlines, baseline) = plt.stem(values)
    plt.setp(markers, marker='D', markersize=10, markeredgecolor="orange", markeredgewidth=2)
    plt.title('获取markers并自定义标记')
    
    # 获取baseline并自定义基线
    plt.subplot(2, 3, 5) 
    (markers, stemlines, baseline) = plt.stem(values)
    plt.setp(baseline, linestyle="-", color="grey", linewidth=6)
    plt.title('获取baseline并自定义基线')
    
    # 获取baseline并自定义茎叶
    plt.subplot(2, 3, 6) 
    (markers, stemlines, baseline) = plt.stem(values)
    plt.setp(stemlines, linestyle="-", color="olive", linewidth=0.5 )
    plt.title('获取baseline并自定义茎叶')
    
    
    plt.tight_layout()
    plt.show()
    

    3

  2. 水平棒棒糖图

    import pandas as pd
    import matplotlib as mpl
    import matplotlib.pyplot as plt
    import numpy as np
    
    plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
    
    # 自定义数据
    df = pd.DataFrame({'group':list(map(chr, range(65, 85))), 'values':np.random.uniform(size=20) })
    
    # 按值重新排序
    ordered_df = df.sort_values(by='values')
    my_range=range(1,len(df.index)+1)
    
    # 自定义需要重点突出的数据
    my_color=np.where(ordered_df ['group']=='B', 'orange', 'skyblue')
    my_size=np.where(ordered_df ['group']=='B', 70, 30)
    
    
    # 初始化布局
    fig = plt.figure(figsize=(12,4))
    
    
    # 水平棒棒糖图
    plt.subplot(1, 2, 1) 
    plt.hlines(y=my_range, xmin=0, xmax=ordered_df['values'], color='skyblue')
    plt.plot(ordered_df['values'], my_range, "o")
    plt.yticks(my_range, ordered_df['group'])
    plt.title('水平棒棒糖图')
    
    # 水平棒棒糖图-Highlight
    plt.subplot(1, 2, 2) 
    plt.hlines(y=my_range, xmin=0, xmax=ordered_df['values'], color=my_color, alpha=0.4)
    plt.scatter(ordered_df['values'], my_range, color=my_color, s=my_size, alpha=1)
    plt.yticks(my_range, ordered_df['group'])
    plt.title('水平棒棒糖图-Highlight')
    
    
    plt.show()
    

    4

  3. 分组棒棒糖图

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
     
    # 自定义数据
    value1=np.random.uniform(size=20)
    value2=value1+np.random.uniform(size=20)/4
    df = pd.DataFrame({'group':list(map(chr, range(65, 85))), 'value1':value1 , 'value2':value2 })
     
    # 重新排序
    ordered_df = df.sort_values(by='value1')
    my_range=range(1,len(df.index)+1)
     
    # 绘制水平棒棒糖图
    plt.hlines(y=my_range, xmin=ordered_df['value1'], xmax=ordered_df['value2'], color='grey', alpha=0.4)
    plt.scatter(ordered_df['value1'], my_range, color='skyblue', alpha=1, label='value1')
    plt.scatter(ordered_df['value2'], my_range, color='green', alpha=0.4 , label='value2')
    plt.legend()
     
    # 标题、轴标签
    plt.yticks(my_range, ordered_df['group'])
    plt.title("Comparison of the value 1 and the value 2", loc='left')
    plt.xlabel('Value of the variables')
    plt.ylabel('Group')
    
    plt.show()
    

    5

  4. 颜色对比棒棒糖图

    import matplotlib.pyplot as plt
    import numpy as np
    import seaborn as sns
     
    # 自定义数据
    x = np.linspace(0, 2*np.pi, 100)
    y = np.sin(x) + np.random.uniform(size=len(x)) - 0.2
     
    # 自定义颜色:正值为橘色
    my_color = np.where(y>=0, 'orange', 'skyblue')
     
    # 绘制棒棒糖图
    plt.vlines(x=x, ymin=0, ymax=y, color=my_color, alpha=0.4)
    plt.scatter(x, y, color=my_color, s=1, alpha=1)
     
    # 标题、轴标签
    plt.title("Evolution of the value of ...", loc='left')
    plt.xlabel('Value of the variable')
    plt.ylabel('Group')
    
    plt.show()
    

    6

总结

以上通过matplotlib的stem快速绘制棒棒糖图,也可以利用matplotlib的vlines(垂直线)+scatter(散点)构造各种各样的棒棒糖图。

共勉~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1882428.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于单片机的 LED 花样照明时钟设计

摘要 : 本设计是基于单片机的 LED 花样照明 , 并附加时钟设计 . 单片机也叫微控制器 ( Micro Control Unit, 简称 MCU ), 因其价格低廉 , 功能强大 , 在实际应用中得到广泛认可 . 本设计…

基于单片机的 LED 照明灯智能调光系统设计

摘  要: 社会经济的不断发展,推动了智能化生活的进程,智能调光技术开始广泛应用在生活中,人们也逐渐提高了灯光亮灯率等的要求。基于此,笔者主要设计了基于单片机的 LED 照明灯智能调光系统,希望能够为相关…

remix测试文件测试智能合约

remix内其实也是可以通过编写测试文件来测试智能合约的,需要使用插件自动生成框架以及测试结果。本文介绍一个简单的HelloWorld合约来讲解 安装插件多重检测: (solidity unit testing) 编译部署HelloWorld合约 // SPDX-License-Identifier: MIT pragma solidity ^0.8.0;c…

喜报 | 极限科技获得北京市“创新型”中小企业资格认证

2024年6月20日,北京市经济和信息化局正式发布《关于对2024年度4月份北京市创新型中小企业名单进行公告的通知》,极限数据(北京)科技有限公司凭借其出色的创新能力和卓越的企业实力,成功获得“北京市创新型中小企业”的…

【SpringBoot Web框架实战教程】06 SpringBoot 整合 Druid

不积跬步,无以至千里;不积小流,无以成江海。大家好,我是闲鹤,微信:xxh_1459,十多年开发、架构经验,先后在华为、迅雷服役过,也在高校从事教学3年;目前已创业了…

wordpress 付费主题modown分享,可实现资源付费

该主题下载地址 下载地址 简介 Modown是基于Erphpdown 会员下载插件开发的付费下载资源、付费下载源码、收费附件下载、付费阅读查看隐藏内容、团购下载的WordPress主题,一款针对收费付费下载资源/付费查看内容/付费阅读/付费视频/VIP会员免费下载查看/虚拟资源售…

第二证券:股票型ETF持续“吸金” 上半年净流入逾4000亿元

2024年上半年行情收官,A股盈余板块领涨商场,银行指数大涨逾17%,居首;煤炭、公用事业两大职业指数均涨超10%。综合板块跌幅最大,上半年累计跌幅超33%;计算机、商贸零售、社会服务等指数均跌超20%。 在股票型…

周报0624-0701--输入CMP数据的准备

一、代码理解 目的:设计思路(根据) 【主程序】多进程,linux,tensorflow 随机生成速度模型的显示颜色,位置,大小 训练的多进程安排 创建目录、环境变量,来存储CMP地震数据 定义变量&…

六西格玛培训引领久立特材品质新高度,行业领军再升级

久立特材六西格玛管理项目于6月27 日启动。久立特材作为行业内的领军企业,此次引入六西格玛管理法,旨在进一步提升企业运营效率和产品质量,实现持续改进和卓越运营。 久立特材的高层领导与张驰咨询的资深顾问朱老师共同出席项目启动仪式&am…

DETRs Beat YOLOs on Real-time Object Detection论文翻译

cvpr 2024 论文名称 DETRs在实时目标检测上击败YOLO 地址 https://arxiv.longhoe.net/abs/2304.08069 代码 https://github.com/lyuwenyu/RT-DETR 目录 摘要 1介绍 2.相关工作 2.1实时目标探测器 2.2.端到端物体探测器 3.检测器的端到端速度 3.1.NMS分析 3.2.端到端速度…

百事可乐推出具有视频屏幕和人工智能技术的智能罐头

在最近于法国戛纳举行的国际创意节上,百事公司推出了创新的智能罐头。这些罐头不同于传统产品,它们采用了环绕式3D屏幕,能够展示高清视频内容,为品牌宣传和促销带来了全新的视角。经过两年多的精心研发,这些智能罐成为…

【数据结构与算法】探索数组在堆数据结构中的妙用:从原理到实现

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《数据结构与算法》 期待您的关注 ​​ 目录 一、引言 二、堆的基本概念 🍃堆的特性 🍃堆的分类 三、…

Python Tkinter:开发一款文件加密解密小工具

在这个信息泄露风险日益增加的时代,使用文件加密工具对于保护个人隐私和企业机密至关重要。 本文介绍了一款小工具——encryptDecrypt,它不仅提供了一个易于使用的图形界面,简化了加密和解密过程,还确保了数据的安全性&#xff0c…

国产压缩包工具——JlmPackCore SDK说明(一)

一、什么是JlmPackCore SDK (1)自主可控 JlmPackCore是一套基于我国自主知识产权的核心算法发明专利——杰林码(详系请参考《杰林码原理及应用》一书,也可以参考后续发表的相关论文),其中一篇会议论文&…

完全入门C语言

1.C语言 C语言是一门通用的计算机编程语言,广泛应用于底层开发。其设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。有良好的跨平台的特性。 同时C语言还是面向过程的编程语言,…

汇编基础语法

指令格式 1、立即数 一个常数,该常数必须对应8位位图,即一个8位的常数通过循环右移偶数位得到该数,该数位合法立即数 在指令中表示方法:#数字,例如:#100 快速判定是否是合法立即数: 首先将这…

一款可以编辑SVG矢量图形的方法(以桑基图为例)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、svg矢量图片在线绘制网站二、保存SVG格式图片二、修改SVG图片中的字体大小一、svg矢量图片在线绘制网站 提示:有些图不想用代码出图时,可以采用这个网站,无需注册,无VIP: 网站地址https…

FFmpeg视频处理工具安装使用

一、前言 FFmpeg是流行的开源视频处理工具,用于转码、合并、编辑等。以下是安装和使用方法: 二、步骤 1.下载 1.1 ffmpeg下载 官网下载地址 wget https://www.ffmpeg.org/releases/ffmpeg-6.1.1.tar.xz1.2 nasm下载 https://www.nasm.us/pub/nasm/…

桥感应加热主电路拓扑结构及控制原

1 桥感应加热主电路拓扑结构及控制原理 1.1 主电路拓扑 本文所述中频感应加热电源采用交—直—交的变频原理,三相50Hz的正弦交流输入电压经过整流滤波为540V平滑直流电压,再经逆变器将直流电压变成不同频率的交流电压供负载使用。本文采用半桥串联谐振…