python - 如何调整 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)
解决方案
您可以制作一个空白标签列表,然后用您的标签替换第一个、最后一个和一个中间值。例如,它如何与 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)
推荐阅读
- spring-boot - spring-boot-starter-freemarker 动态循环示例
- javascript - 在后台打开新标签,将注意力集中在当前标签上 - Chrome
- neo4j - 由于 PicklingError,Pyspark 操作未执行
- javascript - 根据我输入的 id 显示自动完成选择
- node.js - sinon mocking GET, POST, PUT and DELETE methods assertions fail everytime. no idea why
- javascript - 设置 laravel 护照的到期时间
- apache - 大规模 301 重定向 - 这是最好的方法?htaccess 或 httpd.conf
- hyperledger-fabric - 在超级账本结构中使用背书策略
- css - 在 RTL 中,数字出现在内容 CSS 之前
- ios - ionic 2 如何从 ios 中的 Cordova 文件传输插件获取 mimeType?