情节单杠比较

Plotly horizontal bar comparizon

所附图表来自 R plotly 包。这是否存在或可以使用 plotly 包在 python 中完成?

您可以在 plotly-python 中创建发散堆叠条,方法是将男性和女性人口的条形图绘制为单独的轨迹,使男性的人口值为负,然后使用自定义数据中的原始值,这样男性人群显示正值。

我遵循了@empet 在他的回答 here 中概述的方法,并修改了类别和 hovertemplate 以适合您的示例。

import numpy as np
import pandas as pd
import plotly.graph_objects as go

d = {'Age': ['0-19','20-29','30-39','40-49','50-59','60-Inf'],
     'Male': [1000,2000,4200,5000,3500,1000],
     'Female': [1000,2500,4000,4800,2000,1000],
}
df = pd.DataFrame(d)

fig = go.Figure()
fig.add_trace(go.Bar(x=-df['Male'].values,
                        y=df['Age'],
                        orientation='h',
                        name='Male',
                        customdata=df['Male'],
                        hovertemplate = "Age: %{y}<br>Pop:%{customdata}<br>Gender:Male<extra></extra>"))
fig.add_trace(go.Bar(x= df['Female'],
                        y =df['Age'],
                        orientation='h',
                        name='Female',
                        hovertemplate="Age: %{y}<br>Pop:%{x}<br>Gender:Female<extra></extra>"))    

fig.update_layout(barmode='relative', 
                  height=400, 
                  width=700, 
                  yaxis_autorange='reversed',
                  bargap=0.01,
                  legend_orientation ='h',
                  legend_x=-0.05, legend_y=1.1
                 )
fig.show()