在R中的图表上绘制多个条形图

机器算法验证 r 数据可视化 条形图
2022-03-05 22:24:05

我想在 R 中的一个图表上绘制四个条形图。我使用了以下代码。在这里,如何在图表顶部保留图例,特别是图例应该在 2 到 3 个条形图之间。我也尝试过,par(mar=c(4.1,4.1,8.1,4.1)但没有成功。而且,我还尝试legend()在第二个barplot之后运行,但没有用。图例适用于所有四个条形图。请帮助我。

    par(mfrow=c(1,4))
    barplot(t(A), beside=T, ylim=c(-100,100),..)
    barplot(t(B), beside=T, ylim=c(-100,100),..)
    barplot(t(C), beside=T, ylim=c(-100,100),..)
    barplot(t(D), beside=T, ylim=c(-100,100),..)
    legend(...)
2个回答

Mike 博士的回答很好,但我想我会提供利用 和 的刻面(或格状)特征的解决ggplot2方案lattice首先稍微准备一下数据:

mydata <- data.frame(Barplot1=rbinom(5,16,0.6), Barplot2=rbinom(5,16,0.25),
                     Barplot3=rbinom(5,5,0.25), Barplot4=rbinom(5,16,0.7))
mydata$id <- 1:nrow(mydata)
dat <- reshape2::melt(mydata,id.vars = "id")

然后我们可以在中进行以下操作ggplot2

ggplot(dat,aes(x=factor(id), y = value, fill=factor(id))) + 
facet_wrap(~variable) +
geom_bar(stat="identity")

在此处输入图像描述

并使用lattice

barchart(~value|variable,group = factor(id),data=dat,
         key = simpleKey(text = as.character(1:5),
                rectangles = TRUE,points = FALSE,space = "right"))

在此处输入图像描述

我认为最简单的解决方案是使用 barplot 命令的固有功能来解决您的问题。以下代码执行我解释的您想要完成的操作。

mydata <- data.frame(Barplot1=rbinom(5,16,0.6), Barplot2=rbinom(5,16,0.25),
                     Barplot3=rbinom(5,5,0.25), Barplot4=rbinom(5,16,0.7))
barplot(as.matrix(mydata), main="Interesting", ylab="Total", beside=TRUE, 
        col=terrain.colors(5))
legend(13, 12, c("Label1","Label2","Label3","Label4","Label5"), cex=0.6, 
       fill=terrain.colors(5))

阴谋

希望这能回答你的问题。