Farbcodierung von 95% Vertrauensellipsen für Zentroide

9

Ich habe Schwerpunkte für einen Gower-Ähnlichkeitsindex mit dem vegan{} -Paket in R gezeichnet und möchte die Ellipsenfüllungen basierend auf Faktoren in meinem ursprünglichen Datensatz farblich codieren. Die Zentroide sind für Month-Site-Kombinationen (und dies sind die einzigen Zentroide, die ich plotten möchte; siehe Datenbeispiel unten), aber ich möchte die Ellipsen nach Monat farbig codieren und dann in einem zweiten Diagramm nach Standort, um Unterschiede anzuzeigen zwischen Faktoren. Im Moment sieht der Code so aus:

%Vor%

Das MDB-Diagramm mit den Schwerpunkten sieht folgendermaßen aus:

Ich würde gerne in der Lage sein, die Füllungen der Zentroide farblich zu kodieren, basierend auf a) Site und b) Saison (Mai vs. September). Ich habe versucht, col=c("#0000ff22","#CAFF7022",...) zu verwenden, aber das funktioniert nicht, weil die Koordinaten für die Ellipsen in ord sind. Ich habe es auch versucht

%Vor%

, um die erste Hälfte der ceentroids zu einer Farbe zu machen (die erste Hälfte sind alle aus dem gleichen Monat), aber das ergibt den Fehler "Fehler in cov.wt (X, W): 'x' muss enthalten nur endliche Werte. "  Hilfe! Danke.

Die Daten sehen so aus:

%Vor%     
Margaret 17.08.2012, 01:54
quelle

1 Antwort

2

Idealerweise könnte die Funktion die in den Ellipsen verwendeten x- und y-Koordinaten zurückgeben. Hier ist eine einfache Modifikation von ordiellipse() , die jedem Listenelement der Funktionsausgabe xy hinzufügt:

%Vor%

Sie können nun Ihr stats -Objekt gemäß Ihrem Beispiel erstellen, aber draw = "none", because you'll want to play with stats 'selbst angeben, um die volle Kontrolle über das Ellipsen-Plotten zu haben (keine Notwendigkeit, grafische Argumente anzugeben):

%Vor%

Beachten Sie, dass die Statistik die gleiche Form hat, aber für jede Ellipse ein Element xy vorhanden ist:

%Vor%

Sie können diese in einer Schleife mit der Funktion polygon() darstellen, aber besser wäre es, alle xy -Koordinaten in ein einziges matrix oder data.frame zu platzieren, sodass Sie einfach nur einen Aufruf machen können polygon() , aber mit vektorisierten Argumenten wie col , lwd . Ich werde die xy Matrizen mit lapply() extrahieren und sie dann zusammen als data.frame zusammenfassen. Der Schlüssel besteht darin, die einzelnen Ellipsen mit NA s zu trennen, so dass die Polygonzeichnung weiß, wo einer stoppt und der nächste beginnt:

%Vor%

Plotten wird einfach:

%Vor%

Jetzt müssen Sie nur noch die grafischen Argumente an polygon() korrekt anordnen.

    
tim riffe 19.08.2012, 17:41
quelle

Tags und Links