按ggplot中的因子绘制值的计数

时间:2016-03-16 00:41:47

标签: r ggplot2

R的新手,长时间使用google搜索这个(可能很简单)的东西。

我想根据他们是否有巢来描绘生育后代的雄性比例。 (我不想要他们生育了多少后代的信息)。这是我的数据集“男性”

fishID nest off
fish1    1  25
fish2    0   0
fish3    0   5
fish4    1  15
fish5    1   0
fish6    0   2
fish7    0   0
fish8    1   4

我已经使用以下代码将后代的值更改为0和1(虽然这感觉很笨拙)......

#converts the values in offspring to 0 and 1s
vars=c("off")
males[males$off != "0", vars]="1"
males 

...我可以使用...

绘制比例
ggplot(males,aes(x = males$nest,fill = males$off)) + 
geom_bar(position = "fill")

...但是我想给它们上色以使0(无巢)是一种颜色而1(巢)是另一种颜色,那么没有父亲后代的雄性比例是每种颜色的较淡的版本。上面根据“后代”产生颜色,而不管“巢”。

小贴士欢迎。  (Mac OS X,R 3.0.3 GUI 1.63 Snow Leopard build(6660))

2 个答案:

答案 0 :(得分:1)

这是你正在寻找的吗?

library(ggplot2)

males$nest <- as.factor(males$nest)
males$off <- as.factor(males$off)

ggplot(males, aes(x = nest, fill = off)) + 
geom_bar(width = 0.25) + 
scale_fill_manual(values = c('green', 'darkgreen'))

enter image description here

答案 1 :(得分:1)

完成它!谢谢。这是我错过的互动的填充。

require(ggplot2)

males$off <- factor(as.numeric(males$off != 0))
males$nest <- as.factor(males$nest)

ggplot(males, aes(x = nest, fill = interaction(males$nest, males$off))) + geom_bar(width = 0.25) + scale_fill_manual(values = c('deepskyblue3', 'tomato3', 'deepskyblue', 'tomato'))

(最终需要与搜索天数相同数量的代码行...)