我正在使用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
)
答案 0 :(得分:1)
axis
适用于cateory,但您应设置正确的刻度值并使用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)