Je viens de venir par la parcelle suivante: P>
p>
et se demanda comment peut-on faire dans R? (ou d'autres logiciels) p>
update 10.03.11 strong>: Merci à tous ceux qui ont participé à répondre à cette question - vous avez donné de merveilleuses solutions! J'ai compilé toute la solution présentée ici (ainsi que d'autres que je suis venue en ligne) dans un post sur mon blog . p>
5 Réponses :
Essayez le VIOPLOT Package:
library(vioplot) vioplot(rnorm(100))
Cela ne produit pas de diffamation, n'est-ce pas?
@Shane non, c'est juste une variante du boxplot avec une estimation de densité de noyau ajoutée
@Shane @tal BTW, la graphique de la boîte-centile est meilleur ( bppplot code> dans le package
hmisc code>).
Salut chl. Merci pour la réponse. Je me souviens de venir par cette fonction, mais comme Shane a dit - il ne produit pas l'élément de tracé de dispersion. Je vais +1 pour les bonnes intentions - mais gardera cette question ouverte :). Bravo, Tal
@Tal bien, je vais essayer de comprendre moi-même comment le faire en r; Je pense que ce ne serait pas si difficile en utilisant stripchart () code> ou une procédure de gigue.
Salut Chl, merci d'avoir donné cela un coup. Le code utilisé ici: cl.cam.ac.uk/~sjm217/ Les projets / graphiques pourraient être un bon départ (puisqu'il réussit à superposer des points, au lieu de les janteler)
make.funny.Plot fait plus ou moins ce que je pense que cela devrait faire. Pour être adapté en fonction de vos propres besoins et pourrait être optimisé un peu, mais cela devrait être un bon départ. EDIT: corrigé pour toujours fonctionner. P> p >
Trouvé un problème avec celui-ci: si la coupe renvoie un niveau vide, vous obtenez une erreur.
+1 Bon travail! Je pense toujours que quelque chose manque - que l'intrigue originale est asymétrique.
@mbQ? Quelque chose manque? Je viens d'optimiser cette parcelle originale. Ce n'est pas un bug, c'est une fonctionnalité! ;-)
@Joris peut-être essayer d'utiliser Cut2 code> de hmisc au lieu de
couper code>?
@chl Si je n'ai pas à charger d'autres bibliothèques, je l'évite plutôt. Je viens d'utiliser le mauvais numéro dans la boucle de la boucle, qui a été corrigé maintenant.
@Joris Vous connaissez donc la définition de la parcelle d'origine?
Cela ajoutera un peu de hasard aléatoire: x.plot <- échantillon (SEQ (-OUTLINE [I], contour [i], décrivez [i] / 25), N, remplacer = t) code>
@mbq. Non, j'ai juste trop de temps sur mes mains, l'année académique n'a pas encore commencé.
J'ai monté le code similaire à Joris, je pense toujours que c'est plus qu'un complot à tige; Ici, je veux dire que la valeur y dans chaque série est une valeur absolue d'une distance de distance à la moyenne de la poubelle et que la valeur x est davantage quant à savoir si la valeur est inférieure ou supérieure à la moyenne.
Exemple de code (parfois des avertissements mais travaille):
px<-function(x,N=40,...){ x<-sort(x); #Cutting in bins cut(x,N)->p; #Calculate the means over bins sapply(levels(p),function(i) mean(x[p==i]))->meansl; means<-meansl[p]; #Calculate the mins over bins sapply(levels(p),function(i) min(x[p==i]))->minl; mins<-minl[p]; #Each dot is one value. #X is an order of a value inside bin, moved so that the values lower than bin mean go below 0 X<-rep(0,length(x)); for(e in levels(p)) X[p==e]<-(1:sum(p==e))-1-sum((x-means)[p==e]<0); #Y is a bin minum + absolute value of a difference between value and its bin mean plot(X,mins+abs(x-means),pch=19,cex=0.5,...); }
Merci MBQ, je me demandais qui est la réponse à choisir. Je choisis Joris, tout simplement depuis qu'il l'a enveloppé. Quoi qu'il en soit, les deux réponses sont formidables et gagnées mon vote de +1. Bravo - Tal
Je suis récemment venu sur Le paquet Beeswarm , qui porte une similitude.
L'abrite d'abeille est un Terrain de dispersion unidimensionnel comme "striptchart", mais avec de près, points non chevaucheux. P> BlockQuote>
Voici un exemple: p>
xxx pré>
Étant donné que cela n'a pas encore été mentionné, il y a aussi GGBeeswarm en tant que package R relativement nouveau Basé sur ggplot2.
qui ajoute une autre geom à gglot à utiliser à la place de geom_jitter ou similaire. p>
en particulier geom_quasirandom strong> (voir le deuxième exemple ci-dessous) produit de très bons résultats et j'ai en fait l'adapté comme tracé par défaut. P> no weworthy est aussi le paquet vipor A> (Points de violon dans R) qui produit des parcelles utilisant les graphiques standard r et est en fait également utilisé par GGBeeswarm dans les coulisses. P>
p> p>
p>
p> p>
C'est peut-être un commentaire stupide, mais que signifie la position des points supposons vouloir dire?
Vous voulez dire dans l'axe X ou Y?
Ce n'était pas un commentaire stupide parce que la réponse à la procédure à suivre est introuvable (x, y). Je suis sûr que MBQ essayait d'obtenir à l'idée que ce que vous essayez de faire peut être autre chose qu'un simple parcelle de dispersion.
C'est aussi autre chose qu'une simple parcelle de violon car cela est censé être symétrique autour de l'axe vertical.
@Tal, @john - Je sais comment fonctionne de VioPlot standard, mais je ne peux pas comprendre comment ces points ont été obtenus (et comme je vois non seulement moi, alors qu'il est crucial de produire une bonne réponse) - une sorte de tige ? Ou peut-être que quelqu'un a juste pensé que le remplissage de VioPlot avec des pois déformés est une bonne idée?
Bonjour John et Mbq. John, je n'ai pas dit (ni pensé) que le commentaire était stupide. Maintenant, en ce qui concerne l'intrigue, je l'ai rencontré dans un article récent. L'article a déclaré qu'ils utilisaient SAS pour la créer. Plus que cela, je ne peux pas offrir à ce moment-là.
Je suppose que les points sont simplement des observations jirenciées avec une distance de jitter déterminée par la largeur du vioplot.
Bonjour Rob - Je soupçonne que les points tentent de simplement être distribués uniformément par la largeur du violon. Sinon, je ne comprendrais pas comment il n'y a pas de points dans l'image se chevauchant (à l'exception de ceux en bas, où il n'y a pas de place pour tous les points)
J'ai déjà vu ce type de graphique, je ne me souviens plus que le logiciel a été utilisé, mais la position X n'était que "aléatoire" de gigue (proportionnelle à la densité à ce point). Personnellement, je trouve ceux un peu à lire, je suis plus d'une parcelle de la boîte et des moustaches, je suppose :)
@Tal: S'il vous plaît aller trouver la référence initiale à ce graphique. D'où avez-vous obtenu la photo? À ce stade, nous n'avons aucune idée de ce que cela est censé être ou dire. Ce n'est pas un graphique de violon ou de boîte (au moins pas dans aucun sens traditionnel).
Ok, j'ai trouvé ce que le logiciel était. C'est un "parcelle de scatter de colonne" fabriqué dans Graphpad Prism. Voir par exemple graphpad.com/help/prism5/... . J'ai trouvé des références à celles également ici: OriginalLab.com / www / produits / ...