Я надеюсь, что существующий ответ соответствует вашим потребностям, но я просто хотел бы отметить, что в заявлении
невозможно разбить разбивку на столбики ставок (поскольку столбец с накоплением находится на фасетированных фигурах и не трассировка
не совсем корректна. Построить сюжетную диаграмму можно с помощью составных гистограмм, если правильно составить ее, используя add_trace()
и go.Bar()
. И это также отвечает вашим вопрос относительно:
Мне интересно, что является наилучшей практикой для создания подзаговоров с использованием Python Plotly. Это использовать плотно. express или стандартный plotly.graph_objects?
Используйте plotly.express
, если вы найдете подход px
, который соответствует вашим потребностям. Как и в вашем случае, когда вы do not
найдете его, создайте свои собственные подсюжеты, используя plotly.graphobjects
.
Ниже пример, который покажет вам один такой возможный подход с использованием набора данных titanic
. Обратите внимание, что имена столбцов не совпадают с вашими, поскольку нет заглавных букв. Суть этого утверждения заключается в том, что вы используете go.Bar()
для каждой трассы и указываете, куда поместить эти трассы, используя аргументы row
и col
в go.Bar()
. Если вы назначите несколько кривых для одного и того же row
и col
, вы получите вложенные графики гистограммы, если указать barmode='stack'
в fig.update_layout(). Using
px.colors.qualitative.Plotly [i] `позволит вам назначать цвета из Стандартный график цветового цикла последовательно.
Сюжет:
Код:
from plotly.subplots import make_subplots
import plotly.graph_objects as go
import plotly.express as px
import pandas as pd
url = "https://raw.github.com/mattdelhey/kaggle-titanic/master/Data/train.csv"
titanic = pd.read_csv(url)
#titanic.info()
train_df=titanic
train_df
# data for fig 1
df1=titanic.groupby(['sex', 'pclass'])['survived'].aggregate('mean').unstack()
# plotly setup for fig
fig = make_subplots(2,1)
fig.add_trace(go.Bar(x=df1.columns.astype('category'), y=df1.loc['female'],
name='female',
marker_color = px.colors.qualitative.Plotly[0]),
row=1, col=1)
fig.add_trace(go.Bar(x=df1.columns.astype('category'), y=df1.loc['male'],
name='male',
marker_color = px.colors.qualitative.Plotly[1]),
row=1, col=1)
# data for plot 2
age = pd.cut(titanic['age'], [0, 18, 80])
df2 = titanic.pivot_table('survived', [age], 'pclass')
groups=['(0, 18]', '(18, 80]']
fig.add_trace(go.Bar(x=df2.columns, y=df2.iloc[0],
name=groups[0],
marker_color = px.colors.qualitative.Plotly[3]),
row=2, col=1)
fig.add_trace(go.Bar(x=df2.columns, y=df2.iloc[1],
name=groups[1],
marker_color = px.colors.qualitative.Plotly[4]),
row=2, col=1)
fig.update_layout(title=dict(text='Titanic survivors by sex and age group'), barmode='stack', xaxis = dict(tickvals= df1.columns))
fig.show()
fig.show()