web-dev-qa-db-fra.com

Comment dessiner un terrain vide?

Je dois faire un complot vide. C'est le meilleur que je puisse trouver.

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

Des solutions plus simples? 

P.S .: complètement vide, pas d'axe etc.

83
Adam SO

Que diriez-vous de quelque chose comme:

plot.new()
89
Joshua Ulrich

Je suggère que quelqu'un ait besoin de créer un tracé vide pour pouvoir y ajouter des graphiques ultérieurement. Donc, en utilisant

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

vous pouvez spécifier les limites des axes de votre graphique.

48
stukselbax

Ceci est légèrement plus simple que votre solution d'origine:

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

Ce qui suit ne trace rien dans l'intrigue et il restera vide.

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

Ceci est utile lorsque vous souhaitez ensuite ajouter des lignes ou des points dans une boucle for ou quelque chose de similaire. N'oubliez pas de changer les valeurs xlim et ylim en fonction des données que vous souhaitez tracer.

16
Mehrad Mahmoudian

Adam, à la suite de votre commentaire ci-dessus ("Je voulais que le tracé vide serve de remplissage dans un tracé multiplot (mfrow)."), Ce que vous voulez en réalité est l'option mfg

    par(mfg=c(row,column))

- qui contrôle où vous voulez mettre la prochaine parcelle. Par exemple, pour placer une parcelle au milieu d’un multiplot 3x3,

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

Vous avez besoin d'une nouvelle fenêtre de tracé et d'un système de coordonnées. Vous avez donc besoin de plot.new() et plot.window(). Vous pouvez alors commencer à ajouter des éléments graphiques:

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

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

exemple parcelle

11
why.knot

Votre solution présente un intérêt que plot.new() ne présente cependant pas: dans le tracé vide, vous "dessinez", vous pouvez écrire du texte aux coordonnées spécifiées avec text(x = ..., y = ..., your_text).

4
Dotoma
grid.newpage() ## If you're using ggplot

grid() ## If you just want to activate the device.
2
Brandon Bertelsen

Une parcelle vide avec des textes qui sont positionnés.

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
Nick Dong

Si quelqu'un recherche une solution ggplot2, vous pouvez utiliser soit cowplot ou patchwork packages

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

Créé le 2019-03-17 par le paquet reprex (v0.2.1.9000)

0
Tung