【问题标题】:Filtering values in ggplot2?过滤ggplot2中的值?
【发布时间】:2020-07-04 03:51:43
【问题描述】:

更新: 我终于弄清楚了如何进行绘图。下面的代码对我有用:

mydf %>%
  dplyr::filter(NAME =="" & GENDER =="") %>%
  ggplot(aes(YEAR, RANK)) +
  geom_point()

现在我正在努力将其转换为一个以姓名和性别为参数的函数。该函数区分大小写,如果缺少性别参数,仍应显示绘图。这是我迄今为止在该功能方面的进展。它显示一个带有两个参数的图,但如果我删除了性别参数,它会显示一个空白图。我需要在我的函数中应用 grep 或 grepl 吗?感谢大家!

 name.plot <- function(name="", gender="", ignore.case=TRUE){ 
  mydf %>% 
  dplyr::filter(NAME == name & GENDER == gender) %>% 
  ggplot(aes(YEAR, RANK)) + 
  geom_point()  
}

我正在做作业,需要一些帮助。我们得到了一个 babynames 的数据集,并且应该编写一个函数,该函数将采用 姓名和性别,并返回排名与年份的关系图。

目前,我正在弄清楚如何首先显示绘图。我估计 出了如何显示一个名字,但是当我尝试添加性别时,它只是 给我一个空白的情节。有人可以帮我做什么吗 错误的?我尝试了 group by 和 which 函数,但没有运气。

p1 <- mydf %>%
  filter(NAME =="Madison", GENDER =="girl") %>%
  ggplot(aes(YEAR, RANK)) +
  geom_point()
p1

这是我的示例数据集:

【问题讨论】:

  • 我想您最好以更加程序化的方式分离您的数据。意思是使用方面和美学进行分组。例如,使用 + geom_point(data = mydf, aes(YEAR, RANK, color = NAME)) + facet_grid(˜GENDER)(为奇怪的 tilda 符号道歉 - 使用奇怪的键盘 atm)
  • 不确定它是如何工作的。现在,我只是想显示一个图,稍后我将不得不创建一个函数,它将姓名和性别作为参数并显示一个图。
  • 你试过我的代码了吗?将奇怪的 tilda 替换为正常的 tilda 符号,并将其添加到您的 p
  • @Tjebo,我做了,但仍然没有工作:(
  • 您的数据似乎有些奇怪......约翰、威廉和詹姆斯在 1880 年首次排名女孩名字?

标签: r function ggplot2 filter


【解决方案1】:

有几种方法可以做到这一点。我应该指出,您要调用的filter() 函数dplyr::filter() 通常与stats::filter() 函数发生冲突。出于这个原因,我通常使用dplyr::filter() 显式调用(而不是单独使用filter())。

其次,您还可以在任何 ggplot 函数的 data 参数中使用subset(df, ...) 提取数据进行过滤。所以下面的代码应该可以告诉你你需要什么:

ggplot(df, aes(YEAR, RANK)) +
    geom_point(data=subset(df, NAME=='Madison' & GENDER=='girl'))

【讨论】:

  • 我尝试了这两种方法,但仍然无法正常工作:(它会为第一个输入显示一个图,但如果我尝试不同的名称或性别,它仍然会给我一个空白图。跨度>
  • 在不检查实际数据的情况下很难给出更好的方向——你能发布数据集吗? (使用 R 语法,如 data.frame(NAME=c(...), GENDER=c(...),...),以便更轻松地为您提供帮助)。
  • 哦 - 请注意,您必须更改我拥有的代码,以便 df 是您的实际数据框名称。如果是mydf,则在两个地方都使用它。
  • 我做到了,我将其更改为我的实际数据框,即 mydf。我当前的代码也有同样的问题。它会显示第一个输入名称,但如果我尝试其他方法,它会给我一个空白图。
  • 我想我终于知道如何绘图了,但是如何将它放入一个将姓名和性别作为参数的函数中?
猜你喜欢
  • 2021-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-02
  • 2017-10-15
  • 2015-04-24
  • 2016-09-08
  • 2013-04-01
相关资源
最近更新 更多