Как сдвинуть бары от оси Y с помощью barplot () R - PullRequest
0 голосов
/ 22 декабря 2018

У меня есть барплот со следующим кодом:

bp <- barplot(COL0.matrix,
    beside=T,
    col=col,
    ylim=c(0,100), yaxt="n",
    xlab="Time",ylab="Relative Electrolyte Leakage (%)",
    las=1,xaxt = "n",
    cex.axis=1.5, cex.names= 1.5, font=2, font.lab=2, cex.lab=1.5, family="A", space=c(0,0,1,0), xaxs = 'i')
axis(side=2, family="A", cex.axis=0.8, las=1, font=2, pos=0, tck=c(0), at=c(0,10,20,30,40,50,60,70,80,90,100), labels=c("0", "10","20","30","40","50","60","70","80","90","100"))
axis(side=2, at=c(0,10,20,30,40,50,60,70,80,90,100), labels = c(NA),tcl=c(-0.25),pos=0)
axis(side=2, at=c(0,10,20,30,40,50,60,70,80,90,100), labels = c(NA),tcl=c(0.25),pos=0)
axis(side=1, at=c(1.2, 4.2), labels = c("Dawn", "Dusk"),tck=c(0), family="A", cex.axis=1.5, font=2, pos=0)

Это приводит к следующему барплоту: Barplot resulting from the above code

Я пытаюсь сдвинуть барыкоторые находятся прямо рядом с осью у.Я попытался изменить пробел = (...), но это сдвигает всю ось X, так что оси X и Y больше не соединяются.

Есть ли способ смещения двух левых столбцов?

1 Ответ

0 голосов
/ 22 декабря 2018

Вы можете использовать параметр line для перемещения оси вместо перемещения стержней.Вы хотите удалить pos = 0 и определить заголовок y вне функции barplot, чтобы вы также могли контролировать его положение.Также вам захочется поиграть с партией par(mar = ..., чтобы она выглядела правильно для вашего устройства.Ведь если вы сохраняете в устройстве pdf ваше поле и даже параметры cex, вероятно, потребуется скорректировать, чтобы сделать его красивым.Также я установил графический параметр xpd = TRUE, чтобы функция lines в последней строке отображалась в поле.Если вы этого не сделаете, у вас будет ось оси, которая не соответствует оси Y.Если вы этого не хотите, удалите последнюю строку.

COL0.matrix <-  structure(c(71.44109964, 78.43178612, 64.31581642, 70.3339388 ), .Dim = c(2L, 2L), .Dimnames = list(c("Control", "bold(\"Col-0 840g ha\"^\"-1\")" ), c("Dawn", "Dusk")))
col = c("white", "grey70", "white", "grey70")
par(mar = c(5,7,5,5), xpd = TRUE)
bp <- barplot(COL0.matrix,
              beside=T,
              col=col,
              ylim=c(0,100), yaxt="n",
              xlab="Time", ylab = "",
              las=1,xaxt = "n",
              cex.axis=1.5,
              cex.names= 1.5,
              font=2,
              font.lab=2,
              cex.lab=1.5,
              family="A",
              space=c(0,0,1,0),
              xaxs = 'i')

mtext("Relative Electrolyte Leakage (%)", side = 2, font = 2, cex = 1.5, line = 4)

axis(side=2, family="A", cex.axis=0.8,
     las=1, font=2, tck=c(0),
     at=c(0,10,20,30,40,50,60,70,80,90,100),
     labels=c("0", "10","20","30","40","50","60","70","80","90","100"),
     line = 1)
axis(side=2, at=c(0,10,20,30,40,50,60,70,80,90,100), labels = c(NA),tcl=c(-0.25), line = 1)
axis(side=2, at=c(0,10,20,30,40,50,60,70,80,90,100), labels = c(NA),tcl=c(0.25), line = 1)
axis(side=1, at=c(1.2, 4.2), labels = c("Dawn", "Dusk"),tck=c(0), family="A", cex.axis=1.5, font=2, line = 0)
lines(x = c(-0.3, 5.3), y = c(0, 0))
...