Frage

Ich bin gerade ein Kreuz gekommen Dieser schöne Code Das macht diese Streumatrixdiagramme:

alt text
(Quelle: Free.fr)

Und wollte es in eine Likret -Skalierungsvariablen (Ganzzahlen von 1 bis 5) implementieren, indem die Größen/Farben des Punktes (im unteren Dreieck) nach den vielen Optionen dieses Typs unterscheiden (wie der Effekt, den der Jitter mir möglicherweise gegeben hat ).

Irgendeine Idee, wie man dies auf dem Basisplotmechanismus macht?

Aktualisieren:

Ich habe die folgende Funktion gemacht, weiß aber nicht, wie man die Größe der Punkte immer "gut" hat. Was denkst du?

panel.smooth2 <- function (x, y, col = par("col"), bg = NA, pch = par("pch"), 
                    cex = 1, col.smooth = "red", span = 2/3, iter = 3, ...) 
{
    require(reshape)
    z <- merge(data.frame(x,y), melt(table(x ,y)),sort =F)$value
    z <- z/ (4*max(z)) 

    symbols( x, y,  circles = z,#rep(0.1, length(x)), #sample(1:2, length(x), replace = T) ,
            inches=F, bg="blue", fg = bg, add = T)

    # points(x, y, pch = pch, col = col, bg = bg, cex = cex)
    ok <- is.finite(x) & is.finite(y)
    if (any(ok)) 
        lines(stats::lowess(x[ok], y[ok], f = span, iter = iter), 
            col = col.smooth, ...)
}



a1 <- sample(1:5, 100, replace = T)
a2 <- sample(1:5, 100, replace = T)
a3 <- sample(1:5, 100, replace = T)
aa <- data.frame(a1,a2,a3)


pairs(aa , lower.panel=panel.smooth2)
War es hilfreich?

Lösung

Sie können verwenden 'Symbole"(Analog zu den Methoden" Linien "," Abline "et al.)

Diese Methode bietet Ihnen eine feinkörnige Kontrolle über beide Symbole Größe und Farbe in einer einzelnen Codezeile.

Mit 'Symbolen' können Sie die Symbolgröße, Farbe und Form festlegen. Form und Größe werden durch Übergeben in einen Vektor für die Größe jedes Symbols und Bindung an entweder "Kreise", "Quadrate", "Rechtecke" oder "Sterne", z., "Sterne" = C (4, 3, Bindung) eingestellt. 5, 1). Die Farbe wird mit 'BG' und/oder 'FG' eingestellt.

symbols( x, y, circles = circle_radii, inches=1/3, bg="blue", fg=NULL) 

Wenn ich den zweiten Teil Ihrer Frage verstehe, möchten Sie einigermaßen sicher sein, dass die Funktion, mit der Sie die Symbole in Ihrer Handlung skalieren, dies auf sinnvolle Weise bewirkt. Die Funktionsfunktionsskalen "Symbole" (zum Beispiel) die Radien von Kreisen basierend auf Werten in einer 'z' Radius Einige Fraktion kleiner, skaliert durch das Verhältnis des Wertes dieses DAT -Punktes über den größten Wert. Dann ist das eine gute Wahl? Ich weiß nicht-es scheint mir, dass Durchmesser oder besonders Umfang besser sein könnte. In jedem Fall ist das eine triviale Veränderung. In der Summe werden "Symbole" mit 'Kreisen', die in übergebenen Kreisen übergeben werden, die Radien der Symbole proportional zur Koordinate "Z" skalieren-möglicherweise am besten für kontinuierliche Variablen geeignet. Ich würde Farbe ('BG') für diskrete Variablen/Faktoren verwenden.

Eine Möglichkeit, "Symbole" zu verwenden, besteht darin, Ihre Handlungsfunktion aufzurufen und in Typ = 'n' zu übergeben, das das Handlungsobjekt erstellt, das Zeichnen der Symbole jedoch unterdrückt, sodass Sie sie als nächstes mit der Funktion "Symbole" zeichnen können.

Ich würde 'CEX' für diesen Zweck nicht empfehlen. 'CEX' ist ein Skalierungsfaktor sowohl für die Textgröße als auch für die Symbolegröße, aber welche dieser beiden Handlungselemente, von denen es beeinflusst auf der Handlung; Wenn Sie es in der Funktion "Plot" festlegen, wirkt sich dies auf die Symbolegröße aus.

Andere Tipps

Sicher, benutze einfach cex:

set.seed(42)
DF <- data.frame(x=1:10, y=rnorm(10)*10, z=runif(10)*3) 
with(DF, plot(x, y, cex=z))

Das gibt Ihnen unterschiedliche Kreisgrößen. Farbe kann einfach eine vierte Dimension sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top