在R中的图形上绘制多个条形图[关闭]


12

我想在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(...)

1
有人用R
布兰登·贝特尔森

@Kevin这是一个有效的Q;R具有命令行界面这一事实并不意味着任何R问题都是编程问题。

@布兰登确定; 您以后可以使用建议的修改,并且您也可以从接受的建议中获得2个代表。

Answers:


17

麦克博士的回答是一个很好的,但我想我会提供坐刻面(或格构)优势的特色解决方案ggplot2lattice。首先略微准备数据:

mydata$id <- 1:nrow(mydata)
dat <- melt(mydata,id.vars = "id")

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

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

在此处输入图片说明

并使用lattice

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

在此处输入图片说明


@布兰登-这是我的新任务。如果这些问题包含base,ggplot2和lattice的示例,则它们对于其他问题是更好的参考。
joran 2011年

@Joran:太棒了。
samarasa

如何在ggplot版本中的“ factor(id)”上重命名标签?
News_is_Selection_Bias

11

我认为最简单的解决方案是使用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))

情节

希望这能回答您的问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.