如何在Matplotlib中隐藏柱状图的X轴城市文本标签?
隐藏柱状图X轴指定城市标签的方法
没问题,我来帮你解决隐藏X轴不需要的城市标签的问题,分两种常见场景给你具体方案:
1. 隐藏所有X轴城市标签
如果想把所有城市文本都隐藏掉,直接把你代码里的plt.gca().set_xticklabels(df['city'])替换成下面这行就行:
plt.gca().set_xticklabels([])
或者用Axes对象直接操作(更规范):
ax.set_xticklabels([])
如果连X轴的刻度线也想一起隐藏,可以再加一行:
plt.gca().set_xticks([])
2. 隐藏特定的部分城市标签
如果你只想隐藏某几个不需要的城市(比如例子里的k、j),可以通过生成自定义标签列表来实现。把原来设置X轴标签的代码替换成下面的逻辑:
# 获取排序后的所有城市名称 city_labels = df['city'].tolist() # 定义你要隐藏的城市列表 hidden_cities = ['k', 'j'] # 这里替换成你不需要的城市 # 生成新标签:需要保留的显示原名称,要隐藏的设为空字符串 new_xtick_labels = [label if label not in hidden_cities else '' for label in city_labels] # 设置新的X轴标签 plt.gca().set_xticklabels(new_xtick_labels)
按索引隐藏的变种
如果你想按位置(比如隐藏第0个和第10个标签),可以用枚举来判断:
new_xtick_labels = [label if idx not in [0, 10] else '' for idx, label in enumerate(city_labels)] plt.gca().set_xticklabels(new_xtick_labels)
修改后的完整代码示例
这里给你整合了隐藏特定城市(比如k和j)的完整代码,你可以直接参考:
import numpy as np import matplotlib.pyplot as plt plt.rcParams["figure.figsize"] = (10, 7) colors = ['b', 'g', 'r', 'c', 'm', 'y', 'g'] df = df.sort_values(by=['actual'], ascending=False) ax = df.plot(x="city", y=["actual", "pred"], kind="bar", color = colors, alpha=0.8) plt.legend(["actual", "pred"], fontsize=15) # --- 替换这里的标签设置逻辑 --- city_labels = df['city'].tolist() hidden_cities = ['k', 'j'] new_xtick_labels = [label if label not in hidden_cities else '' for label in city_labels] plt.gca().set_xticklabels(new_xtick_labels) # --- 替换结束 --- plt.suptitle("pred vs actual", fontsize=18) for p in ax.patches: ax.annotate(np.round(p.get_height(),decimals=2), (p.get_x()+p.get_width()/2., p.get_height()), ha='center', va='center', xytext=(0, 10), textcoords='offset points') plt.tight_layout() plt.show()
这样就能精准隐藏你不需要的X轴城市文本标签啦~
内容的提问来源于stack exchange,提问作者ah bon
相关产品推荐
相关产品推荐

