Как нарисовать пустой сюжет? - PullRequest
87 голосов
/ 24 января 2011

Мне нужно сделать пустой сюжет. Это лучшее, что я мог придумать.

plot(0, xaxt = 'n', yaxt = 'n', bty = 'n', pch = '', ylab = '', xlab = '')

Какие-нибудь более простые решения?

P.S .: полностью пустой, без оси и т. Д.

Ответы [ 10 ]

98 голосов
/ 24 января 2011

Как насчет чего-то вроде:

plot.new()
52 голосов
/ 01 мая 2014

Я полагаю, что кто-то должен сделать пустой график, чтобы добавить к нему немного графики позже.Таким образом, используя

plot(1, type="n", xlab="", ylab="", xlim=c(0, 10), ylim=c(0, 10))

, вы можете указать пределы осей вашего изображения.

22 голосов
/ 02 июня 2014

Это немного проще, чем ваше оригинальное решение:

plot(0,type='n',axes=FALSE,ann=FALSE)
18 голосов
/ 09 февраля 2015

Следующее ничего не отображает на графике, и оно останется пустым.

plot(NULL, xlim=c(0,1), ylim=c(0,1), ylab="y label", xlab="x lablel")

Это полезно, когда вы хотите добавить линии или точки после этого в цикле for или что-то подобное.Просто не забудьте изменить значения xlim и ylim на основе данных, которые вы хотите построить.

15 голосов
/ 10 октября 2012

Адам, следуя вашему комментарию выше («Я хотел, чтобы пустой график служил заполнителем на графике с несколькими участками (mfrow).»), Вам действительно нужна опция mfg

    par(mfg=c(row,column))

, котораяконтролирует, где вы хотите разместить следующий сюжет.Например, чтобы поместить график в середину мультиплота 3x3, выполните команду

    par(mfrow=c(3,3))
    par(mfg=c(2,2))
    plot(rnorm(10))
.
13 голосов
/ 06 октября 2016

Вам нужно новое окно графика, а также система координат, поэтому вам нужно plot.new() и plot.window(), затем вы можете начать добавлять элементы графика:

plot.new( )
plot.window( xlim=c(-5,5), ylim=c(-5,5) )

points( rnorm(100), rnorm(100) )
axis( side=1 )

пример графика

4 голосов
/ 28 февраля 2013

В вашем решении есть интерес, которого нет у plot.new(): на пустом графике, который вы «рисуете», вы можете написать текст в указанных координатах с помощью text(x = ..., y = ..., your_text).

3 голосов
/ 25 января 2011
grid.newpage() ## If you're using ggplot

grid() ## If you just want to activate the device.
1 голос
/ 03 июля 2018

Пустой сюжет с некоторыми текстами, для которых задана позиция.

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")
0 голосов
/ 18 марта 2019

Если кто-то ищет решение 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 = ")"
  )

Создано в 2019-03-17 по представителю пакета (v0.2.1.9000)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...