Сделайте определенные линии невидимыми на графике решетки - PullRequest
0 голосов
/ 23 апреля 2019

У меня есть график, сгенерированный с помощью следующего кода:

require(lattice)
mydata <- data.frame(y = c(0.1, 0.4, 0.3, 0.23, 0.17, 0.27), x = c(1,2,3,4,5,6))
ticks_at <- seq(-0.5, 0, 0.1)
barchart(-y ~ x, 
         mydata, 
         horizontal = FALSE, 
         origin=0, 
         scales = list(y=list(at = ticks_at, 
                              labels = -1 * (ticks_at)),
                       alternating = 2,
                       tck = c(0,1)),
         xlab = "x",
         ylab ="y")

Я хочу сделать две вещи: а) я хочу, чтобы по оси х были галочки (сейчас, как вы можете видеть, только по оси у есть галочки), б) я хочу удалить линии левой и верхней оси, чтобы график имеет только нижнюю и правую оси. Заранее спасибо за помощь.

1 Ответ

0 голосов
/ 21 мая 2019

Добавление отметок к нижней, но не к верхней оси X можно сделать, добавив следующее в scales = list(...) часть вашего кода.

x = list(tck = c(1, 0))

Устранение верхней и / или боковой оси не так просто с lattice. Вы можете создать собственную функцию оси, чтобы заменить левый, правый, верхний и нижний компоненты на axis.default(). Это было описано в Скрыть верхнюю ось x на графике doubleYScale в R . Я большой поклонник решетки, но был бы склонен использовать базовую графику для того, что вы хотите:

# Starting with values in mydata and ticks_at
  opar <- par(mar = c(5,2,2,5) + 0.1)
  mp <- barplot(-mydata$y, axes = FALSE, col = "cyan", xlab = "x")
  axis(1, at = mp, line = 1, labels = mydata$x) # or explicit labels if needed
  axis(4, las = 1, at = ticks_at, labels = -ticks_at)
  title(ylab = "y", line = 0) # mtext could be used to place "y" on the right
  par(opar)
...