Python水平条形图自定义设置求助:高亮最高值条形+调整刻度布局
解决方案
以下是修改后的代码,实现了你需要的两个需求:将最高数值的条形设为红色,同时把y轴刻度移到右侧对齐:
import numpy as np import matplotlib.pyplot as plt rating = [8, 4, 5, 6, 7, 8, 9, 5] objects = ('h', 'b', 'c', 'd', 'e', 'f', 'g', 'a') y_pos = np.arange(len(objects)) # 生成颜色列表:最大值对应条形设为红色,其余为默认蓝色 max_rating = max(rating) bar_colors = ['tab:blue' if score != max_rating else 'red' for score in rating] # 绘制水平条形图并指定颜色 plt.barh(y_pos, rating, align='center', alpha=0.5, color=bar_colors) # 调整y轴刻度到右侧 plt.yticks(y_pos, objects) ax = plt.gca() ax.yaxis.tick_right() # 将y轴刻度线和标签移至右侧 # 自动调整布局,避免标签被截断 plt.tight_layout() plt.show()
关键改动说明:
- 高亮最大值条形:通过列表推导式创建颜色列表,遍历
rating数组,判断每个数值是否为最大值,对应设置红色,其余保持默认蓝色(tab:blue是matplotlib的默认蓝色,和原代码样式一致)。 - 调整y轴刻度布局:通过
plt.gca()获取当前坐标轴对象,调用yaxis.tick_right()将y轴的刻度和标签全部移到条形右侧,匹配参考图的布局。tight_layout()用于自动调整图表元素位置,防止标签被画布边缘截断。
内容的提问来源于stack exchange,提问作者Sadcow
相关产品推荐
相关产品推荐

