我必须绘制这种类型的图,但是我不知道该怎么做。我必须绘制这些函数的图。正常:
library(tidyverse)
tibble(x = sort(rnorm(1e5)),
cumulative = cumsum(abs(x)/sum(abs(x)))/2.5) %>%
ggplot(aes(x)) +
geom_histogram(aes(y = ..density..), bins = 500)+
geom_density(color = "red")+
geom_line(aes(y = cumulative), color = "navy")+
scale_y_continuous(sec.axis = sec_axis(~.*2.5, name = "cumulative density"))
和二项式:
library(tidyverse)
set.seed(10)
tibble(x = sort(rbinom(1e5,1e5, 0.001))) %>%
ggplot(aes(x)) +
geom_histogram(aes(y = ..density..), bins = 90)+
geom_density(color = "red")
而且我不明白如何在[0,1]范围内的一个图上比较这两个函数。也许我必须改变情节。但是无论如何我都无法在特定范围内添加两个图。也许有人知道该怎么做?
您可以保存数据,只需再次使用ggplot()将新的geom_和新的数据以及新的x变量添加到绘图中。然后,您的图将被添加到上一个图。但是,xlim(范围)似乎太小。
Silke
data1 <- tibble(x = sort(rnorm(1e5)),
cumulative = cumsum(abs(x)/sum(abs(x)))/2.5)
set.seed(10)
data2 <- tibble(x = sort(rbinom(1e5,1e5, 0.001)))
ggplot(data = data1, aes(x)) +
geom_histogram(aes(y = ..density..), bins = 500)+
geom_density(color = "red")+
geom_line(aes(y = cumulative), color = "navy")+
scale_y_continuous(sec.axis = sec_axis(~.*2.5, name = "cumulative density")) +
geom_histogram(data = data2,aes(x = x,y = ..density..), bins = 90)+
geom_density(color = "green") + xlim(0,1)
我不确定您想从这种比较中得到什么。在将两个图形放在一起之前,我认为您的代码可能存在一些问题:1)您的cumsum(abs(x)/sum(abs(x)))
可能不正确,我将其替换为cumsum(abs(10-x)/sum(abs(10-x)))
。其次,对于二项式分布,rbinom(1e5,1e5, 0.001)
将给您数字而不是概率,我将其替换为rbinom(1e5,1e5, 0.001)/1e5
。
library(tidyverse)
df1<-tibble(x = sort(rnorm(1e5)),
cumulative = cumsum(abs(10-x)/sum(abs(10-x)))/2.5)
df2<-tibble(x1 = sort(rbinom(1e5,1e5, 0.001)/1e5))
ggplot(df1, aes(x=x)) +
geom_histogram(aes(y = ..density..), bins = 500)+
geom_density(color = "red")+
geom_line(aes(y = cumulative), color = "navy")+
scale_y_continuous(sec.axis = sec_axis(~.*2.5, name = "cumulative density")) +
geom_histogram(data = df2, aes(x = x1, y = ..density..), bins = 90)