如何更改堆积条形图中的样式设置覆盖密度线(ggplot2)

时间:2014-10-21 22:55:21

标签: r ggplot2

我正在尝试更改此类图表的样式设置,希望您能帮助我。

R代码:

set_theme(theme_bw)

cglac$pred2<-as.factor(cglac$pred)

ggplot(cglac, aes(x=depth, colour=pred2))
    + geom_bar(aes(y=..density..),binwidth=3, alpha=.5, position="stack")
    + geom_density(alpha=.2)
    + xlab("Depth (m)")
    + ylab("Counts & Density")
    + coord_flip()
    + scale_x_reverse()
    + theme_bw()

生成此图表:

enter image description here

这里有一些观点:

  1. 我想要的是将密度线分为符号而不是颜色的黑白线(虚线,虚线等)。

  2. 另一个是直方图本身。如何摆脱酒吧的灰色背景?

  3. 我可以将条形图更改为黑白符号线(阴影等)吗?那么他们会匹配密度线?

  4. 最后但并非最不重要的是,由于flip_coord(),我想添加第二个x或在这种情况下为y轴。我现在看到的是密度。我需要的另一个是pred2变量的计数数据。

  5. 感谢您的帮助。

    最佳, Moritz的

1 个答案:

答案 0 :(得分:0)

  1. 有不同的线型:在aes()内,放linetype = pred2。要使线条颜色变为黑色,请在geom_density内添加参数color = "black"

  2. &#34;背景&#34;这些酒吧名为&#34; fill&#34;。在geom_bar内,您可以将fill = NA设置为无填充。更常见的方法是使用颜色填充条形,在aes()内指定fill = pred2。您可以考虑使用变量进行分面,+ facet_wrap(~ pred2, nrow = 1)可能看起来非常好。

  3. ggplot中的阴影条?不,你不能轻易做到这一点。有关其他选项和黑客,请参阅the answers to this question

  4. 第二个y轴,类似于阴影符号线,ggplot创建者认为第二个y轴是一个糟糕的设计选择,所以你根本不能轻易做到。 Here's a related question,包括哈德利的观点:

  5.   

    我认为具有单独y尺度的图(不是彼此变换的y尺度)从根本上是有缺陷的。

    绝对值得考虑他的观点,并问自己这些设计选择是否真的是你想要的。

    密度的不同线型

    这是我正在尝试做的内置数据版本:

    ggplot(mtcars, aes(x = hp,
                       linetype = cyl,
                       group = cyl,
                       color = cyl)) +
        geom_histogram(aes(y=..density.., fill = cyl),
                       alpha=.5, position="stack") +
        geom_density(color = "black") +
        coord_flip() +
        theme_bw()
    

    而我认为你应该做的事情。此版本使用facet而不是stack / colors / linetypes。你似乎瞄准黑白,这个版本根本不是问题。

    ggplot(mtcars, aes(x = hp,
                       group = cyl)) +
        geom_histogram(aes(y=..density..),
                       alpha=.5) +
        geom_density() +
        facet_wrap(~ cyl, nrow = 1) +
        coord_flip() +
        theme_bw()