我想在一定的时间间隔内绘制概率函数。 x轴必须比间隔长,因为在一个图中有更多的pdf。 但随着x轴的增长,pdf也会产生数据,尽管代码暗示了一定的间隔。 代码:
p1 <- ggplot() +
stat_function(data=data.frame(x=c(2,30)),aes(x),fun = dnorm, n = 101,
args= list(mean=5,sd=1),color="black")+
xlim(-5,80)+
scale_y_continuous(breaks = NULL)
p1中的pdf生成数据,直到x = 80。但代码中的x值在向量中,直到x = 30。 我怎么能阻止pdf产生值直到80,或者如何成为分布在x = 30时停止的代码?
答案 0 :(得分:1)
我们可以使用dplyr::data_frame
构建一个只有您想要的动态绘制的x值的数据框。我添加了另一个 p.d.f。来证明你想要的方式是可行的。
library(dplyr)
# to use data_frame
ggplot() +
geom_line(data=data_frame(x=seq(2,30, 0.25), y = dnorm(x, mean = 5, sd = 1)),
aes(x, y), color = "black") +
geom_line(data=data_frame(x=seq(40,70, 0.25), y = dnorm(x, mean = 60, sd = 5)),
aes(x, y), color = "red") +
xlim(-5,80)+
scale_y_continuous(breaks = NULL)
您也可以通过移动color=
内的aes(...)
来标记它们:
ggplot() +
geom_line(data=data_frame(x=seq(2,30, 0.25), y = dnorm(x, mean = 5, sd = 1)),
aes(x, y, color = "mean:5, sd:1")) +
geom_line(data=data_frame(x=seq(40,70, 0.25), y = dnorm(x, mean = 60, sd = 5)),
aes(x, y, color = "mean:60, sd:5")) +
xlim(-5,80)+
scale_y_continuous(breaks = NULL) +
scale_color_manual(values = c("mean:5, sd:1" = "black",
"mean:60, sd:5" = "red"))
你的密度函数对我有用。
dTDF<-function(x,g,a,b,k){
exp(-exp(-(x/a)+((a*k)/(g-x))-b))*(exp(-(x/a)+((a*k)/(g-x))-b))*((1/a)-((a*k)/((g-x)^2)))
}
df1 <- data_frame(x=seq(2500,11300, 100),
y = dTDF(x,g=11263,a=1185, b=-4, k=-0.5))
df2 <- data_frame(x=seq(7000,14300, 100),
y = dTDF(x,g=15263,a=1105, b=-10, k=-0.5))
ggplot() +
geom_line(data = df1, aes(x, y))+
geom_line(data = df2, aes(x, y)) +
xlim(1000, 15000)