#python #pandas #hover #plotly #legend
#python #pandas #наведите курсор #плотная #легенда
Вопрос:
Я ищу, как добавить легенду и сведения о наведении курсора мыши к диаграмме пирамиды населения, используя pandas с столбчатой диаграммой с накоплением, используя данные с длинным форматированием. Мужской набор данных содержит шесть демографических данных, а также женский: Male = [‘TOT_MALE’, ‘WA_MALE’, ‘H_MALE’, ‘BA_MALE’, ‘AA_MALE’, ‘IA_MALE’, ‘NA_MALE’ ] возрастной диапазон 0-100, Male имеет значение из списка выше, и хорошо как женщина, так что каждый месяц данных содержит 606 строк данных на участок. Данные ‘df’ выглядят следующим образом:
PERIOD AGE MALE_PCT FEMALE_PCT MALE FEMALE
19190 10_2011 0 -9.631521e-03 8.877940e-03 WA_MALE WA_FEMALE
19191 10_2011 1 -9.612318e-03 8.898409e-03 WA_MALE WA_FEMALE
19192 10_2011 2 -9.487544e-03 8.789053e-03 WA_MALE WA_FEMALE
19193 10_2011 3 -9.819133e-03 9.074287e-03 WA_MALE WA_FEMALE
19194 10_2011 4 -9.968353e-03 9.223383e-03 WA_MALE WA_FEMALE
...
19795 10_2011 100 -1.6968353e-07 2.45223383e-07 WA_MALE WA_FEMALE
И код:
import plotly
import plotly.express as px
from plotly.subplots import make_subplots
import plotly.graph_objs as go
df_4 = pd.DataFrame()
df_5 = pd.DataFrame()
df = pd.DataFrame()
fig = ''
df_4 = pd.read_csv(f'{pop_data}/census_ten_year_clean_data.csv', index_col=0)
df_4 = df_4[['PERIOD', 'AGE', 'MALE_PCT', 'FEMALE_PCT', 'MALE', 'FEMALE']].copy()
df_4 = df_4[df_4.MALE != 'TOT_MALE'] # removes #total details
df_5 = mask(df_4, 'PERIOD', '10_2011')
df = df_5 # limiting to just one month to get #ploty correct
colors_F = ['#3366CC',] * 101 ['#DC3912',] * 101 ['#FF9900',] * 101
['#109618',] * 101 ['#990099',] * 101 ['#004496',] * 101
colors_M = ['#3366FF',] * 101 ['#DC3900',] * 101 ['#FF9855',] * 101
['#109600',] * 101 ['#990000',] * 101 ['#004400',] * 101
fig = make_subplots(rows=1, cols=2,
subplot_titles=['Male', 'Female'],
shared_yaxes=True,
horizontal_spacing = 0.003
)
fig.add_trace(go.Bar(name='Male',
x=df.MALE_PCT,
y=df['AGE'],
hovertext=df['MALE_PCT'],
orientation='h',
marker_color=colors_M
),
row=1, col=1)
fig.add_trace(go.Bar(name='Female',
x=df.FEMALE_PCT,
y=df['AGE'],
hovertext=df['FEMALE_PCT'],
orientation='h',
marker_color=colors_F
),
row=1, col=2)
fig['layout']['xaxis1'].update(dict(
tickmode = 'auto',
tickvals = df.MALE_PCT))
fig['layout']['xaxis2'].update(dict(
tickmode = 'auto',
tickvals = df.FEMALE_PCT))
fig.update_layout(barmode="stack", width=1200, height=800)
fig.show()
print(df)