Das Komplikations hier Problem ist, dass, obwohl das colorkey=
Argument sehr ähnlich wie das legend=
Argument behandelt wird, ist es nicht ganz Unterstützung die vollständige Suite von Positionierungsmöglichkeiten, die legend=
tun. Während Legenden direkt unter "left"
, "right"
, "top"
, "bottom"
und "inside"
plaziert werden können, unterstützt die graphische Darstellung colorkey=
nur die ersten vier davon.
A ziemlich sauber Abhilfe ist die colorkey Argumentliste von einem Aufruf von spplot()
vorbereitet zu extrahieren, und das über sein legend=
Argument zu einem zweiten spplot()
Aufruf passiert in. colorkey=
„weiß“, wie ein colorkey Objekt vorzubereiten und legend=
weiß, wie innerhalb von Plots beliebige Objekte zu zeichnen, so können wir die beiden bekommen kombinieren, was wir wollen:
library(sp)
library(grid)
library(lattice)
data(meuse.grid)
gridded(meuse.grid)=~x+y
## Call spplot() once as a way to construct a list of arguments
## to draw.color.key
SP <- spplot(meuse.grid[,'dist'],
colorkey = list(space = "left", height = 0.4)
)
args <- SP$legend$left$args$key
## Prepare list of arguments needed by `legend=` argument (as described in ?xyplot)
legendArgs <- list(fun = draw.colorkey,
args = list(key = args),
corner = c(0.05,.75))
## Call spplot() again, this time passing in to legend the arguments
## needed to print a color key
spplot(meuse.grid[,'dist'], colorkey = FALSE,
legend = list(inside = legendArgs))
Hinweis:colorkey=
mangelnde Unterstützung für eine "Inside" -Option scheint weniger eine Design-Wahl als nur eine Frage der Paket-Autoren 'noch nicht um die Umsetzung der erforderlichen Code zu bekommen. Als Beweis, dass Sie in der Dokumentation für colorkey=
in ?lattice::levelplot
(zu denen eine unter der Regie von `sp :: spplot?):
colorkey: logical specifying whether a color key is to be drawn
alongside the plot, or a list describing the color key. The
list may contain the following components:
‘space’: location of the colorkey, can be one of ‘"left"’,
‘"right"’, ‘"top"’ and ‘"bottom"’. Defaults to
‘"right"’.
‘x’, ‘y’: location, currently unused
‘corner’: Interacts with x, y; currently unimplemented
Nice! Ich habe es zu den spplot-Beispielen hinzugefügt, wenn es Ihnen nichts ausmacht. –
Überhaupt nicht, froh, dass es Ihnen gefällt! Es ist jedoch ein bisschen wie ein Hack, da es die Position des Schlüssels um seine Mitte relativ zur Größe des Diagrammbereichs definiert, was dazu führt, dass es bei einer Neuskalierung der Abbildung verrutscht. Eine bessere Lösung wäre, die Position in der oberen linken Ecke mit einem absoluten Abstand zum Rand des Diagrammbereichs zu definieren, aber ich weiß leider nicht, wie ich das machen soll. – Backlin
Danke Backlin !! Ich wollte dich genau danach fragen - die Positionierung relativ zur oberen Ecke. Gibt es eine Möglichkeit wie das 'corner' Argument von' key.space'? – TMS