如何用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
相关产品推荐
相关产品推荐

