Нарисуйте несколько наборов штриховых диаграмм линейных диаграмм с помощью seaborn

#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')