2016-09-22 1 views
-2

j'ai des données de la forme:Création d'un diagramme de dispersion avec une x et de multiples valeurs de y

[x] [y1] [y2] 
1 0.9 1 
2 2.0 2 
3 3.1 3 

où (x, y1) sont des valeurs réelles et y2 est une prédiction pour y1 basé sur un modèle linéaire estimé sur un autre ensemble de données. (x, y1, y2) sont dans une trame de données DT. Comment puis-je faire un diagramme de dispersion en utilisant xyplot qui représente graphiquement x sur l'axe des x et y1 et y2 sur l'axe des y mais avec des couleurs différentes?

J'ai été capable de le faire dans ggplot en utilisant le code suivant, mais je pense que cela semble beaucoup moins agréable que d'utiliser la commande xyplot(), et je me demande si je peux utiliser xyplot/lattice dans ce cas.

ggplot(DT, aes(x)) + geom_point(aes(y=y1), color="red") + geom_point(aes(y=y2), color = "green") 

Merci beaucoup d'avance!

+1

Un simple exemple reproductible serait génial d'avoir une idée de ce que vous avez actuellement des données. Cela nous facilite la tâche de vous aider. si vous avez une trame de données nommée DT, essayez 'dput (DT [1:10,])' pour une sortie sympa qui nous permettra de vous aider – TBSRounder

Répondre

0

La réponse simple est que vous devez faire vos données rangées pour ggplot pour pouvoir faire facilement ce que vous voulez. Puisque vous ne nous avez pas un exemple concret de travailler avec, je générer des données d'échantillon rangement il (note, en utilisant dplyr et tidyr ici)

exampleData <- 
    iris %>% 
    filter(Species == "setosa") %>% 
    slice(1:10) %>% 
    select(Sepal.Length:Petal.Length) 

exampleData 

toPlot <- 
    exampleData %>% 
    gather(sepalMeasure, size, -Petal.Length) 

Ensuite, vous pouvez utiliser le produit sepalMeasure colonne de couleur les points. Pour vos données, vous auriez quelque chose qui distingue les points prévus et réels.

toPlot %>% 
    ggplot(aes(x = Petal.Length 
      , y = size 
      , col = sepalMeasure)) + 
    geom_point() 

enter image description here

+0

Merci! Je m'excuse de ne pas partager mes données réelles; il est organisé comme un dataframe avec trois colonnes, x, y1 et y2 et environ 500 lignes. À l'heure actuelle, les points prédits sont une variable distincte (y2) des points réels (y1), par opposition à avoir une variable y et une variable comme SepalMeasure pour distinguer les groupements/couleurs. Dans l'exemple ci-dessus, ce serait comme s'il y avait deux variables différentes pour la taille, une pour chaque sepalMeasure. Est-il possible d'utiliser une syntaxe similaire pour le graphique dans ce cas? –

+0

'exampleData' est exactement comme vous décrivez vos données. J'ai utilisé 'gather' pour créer' sepalMeasure' & 'size'. Vous devrez faire la même chose avec vos données. –

0

Vous pouvez tracer 2 variables y utilisant y1 + y2 dans la formule

d=data.frame(x=1:9,y1=2:10,y2=3:11) 
library(lattice) 
xyplot(y1+y2~x,d) 

EDIT: Vous pouvez ajouter une légende avec

xyplot(y1+y2~x,d,auto.key=TRUE) 

Utilisez d'autres lattice caractéristiques contrôler la couleur s, étiquettes, etc.

0

Utilisez with(), plot() et points() fonctions de l'ensemble de la parcelle de base en R:

with(datatable,plot(X,Y1)) 
with(datatable,points(X,Y2)) 
with(datatable,points(X,Y3))