【问题标题】:barplot xlim shifts axis -> offset to axis at=midpoints missingbarplot xlim 移动轴-> 偏移到轴 at=midpoints 缺失
【发布时间】:2017-03-30 08:08:39
【问题描述】:

我有以下问题——它纯粹是一个苦行僧,但它看起来并不好看,这让我很困扰: 我生成了一个简单的横向条形图,条形底部带有刻度。默认设置生成一个比我的条短的 x 轴(图 1)。为了解决这个问题,我加入了 xlim。一旦我这样做了,x 轴会稍微向左移动,因此 y 轴会接触到条形图(图 2)。这看起来一点也不好看。我猜 xlim 以某种方式覆盖了默认参数,但我找不到哪个。如有任何建议,我将不胜感激!

rm(list=ls())


data<-c(69,500,597)
names(data)<-c("text1", "text2", "text3")

midpoints<-barplot(data, beside=T, space=1, xlim=c(0,600))

filename=paste("orig.pdf", sep="")
pdf(file=filename, width=10, height =5)

par(mar=c(4,9,1,4))
barplot(data, beside=T, xlab=expression(paste("Text")), 
        axes=T, cex.lab=2, cex.axis=2, cex.names=2,  font.axis = 2,
        col=c("grey"),  horiz=T, las=1, font.lab=2,  space=1, 
        names.arg=colnames(data))
axis(side = 2, at = midpoints , labels = F, cex.axis=1.5)


dev.off()

filename=paste("with_limit.pdf", sep="")
pdf(file=filename, width=10, height =5)

lim<-c(0,600)
par(mar=c(4,9,1,4))
barplot(data, beside=T, xlab=expression(paste("Text")), 
        axes=T, cex.lab=2, cex.axis=2, cex.names=2,  font.axis = 2,
        col=c("grey"),  horiz=T, las=1, font.lab=2,  space=1, 
        names.arg=colnames(data), xlim=lim)
axis(side = 2, at = midpoints , labels = F, cex.axis=1.5)


dev.off()

图 1 图 2

【问题讨论】:

    标签: bar-chart axis offset


    【解决方案1】:

    与此同时,我确实找到了两个可能的答案,它们都不完美但有效。 第一个是使用 xaxs="r" 但现在偏移量太大了。

    filename=paste("solution1.pdf", sep="")
    pdf(file=filename, width=10, height =5)
    
    lim<-c(0,600)
    par(mar=c(4,9,1,4))
    barplot(data, beside=T, xlab=expression(paste("Text")), 
            axes=T, cex.lab=2, cex.axis=2, cex.names=2,  font.axis = 2,
            col=c("grey"),  horiz=T, las=1, font.lab=2,  space=1, 
            names.arg=colnames(data), xlim=lim, xaxs="r")
    axis(side = 2, at = midpoints , labels = F, cex.axis=1.5)
    
    
    dev.off()
    

    Solution1

    第二个选项是让 xlim 从否定开始。这具有手动调整偏移的缺点。在我的情况下,我有多个数字,我希望它始终相同,所以我使用(这里)最大值 600 -> 12 的 2%。对于所有其他人,我也使用最大值的 2%。最后效果很好。

    filename=paste("solution2.pdf", sep="")
    pdf(file=filename, width=10, height =5)
    
    lim<-c(-12,600)
    par(mar=c(4,9,1,4))
    barplot(data, beside=T, xlab=expression(paste("Text")), 
            axes=T, cex.lab=2, cex.axis=2, cex.names=2,  font.axis = 2,
            col=c("grey"),  horiz=T, las=1, font.lab=2,  space=1, 
            names.arg=colnames(data), xlim=lim)
    axis(side = 2, at = midpoints , labels = F, cex.axis=1.5)
    
    
    dev.off()
    

    Solution2

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-19
      • 2019-05-22
      • 2014-08-01
      • 2012-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多