You need to enable JavaScript to run this app. 如何在R语言中过滤掉指定因子并基于剩余数据绘制ggplot图表
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言中过滤掉指定因子并基于剩余数据绘制ggplot图表

R排除指定因子类别完成ggplot极坐标条形图的修正方案

原有代码的核心偏差定位

  • 管道符书写错误:链式操作中将dplyr管道符%>%误写为求模运算符%%,会直接中断代码执行流程
  • 过滤语法无效:未正确引用目标数据列,直接编写c(!=Pre-clinical)类语句,既无匹配的数据对象,也不符合R语法规则,完全无法被解析
  • 列名大小写不匹配:预处理环节通过rownames_to_column生成的列名为大写开头的Type,后续ggplot映射时错写为小写type,会触发列不存在的运行报错
  • 过滤逻辑反向:需求为排除Pre-clinical类别、使用剩余数据集绘图,但原有代码通过str_detect匹配Pre-clinical记录后直接传入filter,实际效果是仅保留该单类别的数据,完全偏离目标

修正后的实现流程

  1. 依赖包加载
    统一加载所需工具包,避免漏载或版本冲突问题:
    library(tidyverse)
    library(ggplot2)
    library(stringr)
    library(repr)
    
  2. 数据读取与预处理
    保持原有通过指定URL读取制表符分隔数据集的逻辑,替换错误操作环节:
    • 所有链式操作统一使用正确的管道符%>%,替换原错误的%%写法
    • 统一列名大小写:通过rownames_to_column新增分类列时,固定列名为Type,后续所有代码引用均保持一致
    • 修正过滤逻辑:在str_detect匹配Pre-clinical的结果前加取反运算符!,实现排除目标类别的效果,核心代码段为:
    # 过滤逻辑:排除Pre-clinical类别,保留剩余所有数据
    figvadclinic <- 原始读取的数据集 %>%
      rownames_to_column(var = "Type") %>%
      filter(!str_detect(Type, "Pre-clinical"))
    
  3. 极坐标条形图绘制
    • 配置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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.12 23:45:10