【问题标题】:How to make ggplot2 bar chart color by magnitude and sort by direction如何按大小制作ggplot2条形图颜色并按方向排序
【发布时间】:2014-07-08 17:52:43
【问题描述】:

我的数据条形图如下所示:

 Difference  Name
-120.007482  gene1
 43.901222   gene2
 66.206057   gene3
-277.303125  gene4
 69.487904   gene5

我使用 ggplot2 制作了一个条形图,代码如下:

ggplot(readcount_differences, aes(x=gene, y= differences)) +
            geom_bar(stat = "identity")+
             theme(axis.text.x = element_text(angle=45, vjust =1))

我现在要做的是按数量级对条形图进行着色和排序。因此,最正面的条形图从深蓝色变为浅蓝色(最短的正面),而最负面的条形图从深红色变为浅红色(从最负面到最不负面)。

我想我可以用构面来做到这一点,但我不知道怎么做。任何帮助将不胜感激。谢谢!

编辑:使用修复:

颜色变浅...

【问题讨论】:

  • 您可以查看here,了解如何使用scale_color_gradientnrescale 参数提高接近零的值的分辨率。

标签: r ggplot2


【解决方案1】:

读取数据:

df <- read.table(header=TRUE, text=" difference  name
-120.007482  gene1
 43.901222   gene2
 66.206057   gene3
-277.303125  gene4
 69.487904   gene5")

创建情节:

ggplot(df, aes(x=reorder(name, difference), y=difference, fill=difference)) +
  geom_bar(stat="identity") +
  scale_fill_gradient2(low="red", high="darkblue", midpoint=-50) +
  labs(x="\nGene", y="Difference\n") +
  theme_bw() +
  theme(axis.text.x=element_text(angle=45, vjust=0.5))

给出:

【讨论】:

  • 这更接近,但不是我需要的。我希望所有具有正差异的人都有蓝色阴影,所有有负面差异的人都有红色阴影......
  • 嗯,出了点问题,我现在收到一个错误:“错误:提供给连续刻度的离散值”。如果我取出线“ scale_fill_gradient2(low="red", high="darkblue", midpoint=-50) +" 那么它可以工作,但没有给我配色方案
  • 奇怪,我没有收到那个错误信息。一些需要澄清的问题:您是否以与我相同的方式阅读数据?您是否将fill 更改为fill=difference?你使用的是哪个版本的 R 和 ggplot2?
  • 啊,我错过了“填充=差异”。现在我们真的很接近了,但它在中间变亮了。这就是我考虑使用构面的原因。如果它的一侧是浅蓝色到深蓝色,另一侧是浅红色到深红色,则它不会在中间融合。
  • 您可以使用mid="green" 指定中间色。另一种可能性是将构面中的数据分开,一个构面中的正值和另一个构面中的负值。但是,对于您提供的小数据集,很难说出最佳策略是什么。你能用dput提供更大的数据集吗?
猜你喜欢
  • 2012-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-02
  • 1970-01-01
相关资源
最近更新 更多