如何在R中绘制条形图对比各布尔数据列的TRUE值计数
各平台布尔值TRUE计数条形图实现方案
核心逻辑很简单:先逐列统计每列中TRUE的出现次数,再以平台名为X轴、计数为Y轴绘制条形图即可,以下是两种最常用的实现方式:
方案1:R语言(ggplot2)实现
首先统计每列的TRUE值数量,再绘图:
# 加载绘图依赖 library(ggplot2) # 逐列统计TRUE值,na.rm=TRUE代表自动忽略缺失值 count_result <- colSums(your_dataset, na.rm = TRUE) # 整理为ggplot要求的数据格式 plot_data <- data.frame( platform_name = names(count_result), true_num = as.numeric(count_result) ) # 绘制条形图 ggplot(plot_data, aes(x = platform_name, y = true_num)) + geom_col(fill = "#2c7fb8") + # 固定Y轴范围为0-91,按每10个单位设置刻度 scale_y_continuous(limits = c(0, 91), breaks = seq(0, 91, 10)) + labs( x = "平台名称", y = "应答为TRUE的受访者计数", title = "各平台司机应答情况对比" ) + # 若平台名过长重叠,可放开下一行注释旋转X轴标签 # theme(axis.text.x = element_text(angle = 30, hjust = 1)) + theme_minimal()
方案2:Python(pandas+matplotlib)实现
Python中布尔值True等价于数值1、False等价于0,直接按列求和就能得到TRUE的计数:
import pandas as pd import matplotlib.pyplot as plt # 按列统计TRUE值数量,skipna=True代表忽略缺失值 count_result = your_dataset.sum(skipna=True).reset_index() count_result.columns = ["platform_name", "true_num"] # 绘制条形图 plt.figure(figsize=(10, 6)) plt.bar( x=count_result["platform_name"], height=count_result["true_num"], color="#2c7fb8" ) # 固定Y轴范围0-91 plt.ylim(0, 91) plt.yticks(range(0, 92, 10)) plt.xlabel("平台名称") plt.ylabel("应答为TRUE的受访者计数") plt.title("各平台司机应答情况对比") # 平台名过长时旋转X轴标签避免重叠 plt.xticks(rotation=30, ha="right") plt.tight_layout() plt.show()
可选优化
- 若想让条形按计数从高到低排序展示,可在绘图前对统计结果按
true_num列做降序排序,可读性更强 - 若数据中存在缺失值,一定要在统计时开启缺失值忽略参数,否则最终统计结果会返回空值
- 可以给条形加上数值标签,直接在条顶显示具体计数,不用对照Y轴估算
内容的提问来源于stack exchange,提问作者jejacobsen
相关产品推荐
相关产品推荐

