【问题标题】:Removing plot points within a ggplot based on column value within a function根据函数中的列值删除 ggplot 中的绘图点
【发布时间】:2019-04-18 22:08:54
【问题描述】:

我正在尝试在 R 中运行一个函数,该函数将数据框中单个列的值与同一数据框中其他几个列的值进行对比。输出是单个 ggplot 上的几个 geom_point 图。但是,我想从图中删除具有某些值的绘图点。具体来说,一些数据框包含不应绘制的 0 值。

我已经尝试以几种不同的格式使用子集()来解决这个问题,但是,我通常会收到错误消息 “ FUN 中的错误(左、右):二元运算符的非数字参数” 我已经尝试过简化代码,0 值根本没有被删除!

## Plots #------
library(tidyverse) #loads all Hadley verse

x <- c(0,0,3,0,4)
y <- c(2,0,1,2,5)
KeyValue <- c(1,0,2,2,3)
df <- data.frame (x, y, KeyValue)

## Write function for producing graphs
PlotGr <- function(x){
  xplot <- x %>%
    gather(-"KeyValue", key = "var", value = "value") %>%
    ggplot(subset(x,value!==0) + 
    aes(x = value, y = `KeyValue`)) +
    geom_point(alpha=1/4) +  
    facet_wrap(~ var, scales = "free") + 
    theme_bw()

  ggsave(filename= paste0(deparse(substitute(x)),'.pdf'))
}

PlotGr(df)

要获得包含 2 个独立图的 PDF 输出,其中 y 轴上的零值已删除。

目前我的功能失败了,我完全迷失了!

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    也许可以试试:

    xplot <- 
      x %>%
      gather(-"KeyValue", key = "var", value = "value") %>%
      filter(value != 0) %>% 
      ggplot(aes(x = value, y = `KeyValue`)) +
      ...
    

    【讨论】:

    • 太棒了,如此简单,但真的很感激谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-06
    • 1970-01-01
    • 2023-04-08
    • 2020-08-05
    • 2020-04-27
    • 2021-02-14
    • 1970-01-01
    相关资源
    最近更新 更多