2016-03-24 7 views
-1

Ich versuche, ein ternäres Diagramm mit ggtern zu erzeugen.Achse in ggtern ternären Plots anpassen

Meine Daten reichen von 0 - 1000 für x-, y- und z-Variablen. Ich fragte mich, ob es möglich ist, die Achsenlänge über 100 zu erweitern, um meine Daten darzustellen.

+1

Willkommen bei Stack Overflow! Bitte lesen Sie die Informationen über [wie man eine gute Frage stellt] (http://stackoverflow.com/help/how-to-ask) und wie man ein [reproduzierbares Beispiel gibt] (http://stackoverflow.com/questions/ 5963269). Dies wird es anderen sehr erleichtern, Ihnen zu helfen. – zx8754

Antwort

1

Ich denke, es gibt keine direkte Lösung, dies mit ggtern zu tun. Aber eine einfache Abhilfe könnte wie folgt aussehen:

library(ggtern) 

df = data.frame(x = runif(50)*1000, 
       y = runif(50)*1000, 
       z = runif(50)*1000, 
       Group = as.factor(round(runif(50,1,2)))) 

ggtern() + 
    geom_point(data = df, aes(x/10, y/10, z/10, color = Group)) + 
    labs(x="X", y="Y", z="Z", title="Title") + 
    scale_T_continuous(breaks = seq(0,1,0.2), labels = 1000*seq(0,1,0.2)) + 
    scale_L_continuous(breaks = seq(0,1,0.2), labels = 1000*seq(0,1,0.2)) + 
    scale_R_continuous(breaks = seq(0,1,0.2), labels = 1000*seq(0,1,0.2)) 
2

@Nevrome auf dem richtigen Weg ist, wird Ihre Punkte nach wie vor als ‚Kompositionen‘ aufgetragen werden, dh die Konzentrationen der Summe eins, aber Sie können die Etiketten der Änderung Achsen, um einen Bereich von 0 bis 1000 anzuzeigen.

library(ggtern) 
set.seed(1) 
df = data.frame(x = runif(10)*1000, 
       y = runif(10)*1000, 
       z = runif(10)*1000) 
breaks = seq(0,1,by=0.2) 
ggtern(data = df, aes(x, y, z)) + 
    geom_point() + 
    limit_tern(breaks=breaks,labels=1000*breaks)