告别沉闷的直方图:绘制高颜值的威尔金森图与麦穗图
在数据可视化世界中我们经常用直方图来描述数据的分布情况但今天我想介绍两种特别而优雅的点状图变体威尔金森点状图和麦穗图。它们像数据世界的点彩派画家用简单的点创造出丰富的信息层次。与直方图相比这种点绘法不仅能够更直观地展示数据分布的细节还能更好地揭示数据之间的关系和模式使得观察者能够从更广阔的视角理解数据集的特点。1. 威尔金森点状图想象一下你有一袋彩色弹珠需要按颜色分类展示。如果只是简单地把所有弹珠倒出来它们会杂乱无章。但如果你为每种颜色准备一个小盒子把相同颜色的弹珠整齐地堆叠在里面这就是威尔金森点状图的基本思想。威尔金森点状图将数据点堆叠在对应的数值区域形成类似直方图的分布展示但保留了每个数据点的个体性。它不是用条形的高度表示频率而是用实际的数据点数量来可视化分布。下面基于matplotlib库封装了一个绘制威尔金森点状图的函数。def wilkinson_dot_plot( data, bins10, dot_size40, dot_spacing0.8, show_statsTrue, random_seed42 ): 创建威尔金森点状图 参数: data: 输入数据一维数组 bins: 分组数量或分组边界 dot_size: 点的大小 dot_spacing: 点之间的垂直间距 random_seed: 随机种子 np.random.seed(random_seed) # 创建图形 fig, ax plt.subplots(figsize(10, 7)) # 计算直方图数据 hist, bin_edges np.histogram(data, binsbins) # 为每个分组创建点 max_count 0 # 记录最大堆叠高度 bin_centers [] # 保存每个分组的中心位置 # 省略... plt.tight_layout() return fig, ax, (bin_edges, hist)威尔金森点状图的核心算法可以分解为几个步骤数据分箱将连续数据分成若干个等宽的区间点位置计算在每个区间内将数据点垂直堆叠避免重叠通过调整点的垂直位置防止重叠同时保持可读性使用起来也简单# 生成示例数据 np.random.seed(42) # 数据集正态分布 data_normal np.random.normal(100, 15, 100) dot_size 200 # 创建威尔金森点状图 fig1, ax1, stats1 wilkinson_dot_plot(data_normal, bins12, dot_sizedot_size) plt.show()2. 麦穗图如果把威尔金森点状图比作整齐堆叠的弹珠那么麦穗图就像是田野中的麦穗——每个数据点都像一颗麦粒精确地生长在自己的位置上展示其实际数值。麦穗图是威尔金森点状图的一种变体它将点放置在其实际数值位置而不是分组中心。这保留了数据的精确性同时通过堆叠避免了重叠。麦穗图的实现与威尔金森点状图类似但有一个关键区别点沿x轴放置在实际数据值位置而不是分组中心。# 封装麦穗图函数 def strip_plot( data, bin_edgesNone, bins10, dot_size40, dot_spacing0.8, jitter_amount0.2, random_seed42, ): 创建麦穗图在威尔金森点状图基础上显示实际值 参数: data: 输入数据一维数组 bin_edges: 可选使用预定义的分组边界 bins: 如果未提供bin_edges则使用此参数创建分组 dot_size: 点的大小 dot_spacing: 点之间的垂直间距 jitter_amount: 水平抖动程度避免重叠 random_seed: 随机种子 np.random.seed(random_seed) # 创建图形 fig, ax plt.subplots(figsize(10, 7)) # 如果没有提供分组边界则计算 if bin_edges is None: hist, bin_edges np.histogram(data, binsbins) else: hist, bin_edges np.histogram(data, binsbin_edges) # 对数据进行排序 sorted_data np.sort(data) # 将数据分配到对应的分组 data_by_bin [] for i in range(len(bin_edges) - 1): lower, upper bin_edges[i], bin_edges[i 1] bin_data sorted_data[(sorted_data lower) (sorted_data upper)] data_by_bin.append(bin_data) # 处理最后一个分组包含最大值 if len(data) 0: last_bin_data sorted_data[sorted_data bin_edges[-2]] if len(data_by_bin) 0: data_by_bin[-1] last_bin_data # 绘制麦穗图 max_points_in_bin 0 # 省略 ... plt.tight_layout() return fig, ax, (bin_edges, data_by_bin)使用起来也简单# 生成示例数据 np.random.seed(42) # 数据集正态分布 data_normal np.random.normal(100, 15, 100) dot_size 200 # 创建的麦穗图 bin_edges 12 fig2, ax2, stats2 strip_plot( data_normal, bin_edgesbin_edges, dot_sizedot_size, jitter_amount0.15 ) plt.show()3. 两种图的应用场景下面模拟一个学生考试成绩分布的分析场景看看上面两种点状图的应用。# 示例学生考试成绩分布分析 print(示例学生考试成绩分布分析) print(- * 40) # 创建模拟的考试成绩数据 np.random.seed(42) exam_scores np.concatenate( [ np.random.normal(65, 8, 45), # 中等水平学生 np.random.normal(85, 6, 30), # 优秀学生 np.random.normal(45, 10, 24), # 需要帮助的学生 ] ) # 过滤掉不合理分数 exam_scores np.clip(exam_scores, 0, 100) print(f学生总数: {len(exam_scores)}) print(f分数范围: {exam_scores.min():.1f} - {exam_scores.max():.1f}) print(f平均分: {exam_scores.mean():.1f}) print(f及格率: {(exam_scores 60).sum() / len(exam_scores) * 100:.1f}%\n) # 使用威尔金森点状图 print(创建威尔金森点状图...) fig1, ax1, stats1 wilkinson_dot_plot( exam_scores, bins[0, 40, 60, 70, 80, 90, 100], ) plt.show() # 使用麦穗图 print(创建麦穗图...) fig2, ax2, stats2 strip_plot( exam_scores, bins[0, 40, 60, 70, 80, 90, 100], jitter_amount0.15, ) plt.show() ## 输出结果 示例学生考试成绩分布分析 ---------------------------------------- 学生总数: 99 分数范围: 25.1 - 94.4 平均分: 65.3 及格率: 63.6% 在学生考试成绩分析这个场景中威尔金森点状图将分数分组成区间如60-70分所有该区间的学生点都堆叠在区间中心清晰地展示了分数段的整体分布形态类似直方图但能看到个体点。麦穗图点在实际分数位置堆叠如65分、68分等既显示了每个学生的具体分数又通过垂直堆叠避免了重叠保留了数据的精确性。总的来说威尔金森点状图看分布形态区间视角麦穗图看具体数值精确视角。

相关新闻

java+vue基于springboot的二手车交易管理系统的设计与实现_at5h2xv5

java+vue基于springboot的二手车交易管理系统的设计与实现_at5h2xv5

目录系统概述技术栈核心功能关键实现细节代码示例(SpringBoot)前端调用示例(Vue Axios)扩展性设计开发技术源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!系统概述 基于SpringBoot和Vue…

2026/5/17 2:46:46 阅读更多 →
交稿前一晚!千笔AI,人气爆表的降AIGC网站

交稿前一晚!千笔AI,人气爆表的降AIGC网站

在AI技术席卷学术写作的今天,越来越多的学生、研究人员和职场人士选择借助AI辅助完成论文、报告和学术材料。然而,随之而来的“AI率超标”问题却成为横亘在学术道路上的隐形障碍——知网、维普、万方等主流查重系统纷纷升级算法,严打AI生成内…

2026/5/17 2:46:45 阅读更多 →
“不坑盒子”:一个Office插件,如何成为教师数字化转型的“轻骑兵”?

“不坑盒子”:一个Office插件,如何成为教师数字化转型的“轻骑兵”?

在轰轰烈烈的教育数字化浪潮中,动辄千万级预算的“智慧校园”平台与宏大的顶层设计常成为焦点。然而,在江苏宿迁一所普通中学的教师办公室里,数学老师李老师只需在Word中轻轻一点,便完成了过去需要耗费半天的手工分班、排座与信息…

2026/7/4 5:08:20 阅读更多 →

最新新闻

深度解析Bottles:如何在Linux上轻松运行Windows游戏和软件

深度解析Bottles:如何在Linux上轻松运行Windows游戏和软件

深度解析Bottles:如何在Linux上轻松运行Windows游戏和软件 【免费下载链接】Bottles Run Windows software and games on Linux 项目地址: https://gitcode.com/gh_mirrors/bo/Bottles 你是否曾经因为某个心爱的Windows游戏或专业软件无法在Linux上运行而感到…

2026/7/5 15:14:30 阅读更多 →
高效技巧怎么用 AI 做表格,搭配 AI 导出鸭一站式搞定表格生成与导出工作

高效技巧怎么用 AI 做表格,搭配 AI 导出鸭一站式搞定表格生成与导出工作

引言 日常办公、数据整理场景里,手工制表、格式转换耗费大量时间,AI工具重塑表格制作流程,AI 导出鸭作为核心辅助工具,打通从生成到导出全流程,下文拆解完整实操体系。 一、项目核心痛点与市场需求 当下职场、学生、自…

2026/7/5 15:14:30 阅读更多 →
oyunfor土区礼品卡购买教程及踩坑记录

oyunfor土区礼品卡购买教程及踩坑记录

前置条件🔮我用的美丽国 chorme浏览器(edge没成功) 可安装翻译插件 招商银行万事达(研究生优选) 网络连接设置 属性里取消勾选ipv6协议(买好再改回来)1.注册账号需🔮 用的QQ邮箱,Gmail邮箱收不到验证码 其他信息正常填写,号码862.…

2026/7/5 15:10:30 阅读更多 →
教师资格证认定

教师资格证认定

前言 认定是获取教师资格证的第三个环节,也是最后一个环节。认定通过之后,即可取得教师资格证。 认定时间和认定条件 认定时间 每年的教师资格认定工作有上半年和下半年两个批次。不同于笔试和面试,教师资格证认定的时间并非全国统一。认定的…

2026/7/5 15:10:29 阅读更多 →
NTP算法实现客户端与服务器时间同步

NTP算法实现客户端与服务器时间同步

基于四时间戳(T1~T4)的NTP级时间同步机制:通过分离 Client→Server 与 Server→Client 传输时间计算延迟时间,通过记录请求发送(T1)、服务端接收(T2)/回复(T3)、客户端接收(T4)四个时间戳,利用对称消除公式 Offset (T…

2026/7/5 15:10:29 阅读更多 →
新e选烤火罩异味[主里料] GB 18401—2010 6.7 判定符合检测标准与测试条件

新e选烤火罩异味[主里料] GB 18401—2010 6.7 判定符合检测标准与测试条件

国标要求:纺织品无异味;恒温密闭环境专业嗅辨。实测结果内里衬料无任何化工、塑胶、胶水异味,嗅辨合格。家用实用优势部分烤火罩外层做除味处理,但内里廉价衬布残留浓烈胶水味,高温烘烤后异味从内部散发。新e选烤火罩里…

2026/7/5 15:08:29 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻