根据函数中的列值在ggplot中删除绘图点

时间:2019-04-18 22:08:54

标签: r ggplot2

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

我曾尝试以几种不同的格式使用subset()解决此问题,但是,我通常会收到错误提示 “ 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轴上的零值。

当前我的功能正在失败,我完全迷路了!

1 个答案:

答案 0 :(得分:0)

也许尝试类似的事情:

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