带有渐变颜色填充的ggplot2水平条形图

时间:2018-03-21 01:59:59

标签: r ggplot2 bar-chart gradient colorbrewer

我正在尝试创建水平条形图,并希望按其日志折叠值填充单个条形图,白色表示最低值,最暗表示最高值。但是,我无法做到。 这是我的工作,有人可以帮我解决吗?

5.0 + 5.0 = 5.0

enter image description here

提前谢谢!

2 个答案:

答案 0 :(得分:2)

以下是您需要考虑的事项:

  • 对数据帧值进行排序对ggplot
  • 没有任何影响
  • 在您的代码中,您将填充颜色映射到Tissue,而不是映射到LogFold
  • 较新的geom_col输入的次数少于geom_bar(stat = ...)
  • 当您指定Tissue
  • 的所有值时,您的比例限制是不必要的
  • 如果您想使用渐变填充scale_fill_gradient2()
  • fill = white将在theme_classic
  • 的白色背景上无法显示

所以你可以尝试这样的事情:

library(tidyverse)
df1 %>% 
  ggplot(aes(reorder(Tissue, LogFold), LogFold)) + 
  geom_col(aes(fill = LogFold)) + 
  scale_fill_gradient2(low = "white", 
                       high = "blue", 
                       midpoint = median(df1$LogFold)) + 
  coord_flip() + 
  labs(x = "Tissue")

enter image description here

但我不知道颜色渐变在解释信息方面确实增加了很多东西。所以这是没有它的结果,你就是法官:

df1 %>% 
  ggplot(aes(reorder(Tissue, LogFold), LogFold)) + 
    geom_col() + 
    coord_flip() + 
    labs(x = "Tissue") + 
    theme_classic()

enter image description here

答案 1 :(得分:0)

希望这有效。

ggplot(data=df1, aes(x=Tissue, y=LogFold, fill = LogFold)) +
        geom_bar(stat="identity",color="black")+
        scale_fill_gradient(low="white",high="darkred")+
        coord_flip()+
        ylim(0, 15)+
        scale_x_discrete(limits = df1$Tissue)+
        theme_classic()