Как изменить существующие оси на графике в R? - PullRequest
0 голосов
/ 09 мая 2018

Я редактирую сюжет. Я делаю ошибки с форматированием осей и хочу их исправить. Однако, если я пишу правильный код после неправильного, новые оси добавляются поверх существующих осей, а не заменяют их. Есть ли лучший способ изменить оси, не начав рисовать график с нуля?

Это код:

library("sp")

#Prepare data
data("meuse.riv")
meuse.lst <- list(Polygons(list(Polygon(meuse.riv)),"meuse.riv"))
meuse.sr <- SpatialPolygons(meuse.lst)

#Create the plot
plot(meuse.sr, axes = F)
axis(1, at = c(178000 + 0:2 * 2000), cex.axis = 0.7)
#Code with a mistake: I need 3 stretches insted of 2

axis(1, at = c(178000 + 0:3 * 2000), cex.axis = 0.7)
#Right code but new axis is added to the old one; it can be seen because old part looks bolder

axis(2, at = c(326000 + 0:3 * 4000))
#Code with a mistake: I need smaller font (cex.axis = 0.7)

axis(2, at = c(326000 + 0:3 * 4000), cex.axis = 0.7)
#Right code but new labels are laid over the old ones. They are not readable.

Результат таков: enter image description here

1 Ответ

0 голосов
/ 09 мая 2018

Существует как минимум 2 способа сохранения базовой графики R и ее повторного построения:

library("sp")

pdf(NULL)
dev.control(displaylist="enable")
#Prepare data
data("meuse.riv")
meuse.lst <- list(Polygons(list(Polygon(meuse.riv)),"meuse.riv"))
meuse.sr <- SpatialPolygons(meuse.lst)

#Create the plot
plot(meuse.sr, axes = F)
axis(1, at = c(178000 + 0:2 * 2000), cex.axis = 0.7)

my.plot1 <- recordPlot()
invisible(dev.off())

# Display the saved plot
grid::grid.newpage()
my.plot1

Намного проще использовать библиотеку pryr:

library(pryr)

my.plot2 %<a-% {

  #Prepare data
  data("meuse.riv")
  meuse.lst <- list(Polygons(list(Polygon(meuse.riv)),"meuse.riv"))
  meuse.sr <- SpatialPolygons(meuse.lst)

  #Create the plot
  plot(meuse.sr, axes = F)
  axis(1, at = c(178000 + 0:2 * 2000), cex.axis = 0.7)
}
my.plot2
...