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

比较(五)利用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 npplt.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 npplt.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.mzph.cn/web/37600.shtml

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

相关文章

【前端环境1】安装nvm

【前端环境1】安装nvm 写在最前面一、下载nvm二、安装教程三、验证nvm安装 🌈你好呀!我是 是Yu欸 🌌 2024每日百字篆刻时光,感谢你的陪伴与支持 ~ 🚀 欢迎一起踏上探险之旅,挖掘无限可能,共同成…

狗都能看懂的Reinforcement Learning简介

文章目录 一、什么是强化学习二、强化学习的应用 一、什么是强化学习 强化学习的流程可以用上面这张图来说明:智能体(Agent)对环境进行观测,然后根据观测结果(Observation / State)采取相应的动作&#xff…

实现Ubuntu计划任务的反弹shell

一、实验环境 Ubuntu:IP地址:192.168.223.156 Kali : IP地址:192.168.223.152 二、编写crontab计划任务 在Ubuntu的系统中使用crontab -e命令编写计划任务,如下所示: 作用:是将一个交互式的bash …

混合云管道的未来:集成 MinIO、Tailscale 和 GitHub Actions

数据处理是现代软件开发的基本实践。它使团队能够自动收集、处理和存储数据,确保高质量的数据和高效的处理。 在本文中,我们将探讨如何建立一个全面的数据处理管道,重点介绍如何使用 Tailscale GitHub Action 进行安全网络。此设置还将包含 …

植物大战僵尸杂交版手机下载与安装全攻略

植物大战僵尸杂交版是一款深受玩家喜爱的策略冒险游戏,以其丰富的植物种类、多样的关卡设计和趣味的玩法著称。本文将为您提供详细的下载与安装教程,帮助您快速上手,享受游戏带来的乐趣。 游戏简介 植物大战僵尸杂交版在传统玩法的基础上&a…

【机器学习】语音转文字 - FunASR 的应用与实践(speech to text)

本文将介绍 FunASR,一个多功能语音识别模型,包括其特点、使用方法以及在实际应用中的表现。我们将通过一个简单的示例来展示如何使用 FunASR 将语音转换为文字,并探讨其在语音识别领域的应用前景。 一、引言 随着人工智能技术的不断发展&am…

linux的安全技术和防火墙

一、安全技术 1.入侵检测系统:特点式不阻断网络访问,主要式提供报警和事后监督,不主动介入,默默的看着你(相当于360安全卫士) 2.入侵防御系统:透明模式工作,对数据包,网…

平价高性价比蓝牙耳机有哪些?盘点好用平价的蓝牙耳机推荐

在当今快节奏的生活中,蓝牙耳机已经成为人们日常生活中不可或缺的配件,它们不仅让我们可以在行走、工作或者锻炼时享受音乐,还提供了便利的通话功能。然而,市面上蓝牙耳机种类繁多,价格相差甚远,大家往往难…

走进开源企业 | 湖南大学OpenHarmony技术实训活动在开鸿智谷顺利举办!

6月24日-6月26日,2024开放原子校源行之湖南大学信息科学与工程学院师生走进开源企业实训交流活动顺利落下帷幕。湖南大学信息科学与工程学院的师生代表团一行90人参与了湖南开鸿智谷数字产业有限公司(以下简称“开鸿智谷”)与母公司拓维信息系…

HEC-HMS水文模型教程

原文链接:HEC-HMS水文模型教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247607904&idx5&sn1a210328a3fc8f941b433674d8fe2c85&chksmfa826787cdf5ee91d01b6981ebd89deac3e350d747d0fec45ce2ef75d7cb8009341c6f55114d&token90645021…

vue项目手机录音

手机实现录音功能&#xff0c;安卓和苹果都可。功能&#xff0c;点击开始录制录音后&#xff0c;随时可以停止录音&#xff0c;如果不点击停止最多录制15秒。 页面结构 <!--音频--> <div class"audio-box"><audio id"audioPlayer"controlsc…

修改element-ui日期下拉框datetimePicker的背景色样式

如图&#xff1a; 1、修改背景色 .el-date-picker.has-sidebar.has-time { background: #04308D; color: #fff; border: 1px solid #326AFF } .el-date-picker__header-label { color: #ffffff; } .el-date-table th { color: #fff; } .el-icon-d-arrow-left:before { color: …

Postgres14.4(Docker安装)

Postgres14.4&#xff08;Docker安装&#xff09; 一&#xff0c;Docker拉取镜像 docker pull postgres:14.4 #检查镜像是否拉取成功 docker images | grep postgres二&#xff0c;新建挂载目录&#xff0c;并运行容器 mkdir -p /data/postgre/data chmod 777 /data/postgre…

AQS同步队列、条件队列源码解析

AQS详解 前言AQS几个重要的内部属性字段内部类 Node同步队列 | 阻塞队列等待队列 | 条件队列 重要方法执行链同步队列的获取、阻塞、唤醒加锁代码流程解锁 条件队列的获取、阻塞、唤醒大体流程 调用await()方法1. 将节点加入到条件队列2. 完全释放独占锁3. 等待进入阻塞队列4. …

小程序安卓手机点击uni-data-select 下拉框选择器会出现蓝色阴影

解决方法&#xff1a;在导入的包中找到uni-data-select.vue&#xff0c;接着找到.uni-stat__select样式&#xff0c;把cursor: pointer去掉。 如果出现穿透问题&#xff0c;uni-select__selector的z-index加高&#xff0c;默认是2。

zdppy_api+vue3+antd开发前后端分离的预加载卡片实战案例

后端代码 import api import upload import timesave_dir "uploads"async def rand_content(request):key api.req.get_query(request, "key")time.sleep(0.3)return api.resp.success(f"{key} " * 100)app api.Api(routes[api.resp.get(&qu…

UnityUGUI之二 CameraTargetTexture

在我们需要将3D物体呈现在2D视角时就可以使用TargetTexture&#xff0c;若想只显示3D物体则需改变背景颜色&#xff0c;并且得再增加一个相机

智慧城市新利器:免费可视化工具助力高效管理

在智慧城市的建设中&#xff0c;实现高效的统筹管理是至关重要的。通过免费可视化工具“山海鲸可视化”&#xff0c;这一目标可以轻松达成。山海鲸可视化是一款免费可视化工具&#xff0c;具备二三维融合、易用性、安全性以及高质量画面渲染等特色&#xff0c;是制作智慧城市可…

数据结构—选择题

01-数据结构—判断题 71.在数据结构中&#xff0c;从逻辑上可以把数据结构分为&#xff08; &#xff09;。 A. 动态结构和静态结构 B. 紧凑结构和非紧凑结构 C. 线性结构和非线性结构 D. 内部结构和外部结构 答案&#xff1a;C 72.当输入规模为n时&#xff0c;下列算法…

如何获得更高质量的回答-chatgpt

在与技术助手如ChatGPT进行交互时&#xff0c;提问的方式直接影响到你获得的答案质量。以下是几个关键的提问技巧&#xff0c;可以帮助你在与ChatGPT的互动中获得更有效的回答&#xff1a; 1. 清晰明了的问题 技巧&#xff1a;确保问题清晰明了&#xff0c;避免含糊不清或模糊的…