【问题标题】:Trying to convert a standard plot to a barplot试图将标准图转换为条形图
【发布时间】:2015-04-19 11:00:16
【问题描述】:

我是 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)

我想将此图生成为堆积条形图,而不仅仅是单个点。任何帮助将不胜感激,谢谢!

【问题讨论】:

    标签: r plot bar-chart stacked-chart


    【解决方案1】:

    这是否符合您的要求?这是您的数据:

    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")
    

    编辑 ccapizzano 提出了一个很好的观点。这是他的代码的结果:

    【讨论】:

    • 对于真正的堆积条形图,您可以区分 id 组的 df data.frame。例如:df<-df[complete.cases(df),]; ggplot(df,aes(x=Date,y=Average,fill=id))+geom_bar(stat='identity',position='stack',colour='black')+scale_fill_manual(values=c('black','darkgrey','lightgrey'),labels=unique(df$id))+theme_classic()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-02
    • 2017-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-27
    相关资源
    最近更新 更多