如何用Matplotlib或相关库绘制无坐标轴的学生成绩占比条形图
用Matplotlib实现无Y轴的水平占比条形图
完全可以用Matplotlib实现你想要的这种无冗余Y轴的水平占比条形图,以下是具体实现代码和说明:
示例代码
import matplotlib.pyplot as plt # 准备数据:成绩类别和对应占比 grade_categories = ["优秀", "良好", "中等", "及格", "不及格"] percentages = [15, 30, 25, 20, 10] # 创建画布和轴对象 fig, ax = plt.subplots(figsize=(8, 3)) # 绘制水平条形图 bars = ax.barh(grade_categories, percentages, color="#4a90e2") # 隐藏Y轴的所有冗余元素 ax.yaxis.set_visible(False) # 直接隐藏整个Y轴 # 如果需要更精细控制,可以单独隐藏刻度、标签和边框: # ax.set_yticks([]) # ax.set_yticklabels([]) # ax.spines['left'].set_visible(False) # 给每个条形添加占比标签 for bar in bars: width = bar.get_width() ax.text(width + 1, bar.get_y() + bar.get_height()/2, f'{width}%', va='center', fontsize=10) # 设置X轴范围和标签 ax.set_xlim(0, max(percentages) + 10) ax.set_xlabel('学生占比 (%)') # 添加标题 ax.set_title('不同成绩段学生占比') # 调整布局,避免标签被截断 plt.tight_layout() plt.show()
关键细节说明
- 隐藏Y轴:通过
ax.yaxis.set_visible(False)可以一次性隐藏Y轴的刻度、标签和左侧边框,完全符合你“去掉不必要Y轴”的需求;如果需要保留Y轴的某些元素,可以拆分使用注释里的精细控制代码。 - 占比标签:通过循环给每个条形添加右侧的百分比文本,让数据更直观。
- 样式调整:可以通过修改
color参数自定义条形颜色,调整figsize控制图表尺寸,让可视化效果更贴合你的需求。
内容的提问来源于stack exchange,提问作者Dan Öz
相关产品推荐
相关产品推荐

