尝试将标准图转换为条形图
Trying to convert a standard plot to a barplot
我是 R 的新手,需要一些帮助才能真正做到。
我有这三个数据框。
> Botcv
Date Average
1 2014-09-01 4.0
2 2014-10-02 5.5
> Botc1
Date Average
1 2014-10-15 2.125
2 2014-11-12 1.000
3 2014-12-11 0.500
> Botc2
Date Average
1 2014-10-15 3.375
2 2014-11-12 1.750
3 2014-12-11 0.625
我使用这些数据框来制作这个图
plot(Botcv$Date, Botcv$Average, type='p', pch=4, col="red", xlab='Date', ylab='', main=expression(italic('Botrylloides sp.')), xlim=c(as.Date("2014-09-01"),as.Date("2014-12-11")), ylim=c(0,10))
points(Botc1$Date, Botc1$Average, type='p', pch=19, xlab='Date', xlim=c(as.Date("2014-09-01"),as.Date("2014-12-11")), ylim=c(0,10))
points(Botc2$Date, Botc2$Average, type='p', pch=2, col="blue", xlab='Date', ylab='Average num ind.', xlim=c(as.Date("2014-09-01"),as.Date("2014-12-11")), ylim=c(0,10))
axis(4)
mtext("Average % cover",side=2,line=3, col="red")
mtext("Average num. ind.",side=4,line=3)
我想将此图生成为堆叠条形图,而不仅仅是单个点。任何帮助将不胜感激,谢谢!
这符合你的要求吗?这是您的数据:
dput(df)
structure(list(id = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L,
3L), .Label = c("cv", "c1", "c2"), class = "factor"), Date = structure(c(1L,
2L, NA, 3L, 4L, 5L, 3L, 4L, 5L), .Label = c("2014-09-01", "2014-10-02",
"2014-10-15", "2014-11-12", "2014-12-11"), class = "factor"),
Average = c(4, 5.5, NA, 2.125, 1, 0.5, 3.375, 1.75, 0.625
)), .Names = c("id", "Date", "Average"), row.names = c(NA,
9L), class = "data.frame")
使用 ggplot2
而不是基本 R 图形,这是一个简洁的堆叠条形图,但由于数据稀疏,没有太多可堆叠的东西。
ggplot(df, aes(x=Date, y = Average)) + geom_bar(stat = "identity", position = "stack")
编辑
ccapizano 提出了一个很好的观点。这是他的代码的结果:
我是 R 的新手,需要一些帮助才能真正做到。
我有这三个数据框。
> Botcv
Date Average
1 2014-09-01 4.0
2 2014-10-02 5.5
> Botc1
Date Average
1 2014-10-15 2.125
2 2014-11-12 1.000
3 2014-12-11 0.500
> Botc2
Date Average
1 2014-10-15 3.375
2 2014-11-12 1.750
3 2014-12-11 0.625
我使用这些数据框来制作这个图
plot(Botcv$Date, Botcv$Average, type='p', pch=4, col="red", xlab='Date', ylab='', main=expression(italic('Botrylloides sp.')), xlim=c(as.Date("2014-09-01"),as.Date("2014-12-11")), ylim=c(0,10))
points(Botc1$Date, Botc1$Average, type='p', pch=19, xlab='Date', xlim=c(as.Date("2014-09-01"),as.Date("2014-12-11")), ylim=c(0,10))
points(Botc2$Date, Botc2$Average, type='p', pch=2, col="blue", xlab='Date', ylab='Average num ind.', xlim=c(as.Date("2014-09-01"),as.Date("2014-12-11")), ylim=c(0,10))
axis(4)
mtext("Average % cover",side=2,line=3, col="red")
mtext("Average num. ind.",side=4,line=3)
我想将此图生成为堆叠条形图,而不仅仅是单个点。任何帮助将不胜感激,谢谢!
这符合你的要求吗?这是您的数据:
dput(df)
structure(list(id = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L,
3L), .Label = c("cv", "c1", "c2"), class = "factor"), Date = structure(c(1L,
2L, NA, 3L, 4L, 5L, 3L, 4L, 5L), .Label = c("2014-09-01", "2014-10-02",
"2014-10-15", "2014-11-12", "2014-12-11"), class = "factor"),
Average = c(4, 5.5, NA, 2.125, 1, 0.5, 3.375, 1.75, 0.625
)), .Names = c("id", "Date", "Average"), row.names = c(NA,
9L), class = "data.frame")
使用 ggplot2
而不是基本 R 图形,这是一个简洁的堆叠条形图,但由于数据稀疏,没有太多可堆叠的东西。
ggplot(df, aes(x=Date, y = Average)) + geom_bar(stat = "identity", position = "stack")
编辑 ccapizano 提出了一个很好的观点。这是他的代码的结果: