2016-09-22 5 views
-2

У меня есть данные вида:Создание диаграммы рассеяния с одним х и множеством у значений

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

Где (х, у1) являются фактическими значениями и у2 является предсказанием для y1 на основе линейной модели, оцененной на другой набор данных. (x, y1, y2) находятся в кадре данных DT. Как я могу сделать диаграмму рассеяния с использованием xyplot, которая отображает x на оси x и y1 и y2 по оси y, но с разными цветами?

Я был в состоянии сделать это в ggplot, используя следующий код, но думаю, что это выглядит намного менее приятным, чем использование команды xyplot(), и мне интересно, могу ли я использовать xyplot/решетку в этом случае.

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

спасибо, что заблаговременно!

+1

Простой воспроизводимый пример было бы здорово, чтобы получить и идея о том, что вы в настоящее время данных. Это облегчает нам помощь. если у вас есть кадр данных с именем DT, попробуйте 'dput (DT [1:10,])' для приятного вывода, который позволит нам помочь вам – TBSRounder

ответ

0

Простой ответ заключается в том, что вам необходимо сделать данные для ggplot, чтобы иметь возможность легко делать то, что вы хотите. Так как вы не дали нам конкретный пример, чтобы работать, я генерации некоторые выборочные данные, то приведение в порядок его (обратите внимание, используя dplyr и tidyr здесь)

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

exampleData 

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

Затем вы можете использовать сгенерированный sepalMeasure столбец цвета точки. Для ваших данных у вас есть что-то, что отличало бы предсказанные и фактические точки.

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

enter image description here

+0

Спасибо! Приношу свои извинения за то, что вы не делились моими фактическими данными; он организован как dataframe с тремя столбцами, x, y1 и y2 и около 500 строк. Прямо сейчас предсказанные точки представляют собой отдельную переменную (y2) из ​​фактических точек (y1), а не одну переменную y и переменную типа SepalMeasure для различения группировок/цветов. В приведенном выше примере было бы так, как если бы существовали две разные переменные для размера, по одному для каждого sepalMeasure. Можно ли использовать аналогичный синтаксис для графика в этом случае? –

+0

'exampleData' точно так же, как вы описываете свои данные. Я использовал 'gather' для создания' sepalMeasure' и 'size'. Вам нужно будет сделать то же самое с вашими данными. –

0

Вы можете построить 2 Y переменные, используя y1 + y2 в формуле

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

EDIT: Вы можете добавить легенду с

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

использования других lattice функций контролировать цвет s, этикетки и т.д.

0

Использование with(), plot() и points() функции пакета базового участка в R:

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

 Смежные вопросы

  • Нет связанных вопросов^_^