Question

Je viens d'une croix ce joli code qui rend cette matrice de diagramme de dispersion:


(source: free.fr )

Et voulait la mettre en œuvre à une variable d'échelle likret (nombres entiers de 1 à 5) en faisant tailles / couleurs du point (dans le triangle inférieur) diffèrent selon le nombre d'options de ce type se produit (comme l'effet de la gigue pourrait me ont donné).

Toute idée sur la façon de le faire sur le mécanisme de traçage de base?

Mise à jour:

J'ai fait la fonction suivante, mais ne savent pas comment avoir l'échelle des points toujours « bon », que pensez-vous?

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)
Était-ce utile?

La solution

Vous pouvez utiliser ' symboles ' (analogues aux lignes de les "méthodes 'abline' et al.)

Cette méthode vous donne un contrôle fin sur les deux dimensions des symboles et des couleurs dans une seule ligne de code.

Utilisation de « symboles » vous pouvez définir la taille du symbole, la couleur et la forme. La forme et la taille sont fixés en faisant passer dans un vecteur pour la taille de chaque symbole et le liant soit à « cercles », « rectangles » « carrés », ou « étoiles », par exemple, = 'étoiles des c (4, 3, 5, 1). La couleur est réglée avec 'bg' et / ou 'fg'.

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

Si je comprends la deuxième partie de votre question, vous voulez être raisonnablement sûr que la fonction que vous utilisez à l'échelle les symboles dans votre parcelle le fait d'une manière significative. Les échelles de fonction "symboles (par exemple) le rayons de cercles basés sur les valeurs d'une variable « z »(ou data.frame colonne, etc.) dans la ligne suivante, je mis le symbole max taille (rayon) comme 1/3 pouces - chaque symbole à l'exception de la plus grande a un rayon plus petit une certaine fraction, mis à l'échelle par le rapport entre la valeur de ce point de dat sur la plus grande valeur. que celui-là en proportion Est-ce un bon choix? Je ne sais pas - il me semble que le diamètre ou la circonférence particulièrement peut-être mieux. En tout état de cause, c'est un changement trivial. En somme, « symboles » avec « cercles » passés dans les rayons seront échelle des symboles proportionnellement à la « z » coordonnée - probablement le mieux adapté pour les variables continues. J'utiliser la couleur ( 'bg') pour les variables discrètes / facteurs.

Une façon d'utiliser des « symboles » est d'appeler votre fonction de traçage et passer type = « n » qui crée l'objet intrigue, mais supprime le dessin des symboles de sorte que vous pouvez les dessiner avec la fonction « symboles » suivant.

Je ne recommanderais pas « CEX » à cet effet. « CEX » est un facteur d'échelle pour les deux la taille du texte et la taille des symboles, mais qui de ces deux éléments de l'intrigue elle touche dépend du moment où vous passez dans - si vous réglez via « par » il agit sur la plupart du texte apparaissant sur le terrain; si vous définissez dans la fonction « tracé » il affecte la taille des symboles.

Autres conseils

Bien sûr, il suffit d'utiliser 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))

qui vous donne différentes tailles de cercle. La couleur peut être simplement une quatrième dimension.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top