2013-03-19 8 views
6

I erzeugen Manipulieren einer Handlung das Paket hexbin Verwendung:Formatierung und einen Plot von der R-Paket "hexbin"

enter image description here

# install.packages("hexbin", dependencies=T) 
library(hexbin) 


set.seed(1234) 
x <- rnorm(1e6) 
y <- rnorm(1e6) 
hbin <- hexbin(
    x = x 
    , y = y 
    , xbin = 50 
    , xlab = expression(alpha) 
    , ylab = expression(beta) 
) 


## Using plot method for hexbin objects: 
plot(hbin, style = "nested.lattice") 

abline(h=0) 

Dies scheint ein S4-Objekt (hbin) zu erzeugen, die ich dann plotten mit plot. Nun würde Ich mag eine horizontale Linie auf dieses Grundstück hinzuzufügen abline mit, aber leider gibt dies den Fehler:

plot.new has not yet been called

Ich habe auch keine Ahnung, wie kann ich manipulieren z.B. die Position der Achsenbeschriftungen (Alpha und Beta sind innerhalb der Zahlen), ändern Sie die Position der Legende, etc.

Ich bin vertraut mit OOP, aber bis jetzt konnte ich nicht herausfinden, wie plot() behandelt die Objekt (ruft es bestimmte Methoden des Objekts?) und wie kann ich die resultierende Handlung manipulieren.

Warum kann ich nicht einfach eine Linie auf die Handlung zeichnen?

Wie kann ich Achsenbeschriftungen manipulieren?

Antwort

2

Verwenden Gitter Version von Hex ist - hexbinplot():

Sie werden mehr Glück ggplot2 mit haben. Mit panel können Sie Ihre Linie hinzufügen, und mit style können Sie verschiedene Arten der Visualisierung von Sechsecken wählen. Überprüfen Sie Hilfe für hexbinplot für mehr.

library(hexbin) 
library(lattice) 
x <- rnorm(1e6) 
y <- rnorm(1e6) 
hexbinplot(x ~ y, aspect = 1, bins=50, 
      xlab = expression(alpha), ylab = expression(beta), 
      style = "nested.centroids", 
      panel = function(...) { 
      panel.hexbinplot(...) 
      panel.abline(h=0) 
      }) 

enter image description here

+0

Wie kann ich die Größe der Achsenbeschriftungen und die entlang der Achse angezeigten Werte ändern? Ich habe 'cex. *' In allen Variationen versucht, aber das einzige, was ich ändern konnte, war die Größe der Legenden-Labels, ... Ich war auch nicht in der Lage, die Parameter zu ändern (zB 'par (mar = c (15, 15,15,15)) ') –

+1

Sieh dir Hilfe für' xyplot' und Argumente für 'scales' an. Zum Beispiel würde die Änderung der Größe der Werte entlang der x-Achse durch Hinzufügen von 'scales = list (x = list (cex = 1,5)) 'zu' hexbinplot 'erfolgen. Um Achsenbezeichnungen zu ändern, müssen Sie 'par.settings = list (par.xlab.text = list (cex = 1.5))' zu Ihrem Plot hinzufügen. Ich weiß, dass es nicht sehr intuitiv ist, aber so funktioniert es im Gitter. Lass es mich wissen, wenn das das Problem löst. –

+0

Ich verstehe immer noch nicht, warum diese Arbeit, und wo ich es in der Hilfe finden kann. Um die Größe von 'xlab' zu ändern, habe ich versucht' xlab = list ( expression (alpha) , cex = 2 ) 'Es funktioniert, aber es gibt keinen Hinweis im Handbuch. Vielleicht ist mein Weg dieser 'Grob' ??? Ich habe auch immer noch nicht verstanden, wie "plot", "trellis", "gitter", "ggplot", "grid", ... zusammenhängen. –

2

hexbin verwendet grid Grafiken, nicht base. Es gibt eine ähnliche Funktion, grid.abline, die Linien auf Grundstücken durch die Angabe einer Steigung und Schnitt ziehen können, aber das Koordinatensystem verwendet wird, ist verwirrend:

grid.abline(325,0) 

bekommt ungefähr das, was Sie wollen, aber der Abschnitt hier wurde gefunden mit dem Auge.

library(ggplot2) 
ggplot(data,aes(x=alpha,y=beta)) + geom_hex(bins=10) + geom_hline(yintercept=0.5) 

hexbin

+2

Also, es ist das Paket, das nicht gut ist? Um ehrlich zu sein, ich habe absolut keine Ahnung, wie verschiedene Pakete die Dinge anders darstellen. Bisher habe ich ggplot nicht verwendet, da die Ausgabe hässlich ist, und? Ggplot gibt keine Informationen darüber, wie z. Achsentitel (das gleiche gilt für Hexbin). Ist das eine gute Dokumentation der Funktionsweise verschiedener Plot-Mechanismen? ('plot()' verwendet 'base',' abline() 'kann nur Änderungen an' base' Plots vornehmen, 'hexbin' verwendet' grid', obwohl es in 'plot()' verwendet wird, das selbst 'base' verwendet (aber nicht in diesem Fall, da es "Grid" verwendet), verwendet ggplot ???, ...) –

+0

@Sven Siehe http://docs.ggplot2.org/current/ und http://ggplot2.org/ für die Dokumentation. Achsentitel können hier mit 'scale_x_continuous' und' scale_y_continuous' geändert werden. 'ggplot2' verwendet auch das' Grid'-System, bietet aber eine einfachere Schnittstelle. – James

0

hatte ich eine Menge Ärger viele grundlegende Handlung Anpassungen (Achsbereiche, Etiketten, etc.) mit der hexbin Bibliothek zu finden, aber ich herausgefunden, wie die Punkte für den Export in andere Plotten Funktion:

hxb<-hexbin(x=c(-15,-15,75,75), 
      y=c(-15,-15,75,75), 
      xbins=12) 

[email protected] #gives the x co-ordinates of each hex tile 
[email protected] #gives the y co-ordinates of each hex tile 
[email protected] #gives the cell size for each hex tile 

points([email protected], [email protected], [email protected]) 

Sie können nur diese drei Vektoren in jeden Plot Werkzeug füttern sind Sie normalerweise verwenden .. da die üblichen Zwicken Größenskalierung, etc., aber es ist viel besser als die hartnäckigen Hexplot-Funktion. Das Problem, das ich mit der ggplot2stat_binhex fand, ist, dass ich die Hexes nicht bekommen konnte, um verschiedene Größen zu sein ... gerade andere Farben.

Wenn Sie wirklich wollen Sechsecke, plottrix hat eine sechseckige Zeichnungsfunktion, die ich denke, ist in Ordnung.

Verwandte Themen