我目前正在完成我的Masters项目,并且需要包括一些图形以供撰写。不用烦您,我有一些数据与AR(1)参数相关,范围为0.1到0.9,增量为0.1。因此,我想到了像下面这样进行刻面的直方图(不用担心颜色丑陋的水果沙拉,就不会使用它)。
我使用了这段代码。
ggplot(opt_lens_geom,aes(x=l_1024,fill=factor(rho))) + geom_histogram()+coord_flip()+facet_grid(.~rho,scales = "free_x")
由于AR(1)参数是连续的,我还想为中值绘制一条趋势线。在以后的迭代中,我删除了填充并使其像一个图形一样“看起来”,但是由于每个方面都是单独的图形设备,因此端点匹配时出现了问题。谁能给我一些建议呢?我对分面并不是特别偏爱,因此,如果不需要,我会取消它。
我将尝试上载示例数据,但是为9种rhos的每一个模拟100个值都可以使它开始工作,例如:
opt_lens_geom <- data.frame(rho= rep(seq(0.1,0.9,by=0.1),each=100),l_1024=rnorm(900))
答案 0 :(得分:2)
您可以考虑使用ggridges。我在这里假设您想要每个≢
的中间值。
textureDescriptor.textureType = MTLTextureType.type2D
结果。如果您不喜欢重叠量,可以将rho
作为参数添加到library(ggplot2)
library(ggridges)
library(dplyr)
set.seed(1001)
opt_lens_geom <- data.frame(rho = rep(seq(0.1, 0.9, by = 0.1), each = 100),
l_1024 = rnorm(900))
opt_lens_geom %>%
mutate(rho_f = factor(rho)) %>%
ggplot(aes(l_1024, rho_f)) +
stat_density_ridges(quantiles = 2, quantile_lines = TRUE)
。
答案 1 :(得分:0)
您可以使用geom_violin
而不是直方图对此进行变体,尽管您不会得到标记计数,而只是了解相对密度。包含数据的示例:
df = data.frame(
rho = rep(c(0.1, 0.2, 0.3), each = 50),
val = sample(1:10, 150, replace = TRUE)
)
df$val = df$val + (5 * (df$rho == 0.2)) + (8 * (df$rho == 0.3))
ggplot(df, aes(x = rho, y = val, fill = factor(rho))) +
geom_violin() +
stat_summary(aes(group = 1), colour = "black",
geom = "line", fun.y = "median")
这会为每个rho值生成一个小提琴,并将每个小提琴的中位数加在一起。
答案 2 :(得分:0)
尝试以下方法。它使用预先计算的中值数据帧。
library(ggplot2)
df <- iris[c(1, 5)]
names(df) <- c("val", "rho")
med <- plyr::ddply(df, "rho", summarise, m = median(val))
ggplot(data = df, aes(x = val, fill = factor(rho))) +
geom_histogram() +
coord_flip() +
geom_vline(data = med, aes(xintercept = m), colour = 'black') +
facet_wrap(~ factor(rho))