0

我正在使用来自 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
    )
4

1 回答 1

1

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

这是一个可重现的示例:

在此处输入图像描述

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)
于 2013-04-19T23:57:54.497 回答