web-dev-qa-db-fra.com

ggplot2: graphiques de densité de superposition R

Je veux superposer quelques tracés de densité dans R et savoir qu'il y a plusieurs façons de le faire, mais ils ne fonctionnent pas pour moi pour une raison ou une autre (la bibliothèque 'sm' ne s'installe pas et je ne suis pas assez ne pas comprendre la plupart du code). J'ai aussi essayé l'intrigue et le pair mais j'aimerais utiliser qplot car il a plus d'options de configuration.

J'ai des données sauvegardées sous cette forme 

library(ggplot2)
x <- read.csv("clipboard", sep="\t", header=FALSE)
x
     V1     V2    V3
1    34     23    24
2    32     12    32

et je voudrais créer 3 parcelles superposées avec les valeurs de V1, V2 et V3 en utilisant ou des tons de gris à remplir ou en utilisant des lignes de points ou quelque chose de similaire avec une légende. Pouvez-vous m'aider?

Je vous remercie!

25
Alex Lungu

généralement pour ggplot et plusieurs variables dont vous avez besoin pour convertir en format long de large. Je pense que cela peut être fait sans, mais c'est ainsi que le paquet doit fonctionner

Voici la solution, j'ai généré des données (3 distributions normales centrées sur différents points). J'ai aussi fait des histogrammes et des boîtes à moustaches au cas où vous les voudriez. Les paramètres alpha contrôlent le degré de transparence du remplissage. Si vous utilisez la couleur au lieu du remplissage, vous obtenez uniquement des contours.

x <- data.frame(v1=rnorm(100),v2=rnorm(100,1,1),v3=rnorm(100,0,2))
library(ggplot2);library(reshape2)
data<- melt(x)
ggplot(data,aes(x=value, fill=variable)) + geom_density(alpha=0.25)
ggplot(data,aes(x=value, fill=variable)) + geom_histogram(alpha=0.25)
ggplot(data,aes(x=variable, y=value, fill=variable)) + geom_boxplot()

enter image description here

41
user1617979

Par souci d’exhaustivité, le moyen le plus simple de superposer des graphiques en fonction d’un facteur est le suivant:

ggplot(data, aes(x=value)) + geom_density(aes(group=factor))

Mais comme @ user1617979 l'a mentionné, aes(color=factor) et aes(fill=factor) sont probablement plus utiles en pratique.  three density plots overlaid by factor

6
antoine

Certaines personnes ont demandé si vous pouvez le faire lorsque les distributions ont des longueurs différentes. La réponse est oui, utilisez simplement une liste au lieu d’un bloc de données.

library(ggplot2)
library(reshape2)
x <- list(v1=rnorm(100),v2=rnorm(50,1,1),v3=rnorm(75,0,2))
data<- melt(x)
ggplot(data,aes(x=value, fill=L1)) + geom_density(alpha=0.25)
ggplot(data,aes(x=value, fill=L1)) + geom_histogram(alpha=0.25)
ggplot(data,aes(x=L1, y=value, fill=L1)) + geom_boxplot()
0
Harry Smith