辐射剂量模拟给出了[以下器官剂量:][1]
我想使用Python - Plotly制作一个分组条形图,其中包含每个年龄组列“0”、“1”、“5”、“10”和“15”的五个最高器官剂量值。
X轴应显示每个年龄列中获得最高剂量的五个器官。
我从“0”年龄组的五个最大值开始,并制作了一个条形图:
import pandas as pd
import plotl.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()
如何制作一个分组条形图,将所有年龄“0”、“1”、“5”、“10”和“15”显示在同一个图表中?
按照@Timeless的答案,我可以更改代码来生成我想要的分组条形图:
import pandas as pd
import plotly.graph_objs as go
df = pd.read_csv("data_org_dos.csv")
labels = df.columns.map(lambda x: "Age: "+ x)[1:]
fig = go.Figure()
for idx, age in enumerate(labels):
data = df.set_index('Organ')[age.split()[-1]].nlargest(5).reset_index()
fig.add_trace(go.Bar(x=data['Organ'], y=data[age.split()[-1]], name=age))
fig.update_xaxes(title_text='Organ')
fig.update_yaxes(title_text='E [mSv]')
fig.update_layout(
font=dict(
size=18
)
)
fig.show()
[ see image link][2]
[1]: https://www.dropbox.com/s/qux9v9ubp5cskl6/data_org_dos.csv?dl=0
[2]: https://i.stack.imgur.com/iiEAt.png
1条答案
按热度按时间bd1hkmkf1#
您需要
nlargest
和go.Bar
的 * 组合 *:输出: