#python #seaborn #bar-chart
Вопрос:
Я пытаюсь нарисовать несколько наборов штриховых диаграмм линейных диаграмм из фрейма данных, используя seaborn, как показано ниже (мне уже удалось нарисовать один).:
Здесь вы можете найти фрейм данных, используемый для его создания => >фрейм данных
То, чего я хотел бы достичь, — это такой график (который мне уже удалось создать), но повторяемый для всех возможных семейств продуктов в корзине продуктов speicifc («семейство» — это уровень детализации «корзины продуктов»).
Большое спасибо всем, кто мне поможет. Я пробовал некоторые циклы, но, возможно, я просто делаю это неправильно.
Вот код, который я использовал для построения приведенного выше графика:
#select a family
df_perc2=df_perc.query('family=="WORKWEAR amp; PROTECTIVE CLOTHING"')
#set common axis
fig, ax = plt.subplots()
ax_twin = ax.twinx()
#set boxplot general aspect
fig = plt.gcf()
fig.set_size_inches(30, 10)
sns.set_style("white")
#ship_to_count bars
barplot = sns.barplot(data=df_perc2,
x = 'orders_count',
hue = 'SF_type',
y = 'ship_to_perc',
palette = "Set2",
ax = ax)
#cumulative % line
lineplot = sns.pointplot(data = df_perc2,
x = 'orders_count',
hue = 'SF_type',
y = 'running_perc',
palette = "Set2",
marker ='o',
ax = ax_twin,
legend = False)
#set tick stiles for x and y axis
barplot.set_xticklabels(barplot.get_xmajorticklabels(), fontsize = 18)
barplot.set_yticklabels(barplot.get_yticks().round(2), size = 18)
lineplot.set_yticklabels(lineplot.get_yticks().round(2), size = 18)
#set dynamic title
barplot.set_title('% Ship Tos by # orders for ' ''.join(df_perc2['product_basket'].unique())
' - '
''.join(df_perc2['family'].unique()), fontdict = { 'fontsize': 30}, y = 1.05)
barplot.get_legend().remove()
#set constant line at 90%
plt.axhline(y=0.9, color='g', ls=':', lw=4, label='90th percentile')
lineplot.legend(loc='center right',fontsize='22')