首页 > 解决方案 > 如何调整 Seaborn Barplot 上的自定义 xticklabel 位置?

问题描述

我目前正在使用 seaborn 创建一个基本的条形图。最初,我有 1 到 10 的 xtick 标签:

在此处输入图像描述

但是,我想删除从 1 到 10 的 xtick 标签,并简单地将它们替换为“最低效率、平均和最高效率”。我目前尝试了以下方法:

ax.set(xticklabels=['Least Productive','Average','Most Productive'])

但是,我得到以下信息:

在此处输入图像描述

真的,我只需要最左边的“最低效率”,中间的“平均”和右边的“最高效率”。

我不会总是有精确的值 1 到 10,因为偶尔在我的数据集中我可能会丢失任何这些值,所以我不能将 1 引用到最低生产力,10 到最高生产力等。

先感谢您。

编辑,当前代码原样:

sns.set(style="whitegrid")

f, ax = plt.subplots(figsize=(10,5))

ax = sns.barplot(x='Rank', y='Yld_Vol_Dr', data=df, color=sns.xkcd_rgb["grass green"])

sns.despine()
ax.set(ylim=(min(df.Yld_Vol_Dr)*0.9,max(df.Yld_Vol_Dr)*1.1))
ax.set(xticklabels=['Least Productive','Average','Most Productive'])

plt.xlabel('HD Productivity',fontsize=25)
plt.ylabel('Yield (bu/ac)',fontsize=25)
plt.tick_params(labelsize=15)

标签: pythonmatplotlibseaborn

解决方案


您可以制作一个空白标签列表,然后用您的标签替换第一个、最后一个和一个中间值。例如,它如何与 seaborn 的提示数据集一起使用。

import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style="whitegrid")

df = sns.load_dataset('tips')

f, ax = plt.subplots(figsize=(10,5))
ax = sns.barplot(x='size', y='tip', data=df, color=sns.xkcd_rgb["grass green"])
sns.despine()

n = len(ax.get_xticklabels())
labels = ['' for i in range(n)]
labels[0] = 'Least Productive'
labels[n // 2] = 'Average'
labels[-1] = 'Most Productive'
ax.set(xticklabels=labels)
plt.tick_params(labelsize=15)

稀疏标签绘图示例


推荐阅读