3

我想弄清楚如何制作可以显示两个数据集的条形图。每个都在 y 轴的一侧。我需要在几张图中显示许多数据集的空间。堆叠或除此之外是其他选项,但我想知道如何专门解决这个任务我已经开始玩了一点

#creating data    
names<-LETTERS[1:9]

data1<-c(8, 6, 3, 2, 0, 1, 1, 3, 1)
data2<-c(0, -1,  0,  0,  0,  0,  0, -2, -1)#negative to show them on the 
                                           #left side of yaxis

data1<-matrix(data1,ncol=9,nrow=1,byrow=F)
dimnames(data1)<-list(1,names)

data2<-matrix(data2,ncol=9,nrow=1,byrow=F)
dimnames(data2)<-list(1,names)

par(fig=c(0.5,1,0,1)) # making space for the "left" barplot
barplot(data1,horiz=T,axes=T,las=1)
par(fig=c(0.35,0.62,0,1), new=TRUE)#adjusting the "left" barplot

#because the labels would be negative

# use of axes=F
barplot(data2,axes=F,horiz=T,axisnames=FALSE)
#creating a new axis with desired labels
axis(side=1,at=seq(-8,0,2),labels=c(8,6,4,2,0))

但是我很难理解 fig=c(...) 背后的概念我如何为我的“左”条形图添加一个 xaxis,它具有相同的长度,即从 0:8 开始运行,就像另一个一样

谢谢亚历克斯

4

1 回答 1

2

只要您事先知道轴,这应该可以工作(添加 xlim 参数)。

我还稍微编辑了您之前的代码,因为我认为您希望您的输出看起来如何:

par(mfrow=c(1,2))
barplot(data2,axes=F,horiz=T,axisnames=FALSE,
        xlim=c(-8,0))

#creating a new axis with desired labels
axis(side=1,at=seq(-8,0,2),labels=c(8,6,4,2,0))
barplot(data1,horiz=T,axes=T,las=1)
于 2013-08-09T20:12:17.977 回答