我有一个名为general_stats的数据框,其中包含有关 YouTube channel 的信息,例如标题、订阅者数量等。 我想使用seaborn 在条形图中绘制 channel 名称与订阅者数量的关系。但是当我尝试按子数量对条形进行排序时,它们会被排序,但 y 轴标签保持不变。
这是订购前的:
fprop = fm.FontProperties(fname='FontsKR/NotoSansCJKtc-Regular.otf')
names = general_stats['Channel_name']
subs = general_stats['Subscribers_Count']
fig = sns.barplot(x=subs, y=names, palette ='Blues_r').set_yticklabels(labels =
names,fontproperties=fprop, fontsize=12)
fig ;
这给了我这个结果:
这是订购后的:
fprop = fm.FontProperties(fname='FontsKR/NotoSansCJKtc-Regular.otf')
names = general_stats['Channel_name']
subs = general_stats['Subscribers_Count']
fig = sns.barplot(x=subs, y=names, palette ='Blues_r', order=
general_stats.sort_values('Subscribers_Count',
ascending=False).Channel_name).set_yticklabels(labels = names,fontproperties=fprop,
fontsize=12)
fig;
它给了我这个情节:
如您所见,条形已排序,但 y 轴标签保持不变。我怎样才能在不订购数据框本身的情况下用条形图来订购它们? 我必须自己设置 ytick 标签,这样我才能显示中文/韩文/日文字符。也许是因为我在订购条形后设置了 yticklabels ?我怎样才能绕过这个,因为我确实需要我正在使用的字体!
最佳答案
是的,发生这种情况是因为您在对条形进行排序后设置了 y 刻度标签,因此您还需要在那里使用排序后的名称。试试这个:
fprop = fm.FontProperties(fname='FontsKR/NotoSansCJKtc-Regular.otf')
names = general_stats['Channel_name']
subs = general_stats['Subscribers_Count']
names_ordered = general_stats.sort_values('Subscribers_Count',
ascending=False).Channel_name
ax = sns.barplot(x=subs, y=names, palette='Blues_r',
order=names_ordered)
ax.set_yticklabels(labels=names_ordered, fontproperties=fprop, fontsize=12)
关于python - Y 轴标签不像seaborn 中的条形图那样排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72238106/