【问题标题】:When plotting, how do I filter out values that have a sum of < 10 in ggplot2?绘图时,如何过滤掉ggplot2中总和<10的值?
【发布时间】:2021-12-05 02:11:53
【问题描述】:

我有一个包含几列的数据列表:selectedtotallocationLocation 绘制在 x 轴上,selected 绘制在 y 轴上。但是,我希望过滤掉 selected 的总数小于 10 的值。

到目前为止,对于我正在使用的情节:

ggplot(rawdata) + 
  geom_point(aes(x=location, y=selected)) + 
  geom_smooth(aes(x=location, y=selected, se=F)) +
  labs(
  title="All bins, selected", 
  x="location", 
  y="selected")

有没有办法在ggplot2 中做到这一点?我假设我们会使用if 语句来包含第三列,但我什至不确定我所问的是否可行。

【问题讨论】:

  • 很难不看到您的数据。可以使用 rawdata[total
  • 请通过包含生成与您的数据格式相同的数据的代码来使您的问题可重现。通常最容易包含dput(rawdata) 的输出,或者如果太长dput(head(rawdata, XX)),其中XX 是包含selected 大于10 的行数。

标签: r ggplot2 plot


【解决方案1】:

在 ggplot 数据参数中调用数据集时,您可以使用 filter()。在下面的示例中,我过滤掉了小于 10 的“cty”值。

library(tidyverse) 

ggplot(data = filter(mpg, cty >= 10), aes(x = hwy, y = cty)) + 
  geom_point()

【讨论】:

  • 我尝试使用该通用语法,但无法正常工作。它说:“错误‘数据’必须是数据框或其他可被‘fortify()’强制转换的对象,而不是类 uneval 的 S3 对象。你是否不小心将 aes() 传递给了数据参数?回溯 x1。”当我要求 ggplot2 使用相同的数据集更早地绘制事物时,它工作得很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-04
  • 2015-04-24
  • 1970-01-01
相关资源
最近更新 更多