【问题标题】:ggplot2: Using `fill = …` in aes(..) and geom_bar(..). The colors don't repeatggplot2:在 aes(..) 和 geom_bar(..) 中使用 `fill = ...`。颜色不重复
【发布时间】:2018-05-10 16:43:51
【问题描述】:

我的问题是颜色形成三个颜色块对应于变量Atr的三个级别,而不是重复每个颜色。我希望每个条都由每个染色体中的 End_positions 块组成。 其实我找到了THIS POST

他的问题是我的解决方案。我试图完全复制他的代码,但替换了值,但它不起作用。

此外,我希望能提供一些建议,以改进此图表的可视化。

ggplot(df2, aes(x = Chromosome, y = End_position, fill = Atr, label = End_position)) +
  geom_bar(stat = "identity") +
  geom_text(size = 3, position = position_stack(vjust = 0.5))+
  ggtitle('Stacked chromosome')

桌子:

   Chromosome End_position Atr
1        chr1     35383099  PI
2        chr2      8614917  PI
3        chr2      1505317  PS
4        chr2     15804791  PI
5        chr2            1  PS
6        chr3      1299265  PI
7        chr3     22582715  PS
8        chr3      3633786  PI
9        chr3       399713  PS
10       chr3       807853  PI

还有当前的图表:

非常感谢,最好的奖励,

丹尼尔。

【问题讨论】:

  • 你能更清楚你期望的输出是什么样子吗?甚至可能是草图/图片?你想重复什么颜色?
  • 你也说“......形成三个颜色块对应于变量Atr的三个级别”但是在你的示例中只有两个级别的Atr?
  • 我也不清楚。你能澄清一下吗?在我看来,您的 Atr 级别似乎是分组在一起的,也就是说,所有 PI 都被分组,所有 PS 都被分组,所以颜色不会交替,并创建连续的单色条。

标签: r plot ggplot2 bar-chart


【解决方案1】:

您是否期待以下内容?

(黑色轮廓添加到条形的每个组件以进行强调)

使用的代码:

ggplot(df2, 
       aes(x = Chromosome, y = End_position, 
           group = seq(1, nrow(df2)), # or seq(nrow(df2), 1)
           fill = Atr, label = End_position)) +
  geom_bar(stat = "identity", color = "black") +
  geom_text(size = 3, position = position_stack(vjust = 0.5))+
  ggtitle('Stacked chromosome')

与原始代码的不同之处在于在顶级美学中包含group = seq(1, nrow(df2))

这会强制 ggplot 将数据框中的每一行视为一个单独的组,因此具有相同 fill 值的行不会在 geom_bar() 中分组在一起,而是遵循数据框中的行顺序。

seq(nrow(df2), 1) 将实现相同的目标,但顺序相反。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-10
    相关资源
    最近更新 更多