如何画一个空图?


106

我需要作一个空图。这是我能想到的最好的方法。

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

还有更简单的解决方案吗?

PS:完全空,无轴等。

Answers:


107

怎么样:

plot.new()

@亚当,我不知道您所说的“正确的”是什么意思。
约书亚·乌尔里希

@Joshua,对不起plot.new()工作正常,不需要x11()。我说R正确是因为我认为x11()是您解决方案的一部分,但如果没有它,它就可以工作。
亚当SO

1
@Adam x11()是跨平台的R命令,用于打开新设备。如果您打开并呼叫plot.new()设备,则会清除当前设备。
约书亚·乌尔里希

1
是否有优势x11()dev.new()?我的本能是要使用后者来适应本地默认设备,但是我不确定那是如何工作的。
马特·帕克

@Matt:我x11()习惯使用。我不是R绘图方面的专家,但是在浏览了文档之后,dev.new()可能会更好。
Joshua Ulrich

63

我建议有人需要作空图,以便以后添加一些图形。因此,使用

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

您可以指定图形的轴限制。


25

这比原始解决方案要简单一些:

plot(0,type='n',axes=FALSE,ann=FALSE)

无需添加ann=FALSE,无论如何将是一个空白区域。但是,很好的解决方案,谢谢!
MS Berends

22

以下内容在图中未显示任何内容,它将保持为空。

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

当您想在for循环或类似内容之后添加线或点时,此功能很有用。只需记住根据要绘制的数据更改xlimylim值。

附带说明: 这也可以用于箱线图,小提琴图和群图。对于那些记得添加add = TRUE到其绘图功能的用户,还请指定at =要在其上绘图的数字(默认值是x轴,除非您horz = TRUE在这些功能中进行了设置)。


17

亚当,在您上面的评论之后(“我希望空图用作多图(mfrow)图的填充物。”),您真正想要的是mfg选项

    par(mfg=c(row,column))

-控制您要放置下一个绘图的位置。例如,要将图放置在3x3多图的中间,请执行

    par(mfrow=c(3,3))
    par(mfg=c(2,2))
    plot(rnorm(10))

14

您需要一个新的绘图窗口以及一个坐标系,因此需要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

您的解决方案plot.new()尚未引起您的兴趣:在“绘图”的空白图中,您可以使用来在指定坐标处编写文本text(x = ..., y = ..., your_text)



2

如果有人在寻找ggplot2解决方案,则可以使用cowplotpatchwork软件包

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 = ")"
  )

reprex软件包(v0.2.1.9000)创建于2019-03-17


1

一个带有一些已设置位置的文本的空图。

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")

为什么要添加文字?这与“如何创建一个空图?”有什么关系。总的来说,这似乎比问题OP中的方法要复杂得多plot(0,xaxt='n',yaxt='n',bty='n',pch='',ylab='',xlab=''),因为main = "", sub = ""即使没有它们,您甚至都可以得到相同的结果。
格雷戈尔·托马斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.