12

我正在使用以下代码绘制条形图:

heights1=c(5,5,4.5,4)
barplot(heights1, main="Language ", names.arg=c("Hindi R/W", "Speak" , "English 
R/W","Speak"), ylab=" level ", xlab="Language starting with mostly used",  
cex.names=0.8, col=c("darkblue","red"))

输出如下:

在此处输入图像描述

但我想要的是“Hindi R/w”和“Speak”应该没有任何间隙地结合起来,然后出现一个空格,然后“English R/w”和“Speak”应该结合起来。我该怎么做呢?

4

2 回答 2

13

space=您应该为您的函数添加参数barplot(),其中数字对应于每个条形之前的空格。

heights1=c(5,5,4.5,4)    
barplot(heights1, main="Language ", names.arg=c("Hindi R/W", "Speak" , "English 
  R/W","Speak"), ylab=" level ", xlab="Language starting with mostly used",  
  cex.names=0.8, col=c("darkblue","red"),space=c(0.2,0,0.2,0))

在此处输入图像描述

于 2012-12-18T12:16:02.977 回答
10

如果您的数据格式正确,您的生活会轻松得多。该barplot函数接受 avector或的输入matrix。当输入为 amatrix时,R 可以使用dimnames为您自动标记事物。

尝试这个:

heights1 = c(5, 5, 4.5, 4)
barplot(t(matrix(heights1, ncol=2, byrow=TRUE, 
                 dimnames=list(c("Hindi", "English"), 
                               c("Read/Write", "Speak")))), 
        main="Language ", ylab="Level", 
        xlab="Language starting with mostly used", 
        col=c("darkblue", "red"), 
        beside=TRUE, ylim = c(0, 6), 
        legend.text = TRUE,
        args.legend = list(x = "topright")) 

在此处输入图像描述

如果两组之间的间距太大,那么@Didzis 的建议在这里也很合适。添加space = c(0, .2)到您的barplot命令中,记住文档中的详细信息:

Ifheight是一个矩阵并且besideTRUE,space可以由两个数字指定,其中第一个是同一组中的条之间的空间,第二个是组之间的空间。如果没有明确给出,则默认为c(0,1)如果 height 是矩阵并且旁边是TRUE0.2否则默认为。

于 2012-12-18T18:44:14.563 回答