关于 r:ggplot 在美学中使用函数时的分组

ggplot grouping when using functions inside aesthetics

我对 R 和 ggplot 还很陌生,并且很难理解我应该如何在 ggplot 中解决这个问题。

基本上我想在一个情节上画两条线。一个用于方法"a",一个用于方法"b"。这通常很简单,但现在我想在美学中使用函数。

我想做 ranklength,但是对于每个分组都是分开的。在这个 ggplot 代码中,排名和长度是在所有值上计算的。我尝试了很多不同的配置,但似乎无法得到这个!我在此处包含代码以使用常规图获得所需的图。

1
2
3
4
5
6
d <- rbind(
  data.frame(value=1:100, method=c("a")),
  data.frame(value=50:60, method=c("b"))
)

ggplot(d, aes(x=value, y=rank(value)/length(value), colour=method)) + geom_point()

ggplot

1
2
3
4
5
6
7
8
9
10
11
12
13
a <- d$value[d$method=="a"]
b <- d$value[d$method=="b"]
plot(
  rank(a)/length(a),
  col="red",
  xlab="value",
  ylab="F(value)",
  pch=19
)
points(
  rank(b)/length(b),
  col="blue"
)

plot

这可以用 ggplot 实现吗,还是我需要事先进行计算,然后制作一个特殊的绘图数据框?

每当我知道如何做某事时,我发现 ggplot 很强大,但一旦我不知道该怎么做,就会令人沮丧!尤其是当我不知道它是否不能做某事,或者我只是不知道如何做的时候!

谢谢


感谢评论者。这是他们在我的测试用例上下文中的解决方案,以供参考。

在ggplot之外对分组值进行排名。

1
2
3
4
5
6
d <- rbind(
  data.frame(value=1:100, method=c("a")),
  data.frame(value=50:60, method=c("b"))
)
d <- mutate(group_by(d, method), rank=rank(value)/length(value))
ggplot(d, aes(x=value, y=rank, colour=method)) + geom_point()

valuevsrank