【问题标题】:How do I control space between bars?如何控制条之间的空间?
【发布时间】:2012-12-05 15:26:59
【问题描述】:

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

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”应该结合。我该怎么做呢?

【问题讨论】:

    标签: r bar-chart


    【解决方案1】:

    您应该将参数 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))
    

    【讨论】:

    • 这回答了这个问题,但(对我而言)并没有解决来自 OP 的数据目前不是对barplot 函数非常有用的格式的问题。
    【解决方案2】:

    如果您的数据格式正确,您的生活会轻松很多。 barplot 函数接受 vectormatrix 的输入。当输入为matrix 时,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 命令中,记住文档中的详细信息:

    如果height 是矩阵,besideTRUE,则space 可以由两个数字指定,其中第一个是同一组中的条之间的间距,第二个是组之间的间距.如果未明确给出,则默认为 c(0,1),如果 height 是矩阵,beside 是 TRUE,否则默认为 0.2

    【讨论】:

      猜你喜欢
      • 2020-11-14
      • 2020-08-25
      • 1970-01-01
      • 1970-01-01
      • 2018-01-23
      • 2018-06-01
      • 2018-10-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多