在sciplot bargraph中更改x轴标签与轴的距离

时间:2013-04-19 21:42:54

标签: r graphics

我正在使用sciplot中的bargraph.CI构建一个情节。 x轴表示分类变量,因此该变量的值是x轴上不同位置的名称。不幸的是,这些名称很长,所以在默认设置下,其中一些名称就会消失。我通过在需要的地方注入“\ n”将它们分成多行来解决这个问题。这基本上有效,但因为名称现在是多行的,所以它们看起来太靠近x轴了。我需要把它们移到更远的地方。怎么样?

我知道我可以用mgp做到这一点,但这也会影响y轴。

我知道我可以在调用barplot.CI时设置axisnames = FALSE,然后使用axis创建一个单独的x轴。 (事实上​​,我已经这样做了,但只是为了使x轴比默认情况下延伸得更远 - 请参阅下面的代码。)然后我可以给x轴自己的mgp参数,它不会影响y轴。但据我所知,axis()很好地设置了序数或连续变量,并且似乎不适用于分类变量。在一些摆弄之后,我无法将它们放在正确的位置(即在对应栏的正下方)

最后,我尝试使用来自Hmisc的mgp.axis.labels来设置x轴mgp,这正是我想要的,但据我所知,它对任何事都没有影响。

想法?这是我的代码。

ylim    = c(0.5,0.8)
yticks  = seq(ylim[1],ylim[2],0.1)
ylab    = paste(100*yticks,"%",sep="")

bargraph.CI( 
    response    = D$accuracy,
    ylab        = "% Accuracy on Test",
    ylim        = ylim,
    x.factor    = D$training,
    xlab        = "Training Condition",
    axes        = FALSE
    )
axis(
    side        = 1,
    pos         = ylim[1],
    at          = c(0,7),
    tick        = TRUE,
    labels      = FALSE
    )
axis(
    side        = 2,
    tick        = TRUE,
    at          = yticks,
    labels      = ylab,
    las         = 1
    )

1 个答案:

答案 0 :(得分:1)

axis适用于cateory,但您应设置正确的刻度值并使用pos参数进行偏移量转换。在这里,我使用xvals bargraph.CI的返回值来设置àxis刻度线。

这是一个可重复的例子:

enter image description here

library(sciplot)
# I am using some sciplot data 
dat <- ToothGrowth
### I create along labels
labels <- c('aaaaaaaaaa\naaaaaaaaaaa\nhhhhhhhhhhhhhhh',
          'bbbbbbbbbb\nbbbbbbbbbbb\nhhhhhhhhhhhhhh',
          'cccccccccc\nccccccccccc\ngdgdgdgdgd')
## I change factor labels
dat$dose <- factor(dat$dose,labels=labels)
ll <- bargraph.CI(x.factor = dose, response = len, data = dat,axisnames=FALSE) 
## set at to xvals
axis(side=1,at=ll$xvals,labels=labels,pos=-2,tick=FALSE)