You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python-Plotly绘制各年龄段TOP5器官剂量分组柱状图?

问题

通过辐射剂量模拟得到器官剂量数据,想要用Python-Plotly绘制分组柱状图,展示'0'、'1'、'5'、'10'、'15'这几个年龄段中,每个年龄段剂量前五高的器官,X轴需显示各年龄段对应的这五个高剂量器官。

目前已经实现了单个'0'年龄段的柱状图,代码如下:

import pandas as pd
import plotly.express as px

df = pd.read_csv('data_org_dos.csv')
data = df.set_index('Organ')['0'].nlargest(5)
fig = px.bar(data)
fig.show()

如何把所有年龄段的数据整合到同一幅分组柱状图里?


解决方案

参考思路修改代码后,成功实现目标分组柱状图,完整代码如下:

import pandas as pd
import plotly.graph_objs as go

df = pd.read_csv("data_org_dos.csv")
# 为年龄段列生成带说明的标签
labels = df.columns.map(lambda x: "年龄: "+ x)[1:]

fig = go.Figure() 

# 遍历每个年龄段,添加对应的柱状图轨迹
for idx, age in enumerate(labels):
    # 提取当前年龄段前五高剂量的器官数据
    age_col = age.split()[-1]
    data = df.set_index('Organ')[age_col].nlargest(5).reset_index()
    fig.add_trace(go.Bar(x=data['Organ'], y=data[age_col], name=age))

# 设置坐标轴标题
fig.update_xaxes(title_text='器官')
fig.update_yaxes(title_text='剂量 [mSv]')   
# 调整全局字体大小,提升可读性
fig.update_layout(
    font=dict(
        size=18
    )
)

fig.show()

关键说明

  • 改用plotly.graph_objs的Figure对象,通过循环逐个添加不同年龄段的柱状图轨迹,实现分组展示
  • 对每个年龄段单独筛选前五高剂量的器官,确保每个分组展示的是对应年龄段的高剂量器官
  • 自定义坐标轴标题和字体大小,优化图表的可读性和美观度

内容的提问来源于stack exchange,提问作者ptrber

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 08:45:21