使用ggplot2着色100%条形图

时间:2016-05-08 19:14:17

标签: r plot ggplot2

我对R完全不熟悉,只是放弃了edX的介绍。不幸的是,它没有教导任何关于ggplot2的内容,我想在论文中使用我的图表。我希望获得100%不同颜色的条形图,如果可能的话,可以在相应条形图中获得值。我的数据如下:

Concentration,Percentage,Phenotype
Control,0.933333333,0
Control,0.014814815,1
Control,0.022222222,2
Control,0.02962963,3
0.002,0.918181818,0
0.002,0.018181818,1
0.002,0.018181818,2
0.002,0.045454545,3
0.02,0.930434783,0
0.02,0.017391304,1
0.02,0.017391304,2
0.02,0.034782609,3
0.2,0.928571429,0
0.2,0.032467532,1
0.2,0.012987013,2
0.2,0.025974026,3
2,0.859813084,0
2,0.028037383,1
2,0.046728972,2
2,0.065420561,3

我使用的代码是:

ggplot(Inj, aes(x=Concentration, y=Percentage, fill=Phenotype))+geom_bar(stat='identity',color='black')

结果图如下所示:

enter image description here

如何更改不同条形的颜色并在条形图中获得%-values?

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

您可以通过将填充变量设为一个因子来控制颜色。然后你可以像这样手动调整颜色

ggplot(Inj, aes(x=Concentration, y=Percentage, fill=factor(Phenotype)))+geom_bar(stat='identity',color='black') +
  scale_fill_manual(values=c("red", "blue", "yellow", "pink"))

enter image description here

我不建议将值放在颜色上,因为它们对于非常小的值是不可见的。我会用另一种方式来显示数据。

答案 1 :(得分:0)

您可以使用scale_x_discrete手动重新排序因子,如下所示:

ggplot(Inj, aes(x=Concentration, y=Percentage, fill=Phenotype)) + 
  geom_bar(stat='identity',color='black') +
  scale_fill_grey(start = .4, end = .9) + 
  theme_bw()+ylab("Distribution") + 
  xlab("Contentration [mg/ml]") + 
  ggtitle("Dose-respond analysis") +
  theme(legend.title = element_text(colour="black", size=10, face="bold")) +
  theme(legend.background = element_rect(fill="white",
                                   size=0.5, linetype="solid", 
                                   colour ="black")) +
  scale_x_discrete(limits=c('Control','0.002', '0.02', '0.2', '2'),
                   labels=c('Control\n(N=000)',
                            '0.002\n(N=000)', 
                            '0.02\n(N=000)', 
                            '0.2\n(N=000)', 
                            '2\n(N=000)'))

我在下面的评论中将labels部分添加到scale_x_discrete以回答您的问题。您只需要更新N值。请注意,我在每个标签中放置了\n,以便将标签文本强制为两行,这样就不会混淆。如果您希望将\n放在一行,请将其删除。