如何在R语言中过滤掉指定因子并基于剩余数据绘制ggplot图表
R排除指定因子类别完成ggplot极坐标条形图的修正方案
原有代码的核心偏差定位
- 管道符书写错误:链式操作中将dplyr管道符
%>%误写为求模运算符%%,会直接中断代码执行流程 - 过滤语法无效:未正确引用目标数据列,直接编写
c(!=Pre-clinical)类语句,既无匹配的数据对象,也不符合R语法规则,完全无法被解析 - 列名大小写不匹配:预处理环节通过
rownames_to_column生成的列名为大写开头的Type,后续ggplot映射时错写为小写type,会触发列不存在的运行报错 - 过滤逻辑反向:需求为排除
Pre-clinical类别、使用剩余数据集绘图,但原有代码通过str_detect匹配Pre-clinical记录后直接传入filter,实际效果是仅保留该单类别的数据,完全偏离目标
修正后的实现流程
- 依赖包加载
统一加载所需工具包,避免漏载或版本冲突问题:library(tidyverse) library(ggplot2) library(stringr) library(repr) - 数据读取与预处理
保持原有通过指定URL读取制表符分隔数据集的逻辑,替换错误操作环节:- 所有链式操作统一使用正确的管道符
%>%,替换原错误的%%写法 - 统一列名大小写:通过
rownames_to_column新增分类列时,固定列名为Type,后续所有代码引用均保持一致 - 修正过滤逻辑:在
str_detect匹配Pre-clinical的结果前加取反运算符!,实现排除目标类别的效果,核心代码段为:
# 过滤逻辑:排除Pre-clinical类别,保留剩余所有数据 figvadclinic <- 原始读取的数据集 %>% rownames_to_column(var = "Type") %>% filter(!str_detect(Type, "Pre-clinical")) - 所有链式操作统一使用正确的管道符
- 极坐标条形图绘制
- 配置repr包的绘图尺寸参数时,可根据实际展示需求调整宽高值
- ggplot的映射环节严格使用和预处理环节一致的
Type列名,保持条形宽度为0.5的设置,核心绘图代码为:
# 配置绘图尺寸 options(repr.plot.width = 9, repr.plot.height = 9) # 绘制极坐标条形图 ggplot(figvadclinic, aes(x = "", y = 数值列名, fill = Type)) + geom_bar(width = 0.5, stat = "identity") + coord_polar(theta = "y")
内容的提问来源于stack exchange,提问作者user432797
相关产品推荐
相关产品推荐

