关于如何在ggplot2中绘制折线图并排绘制直方图的建议/

时间:2019-05-28 05:20:31

标签: r ggplot2 histogram facet

我目前正在完成我的Masters项目,并且需要包括一些图形以供撰写。不用烦您,我有一些数据与AR(1)参数相关,范围为0.1到0.9,增量为0.1。因此,我想到了像下面这样进行刻面的直方图(不用担心颜色丑陋的水果沙拉,就不会使用它)。 faceted histogram

我使用了这段代码。

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))

3 个答案:

答案 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)

enter image description here

答案 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值生成一个小提琴,并将每个小提琴的中位数加在一起。

enter image description here

答案 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))

enter image description here