Ответы:
Как насчет чего-то вроде:
plot.new()
x11()
- это кроссплатформенная команда R для открытия нового устройства. Если у вас открыто устройство и вы звоните plot.new()
, текущее устройство будет очищено.
x11()
более dev.new()
? Мой инстинкт состоит в том, чтобы выбрать последнее, чтобы приспособить любое локальное устройство по умолчанию, но я не уверен, как все работает.
x11()
по привычке. Я не специалист по построению графиков в R, но после просмотра документации, dev.new()
вероятно, будет лучше.
Я предлагаю кому-то создать пустой сюжет, чтобы потом добавить на него графику. Итак, используя
plot(1, type="n", xlab="", ylab="", xlim=c(0, 10), ylim=c(0, 10))
вы можете указать пределы осей вашего изображения.
Это немного проще, чем ваше исходное решение:
plot(0,type='n',axes=FALSE,ann=FALSE)
ann=FALSE
, все равно будет пустая область. Но отличное решение, спасибо!
Следующее ничего не отображает на графике и останется пустым.
plot(NULL, xlim=c(0,1), ylim=c(0,1), ylab="y label", xlab="x lablel")
Это полезно, когда вы хотите добавить линии или точки впоследствии в for
цикл или что-то подобное. Только не забудьте изменить xlim
и ylim
значение на основе данных , которые вы хотите построить.
В качестве примечания:
это также можно использовать для графиков Boxplot, Violin и swarm plots. для тех, кто не забывает добавить add = TRUE
к своей функции построения графика, а также указать, at =
на каком номере вы хотите их построить (по умолчанию ось x, если вы не установили horz = TRUE
в этих функциях.
Адам, следуя вашему комментарию выше («Я хотел, чтобы пустой график служил заполнителем в многосюжетном (mfrow) графике.»), На самом деле вам нужен параметр mfg
par(mfg=c(row,column))
- который определяет, где вы хотите разместить следующий сюжет. Например, чтобы поместить график в середину мультиплота 3x3, выполните
par(mfrow=c(3,3))
par(mfg=c(2,2))
plot(rnorm(10))
Вам нужно новое окно графика, а также система координат, поэтому вам нужно plot.new()
и plot.window()
, затем вы можете начать добавлять элементы графика:
plot.new( )
plot.window( xlim=c(-5,5), ylim=c(-5,5) )
points( rnorm(100), rnorm(100) )
axis( side=1 )
grid.newpage() ## If you're using ggplot
grid() ## If you just want to activate the device.
grid()
не имеет отношения к сетке пакета AFAIK
Если кто - то ищет ggplot2
решение, вы можете использовать либо cowplot
или patchwork
пакеты
library(ggplot2)
### examples from cowplot vignettes
plot.mpg <- ggplot(mpg, aes(x = cty, y = hwy, colour = factor(cyl))) +
geom_point(size = 2.5)
plot.diamonds <- ggplot(diamonds, aes(clarity, fill = cut)) +
geom_bar() +
theme(axis.text.x = element_text(angle = 0, vjust = 0.5))
library(cowplot)
### use NULL
plot_grid(plot.mpg, NULL, NULL, plot.diamonds,
labels = c("A", "B", "C", "D"),
ncol = 2
)
# Note: if you want to initialize an empty drawing canvas, use ggdraw()
library(patchwork)
### use plot_spacer()
plot.mpg + plot_spacer() + plot_spacer() + plot.diamonds +
plot_layout(ncol = 2) +
plot_annotation(
title = "Plot title",
subtitle = "Plot subtitle",
tag_levels = "A",
tag_suffix = ")"
)
Создано 17.03.2019 пакетом REPEX (v0.2.1.9000)
Пустой сюжет с некоторыми текстами, которые задают позицию.
plot(1:10, 1:10,xaxt="n",yaxt="n",bty="n",pch="",ylab="",xlab="", main="", sub="")
mtext("eee", side = 3, line = -0.3, adj = 0.5)
text(5, 10.4, "ddd")
text(5, 7, "ccc")
plot(0,xaxt='n',yaxt='n',bty='n',pch='',ylab='',xlab='')
, поскольку вы добавляете, main = "", sub = ""
даже если вы получаете тот же результат без них.