当前位置: 首页 > article >正文

用Python+Matplotlib分析你的游戏战绩:手把手教你画多组数据对比箱线图

用PythonMatplotlib分析你的游戏战绩手把手教你画多组数据对比箱线图每次游戏结束后看着战绩面板上密密麻麻的数字你是否好奇自己最擅长的英雄究竟是哪个或者想知道在不同时间段的表现稳定性如何箱线图Boxplot正是解决这类问题的利器。它能直观展示数据的分布、离散程度和异常值特别适合对比多组游戏数据。本文将带你用Python的Matplotlib库从游戏CSV文件中提取数据绘制专业级的多组对比箱线图让你一眼看穿自己的游戏表现。1. 准备工作数据获取与环境配置在开始分析前我们需要准备好游戏数据和Python环境。大多数游戏平台都支持导出对战记录为CSV格式通常包含英雄名称、KDA击杀/死亡/助攻、游戏时长等信息。假设我们已经获得了一个名为game_stats.csv的文件结构如下hero,kills,deaths,assists,game_duration Ashe,8,3,12,28 Zed,12,5,4,32 ...接下来配置Python环境。推荐使用Anaconda创建虚拟环境安装必要的库conda create -n game_analysis python3.9 conda activate game_analysis pip install pandas matplotlib numpy2. 数据清洗与预处理原始游戏数据往往需要清洗才能用于分析。我们使用pandas读取CSV并计算KDA比率(击杀助攻)/死亡import pandas as pd # 读取数据 df pd.read_csv(game_stats.csv) # 计算KDA并处理除零错误死亡为0时 df[kda] (df[kills] df[assists]) / df[deaths].replace(0, 1) # 按英雄分组 hero_stats df.groupby(hero)[kda].apply(list).to_dict()常见的数据问题及处理方法问题类型处理方法代码示例缺失值删除或填充df.dropna()极端值Winsorize处理from scipy.stats.mstats import winsorize数据格式类型转换df[column] pd.to_numeric(df[column])提示游戏时长较短的局如10分钟可能数据不具代表性建议过滤df df[df[game_duration] 10]3. 基础箱线图绘制Matplotlib的boxplot()函数是绘制箱线图的核心工具。我们先从最简单的单组数据开始import matplotlib.pyplot as plt import numpy as np # 设置中文显示 plt.rcParams[font.family] SimHei plt.rcParams[axes.unicode_minus] False # 提取前3个英雄的数据 sample_data [hero_stats[k] for k in list(hero_stats.keys())[:3]] labels list(hero_stats.keys())[:3] # 基础箱线图 plt.figure(figsize(10, 6)) plt.boxplot(sample_data, labelslabels) plt.title(英雄KDA对比) plt.ylabel(KDA比率) plt.grid(axisy, linestyle--, alpha0.7) plt.show()箱线图各组成部分含义箱体显示数据的四分位范围Q1到Q3中位线箱体内的横线表示数据的中位数须线通常延伸到1.5倍IQR四分位距范围内的数据异常值超出须线范围的点可能表现特别出色或糟糕的对局4. 高级定制技巧4.1 多组数据对比要对比不同时间段的表现我们可以按日期分组# 假设数据有date列 df[date] pd.to_datetime(df[date]) df[weekday] df[date].dt.day_name() # 按星期几分组 weekday_stats df.groupby(weekday)[kda].apply(list) # 绘制对比图 plt.figure(figsize(12, 7)) box plt.boxplot(weekday_stats.values, labelsweekday_stats.index, patch_artistTrue, medianprops{color: black}) # 自定义颜色 colors [#FF9999, #66B2FF, #99FF99, #FFCC99, #FFD700] for patch, color in zip(box[boxes], colors): patch.set_facecolor(color) plt.title(不同星期几的KDA表现对比) plt.show()4.2 交互式可视化使用mplcursors库添加悬停提示import mplcursors fig, ax plt.subplots(figsize(12, 7)) boxes ax.boxplot(hero_stats.values(), labelshero_stats.keys(), vertFalse, showfliersFalse) cursor mplcursors.cursor(boxes[boxes], hoverTrue) cursor.connect(add) def on_add(sel): hero list(hero_stats.keys())[sel.index] stats hero_stats[hero] sel.annotation.set_text( f{hero}\n f场次: {len(stats)}\n f中位数: {np.median(stats):.2f}\n f最佳: {np.max(stats):.2f} ) plt.show()4.3 参数深度解析boxplot()的关键参数实际应用plt.figure(figsize(14, 8)) plt.boxplot( hero_stats.values(), labelshero_stats.keys(), notchTrue, # 显示中位数置信区间 bootstrap5000, # 提高置信区间精度 whis(5, 95), # 显示5%-95%范围 showmeansTrue, # 显示均值 meanlineTrue, # 均值显示为线而非点 patch_artistTrue, boxpropsdict(facecolorlightblue, alpha0.7), flierpropsdict(markero, markersize8, markerfacecolorred) ) plt.xticks(rotation45) plt.tight_layout()5. 实战分析你的游戏模式表现假设我们想比较在不同游戏模式排位/匹配/大乱斗中的表现差异# 分组计算 mode_stats df.groupby(game_mode)[kda].apply(list) # 绘制水平箱线图 plt.figure(figsize(10, 6)) plt.boxplot( mode_stats.values, labelsmode_stats.index, vertFalse, widths0.6, showfliersTrue, flierpropsdict(markerx, markersize8) ) # 添加参考线 avg_kda df[kda].mean() plt.axvline(avg_kda, colorred, linestyle--, labelf全局平均 {avg_kda:.2f}) plt.title(不同游戏模式的KDA分布) plt.xlabel(KDA比率) plt.legend() plt.show()进阶技巧添加数据分布曲线from scipy.stats import gaussian_kde fig, ax plt.subplots(figsize(12, 8)) boxes ax.boxplot( hero_stats.values(), labelshero_stats.keys(), showfliersFalse, patch_artistTrue ) # 为每个箱线图添加分布曲线 for i, (hero, data) in enumerate(hero_stats.items()): # 计算核密度估计 density gaussian_kde(data) xs np.linspace(min(data), max(data), 200) ys density(xs) # 归一化并偏移到对应位置 ys ys / ys.max() * 0.4 ax.plot(xs, ys i 1, colorblue, alpha0.5) plt.yticks(range(1, len(hero_stats)1), hero_stats.keys()) plt.title(英雄KDA分布对比) plt.tight_layout()

相关文章:

用Python+Matplotlib分析你的游戏战绩:手把手教你画多组数据对比箱线图

用PythonMatplotlib分析你的游戏战绩:手把手教你画多组数据对比箱线图 每次游戏结束后,看着战绩面板上密密麻麻的数字,你是否好奇自己最擅长的英雄究竟是哪个?或者想知道在不同时间段的表现稳定性如何?箱线图&#xf…...

智能体Agent输入DQN算法强化学习控制主动悬架

出DQN算法强化学习控制的主动悬架 质心加速度 悬架动绕度 轮胎位移作为智能体agent的输入 搭建了悬架的空间状态方程 可以运行 效果很好 可以与pid控制进行对比 可带强化学习dqn的Matlab代码 有详细的介绍 可供学习直接上干货。这次用DQN搞了个汽车主动悬架的控制器&#xff0…...

3分钟掌握艾尔登法环存档迁移:EldenRingSaveCopier终极指南

3分钟掌握艾尔登法环存档迁移:EldenRingSaveCopier终极指南 【免费下载链接】EldenRingSaveCopier 项目地址: https://gitcode.com/gh_mirrors/el/EldenRingSaveCopier 艾尔登法环存档管理是每位褪色者必须掌握的技能。面对存档损坏、设备更换或多角色管理的…...

AGI可靠性如何量化?揭秘ISO/IEC 23894合规测试框架的5层验证漏斗

第一章:AGI可靠性如何量化?揭秘ISO/IEC 23894合规测试框架的5层验证漏斗 2026奇点智能技术大会(https://ml-summit.org) AGI系统的可靠性不能依赖主观评估或单一指标,而需依托可复现、可审计、可跨组织比对的标准化验证路径。ISO/IEC 23894:…...

别再死记硬背了!用Python+Matplotlib动态演示5G NR调度中的时隙(Slot)与微时隙(Mini-Slot)

用Python动态可视化5G NR调度中的时隙与微时隙机制 在5G NR系统中,时隙(Slot)和微时隙(Mini-Slot)的调度机制是理解无线资源分配的关键。但对于许多开发者而言,协议文档中抽象的时间单位描述往往难以形成直…...

【最后的AGI并跑窗口】:2024–2026是决定未来十年技术主导权的关键三年——基于52项国家级AI战略文件、137家实验室年报与21次闭门听证会的独家研判

第一章:AGI研发的国际竞争格局 2026奇点智能技术大会(https://ml-summit.org) 全球通用人工智能(AGI)研发已进入国家战略竞速阶段,美、中、欧、日、韩等主要经济体正通过政策投入、算力基建、基础模型生态与人才计划构建多维竞争…...

PTPX功耗分析模式怎么选?Averaged vs. Time-Based模式深度对比与选型指南

PTPX功耗分析模式实战选型:从原理到决策的完整指南 芯片设计就像一场精心策划的能源管理艺术展,而PTPX则是我们手中那支精准的画笔。当设计进入纳米级工艺节点,功耗分析不再是锦上添花,而是决定芯片成败的关键环节。面对Averaged…...

VS Code Mermaid插件深度解析:技术文档图表渲染的架构内幕

VS Code Mermaid插件深度解析:技术文档图表渲染的架构内幕 【免费下载链接】vscode-markdown-mermaid Adds Mermaid diagram and flowchart support to VS Codes builtin markdown preview 项目地址: https://gitcode.com/gh_mirrors/vs/vscode-markdown-mermaid …...

前端可视化图表库选型

前端可视化图表库选型指南 在数据驱动的时代,前端可视化图表库成为开发者的重要工具。无论是展示业务数据、分析用户行为,还是构建交互式报表,选择合适的图表库直接影响开发效率和用户体验。面对众多开源和商业化的图表库,如何根…...

从仿真结果到发表级图表:手把手教你用Lumerical脚本做数据可视化

从仿真结果到发表级图表:手把手教你用Lumerical脚本做数据可视化 在光学仿真领域,Lumerical FDTD解决方案因其强大的计算能力和灵活的脚本控制而广受研究者青睐。然而,许多用户在完成仿真后常常面临一个共同挑战:如何将原始的仿真…...

AGI伦理对齐失效的3个隐蔽信号,2026奇点大会治理框架中已强制嵌入监测阈值

第一章:2026奇点智能技术大会:AGI的治理框架 2026奇点智能技术大会(https://ml-summit.org) 全球首个AGI治理白皮书发布 在2026奇点智能技术大会上,联合国教科文组织与全球AI治理联盟(GAIA Council)联合发布了《通用…...

PSIM仿真实战:反激电源从理论到实现的5个关键步骤(附避坑指南)

PSIM仿真实战:反激电源从理论到实现的5个关键步骤(附避坑指南) 反激电源作为开关电源中的经典拓扑,凭借其结构简单、成本低廉的优势,在中小功率场景中占据重要地位。但纸上得来终觉浅,许多工程师在将理论转…...

点云全局配准实战——Go-ICP从零实现与PCL集成优化

1. Go-ICP算法与点云配准基础 刚接触三维点云处理时,第一次听说"配准"这个词还以为是什么高深莫测的黑科技。其实简单来说,点云配准就是把不同视角扫描得到的点云数据对齐到同一个坐标系的过程。想象你拿着手机绕着物体拍了一圈照片&#xff…...

p5.js Web Editor开发环境配置与部署问题终极解决方案

p5.js Web Editor开发环境配置与部署问题终极解决方案 【免费下载链接】p5.js-web-editor The p5.js Editor is a website for creating p5.js sketches, with a focus on making coding accessible and inclusive for artists, designers, educators, beginners, and anyone e…...

告别接线恐惧!用STM32CubeMX+Keil5快速搞定Ra-01S LoRa模块数据收发(附完整工程)

STM32CubeMXKeil5极速开发指南:Ra-01S LoRa模块数据收发实战 在物联网设备爆发式增长的今天,LoRa技术凭借其远距离、低功耗的特性成为LPWAN领域的重要解决方案。而作为嵌入式开发者,如何快速实现LoRa模块与STM32的集成,往往决定着…...

如何快速掌握Path of Building:流放之路离线构建规划终极指南

如何快速掌握Path of Building:流放之路离线构建规划终极指南 【免费下载链接】PathOfBuilding Offline build planner for Path of Exile. 项目地址: https://gitcode.com/GitHub_Trending/pa/PathOfBuilding Path of Building是《流放之路》玩家必备的离线…...

雀魂AI助手Akagi:从入门到精通的终极使用指南

雀魂AI助手Akagi:从入门到精通的终极使用指南 【免费下载链接】Akagi 支持雀魂、天鳳、麻雀一番街、天月麻將,能夠使用自定義的AI模型實時分析對局並給出建議,內建Mortal AI作為示例。 Supports Majsoul, Tenhou, Riichi City, Amatsuki, wit…...

【AGI安全治理白皮书级指南】:20年AI伦理专家亲授7大风险红线与实时拦截框架

第一章:AGI安全治理的范式跃迁 2026奇点智能技术大会(https://ml-summit.org) 传统AI治理框架建立在“可控性假设”之上——即系统行为可被训练目标、监督信号与边界约束所充分引导。而通用人工智能(AGI)的涌现能力、目标内化机制与跨域自主…...

如何永久保存微信聊天记录:留痕工具的终极解决方案

如何永久保存微信聊天记录:留痕工具的终极解决方案 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMs…...

vuegg常见问题解决方案:从安装配置到使用技巧的完整FAQ

vuegg常见问题解决方案:从安装配置到使用技巧的完整FAQ 【免费下载链接】vuegg :hatching_chick: vue GUI generator 项目地址: https://gitcode.com/gh_mirrors/vu/vuegg vuegg是一款高效的Vue GUI生成器,能够帮助开发者通过可视化界面快速构建V…...

Afilmory多存储适配器架构:支持S3、GitHub、Eagle等8种存储源

Afilmory多存储适配器架构:支持S3、GitHub、Eagle等8种存储源 【免费下载链接】afilmory Modern photo gallery for photographers, with S3/GitHub sync, EXIF details, maps, and a WebGL viewer. 项目地址: https://gitcode.com/gh_mirrors/iris71/afilmory …...

ABTestingGateway扩展开发教程:如何添加新的自定义分流方式

ABTestingGateway扩展开发教程:如何添加新的自定义分流方式 【免费下载链接】ABTestingGateway 项目地址: https://gitcode.com/gh_mirrors/ab/ABTestingGateway ABTestingGateway是一款基于Nginx-Lua的动态分流系统,通过灵活的策略配置实现请求…...

为什么选择Etar-Calendar:5大理由让你爱上这款隐私友好的日历工具

为什么选择Etar-Calendar:5大理由让你爱上这款隐私友好的日历工具 【免费下载链接】Etar-Calendar Android open source calendar 项目地址: https://gitcode.com/gh_mirrors/et/Etar-Calendar Etar-Calendar是一款专为Android用户打造的开源日历应用&#x…...

Sloth 插件系统详解:如何自定义 SLI 和扩展功能

Sloth 插件系统详解:如何自定义 SLI 和扩展功能 【免费下载链接】sloth 🦥 Easy and simple Prometheus SLO (service level objectives) generator 项目地址: https://gitcode.com/gh_mirrors/slo/sloth Sloth 是一款简单易用的 Prometheus SLO&…...

Time-LLM社区生态:从NeuralForecast到PyPOTS的集成之路

Time-LLM社区生态:从NeuralForecast到PyPOTS的集成之路 【免费下载链接】Time-LLM [ICLR 2024] Official implementation of " 🦙 Time-LLM: Time Series Forecasting by Reprogramming Large Language Models" 项目地址: https://gitcode.c…...

PyQuery vs BeautifulSoup:哪个才是Python网页爬虫的最佳选择?

PyQuery vs BeautifulSoup:哪个才是Python网页爬虫的最佳选择? 【免费下载链接】pyquery A jquery-like library for python 项目地址: https://gitcode.com/gh_mirrors/py/pyquery 在Python网页爬虫领域,选择合适的解析库往往决定了开…...

ALNS算法调参实战:如何让Python版VRPTW求解器效率提升50%?

ALNS算法调参实战:如何让Python版VRPTW求解器效率提升50%? 在物流优化领域,带时间窗的车辆路径问题(VRPTW)一直是算法工程师面临的经典挑战。当基础版本的ALNS算法已经能够跑通业务流程,但面对真实业务场景…...

Windows上安装Android应用的终极指南:APK Installer完整教程

Windows上安装Android应用的终极指南:APK Installer完整教程 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 在Windows电脑上直接安装Android应用曾经是件复…...

Node-Cache 测试策略与覆盖率:确保缓存可靠性的完整方法

Node-Cache 测试策略与覆盖率:确保缓存可靠性的完整方法 【免费下载链接】node-cache a node internal (in-memory) caching module 项目地址: https://gitcode.com/gh_mirrors/no/node-cache Node-Cache 作为一款轻量级的内存缓存模块,其可靠性直…...

Advanced Tables 开发者指南:理解插件架构与扩展开发

Advanced Tables 开发者指南:理解插件架构与扩展开发 【免费下载链接】advanced-tables-obsidian Improved table navigation, formatting, and manipulation in Obsidian.md 项目地址: https://gitcode.com/gh_mirrors/ad/advanced-tables-obsidian Advance…...