Документы seaborn утверждают, что порядок
, hue_orderlists из строк, необязательный Order для построения категориальных уровней, в противном случае уровни выводятся из объектов данных.
Суть в том, что Seaborn взаимодействует с объектами из matplotlib. В качестве такового я рекомендую сначала изучить matplotlib, прежде чем углубляться в морскую природу. Функция countplot
ищет активную фигуру, которую вы создали plt.figure
. Аргумент hue
ищет уровни в данных, которые находятся во втором столбце вашего фрейма данных.
Я позволил себе сделать ваш код немного более питонским c:
import pandas as pd
df = pd.DataFrame({'Product_ID': ['20','23', '20','24','24', '24', '24', '24','24', '20'],
'ProductNames': ['Gem','Wil', 'Gem','Wefdem','Wefdem','Wefdem', 'Wefdem', 'Wefdem', 'Wefdem','Gem']})
import matplotlib.pyplot as plt,\
seaborn as sns
order=df["Product_ID"].value_counts().nlargest(10).index
# again the actual dictionary is larger than this, this is just a shorter one of it
product_keys = {"20": "Gem", "23": "Wil", "24": "Wefdem"}
fig, ax = plt.subplots()
sns.countplot(x = "Product_ID", data = df,\
order = order, ax = ax,\
hue = "ProductNames" )
ax.set_title("Most popular IDs", fontsize=40)
ax.set_xlabel("Product IDs", fontsize=30)
ax.set_ylabel("Frequency count", fontsize=30)
ax.axes.tick_params(labelsize=24)
fig.show()