绘制布尔值数据时分类标签未显示,如何设置分类坐标轴?
解决布尔值柱状图x轴显示数值而非分类标签的问题
问题描述
我在Pandas数据框中有一列名为TFColumn的布尔值(即TRUE或FALSE)数据,尝试用柱状图统计TRUE和FALSE的数量。但x轴显示的是数值而非TRUE/FALSE分类标签,请问如何将数值轴改为分类坐标轴?当前使用的绘图代码如下:
plt.bar(dat[dat.yr == 2019]['TFColumn'].value_counts().index, dat[dat.yr == 2019]['TFColumn'].value_counts().values)
解决方案
方法1:手动设置x轴刻度标签
matplotlib会默认把布尔值转为0/1显示,直接通过set_xticks和set_xticklabels指定标签即可:
import matplotlib.pyplot as plt # 筛选数据并统计计数 filtered_tf = dat[dat.yr == 2019]['TFColumn'] count_result = filtered_tf.value_counts() # 绘图并设置标签 fig, ax = plt.subplots() ax.bar(count_result.index, count_result.values) # 设置刻度位置和对应标签 ax.set_xticks(count_result.index) ax.set_xticklabels(['False', 'True']) # 也可以用count_result.index.astype(str)自动转换 plt.show()
方法2:用Pandas内置的plot.bar()(最简便)
Pandas的绘图方法会自动识别布尔类型的索引,直接显示True/False标签:
dat[dat.yr == 2019]['TFColumn'].value_counts().plot(kind='bar') plt.show()
方法3:将索引转为字符串类型再绘图
把布尔索引转换成字符串,让matplotlib直接识别为分类:
count_result = dat[dat.yr == 2019]['TFColumn'].value_counts() plt.bar(count_result.index.astype(str), count_result.values) plt.show()
内容的提问来源于stack exchange,提问作者324
相关产品推荐
相关产品推荐

