2012-03-22 1 views
1

С помощью этого подхода. У меня есть график линии. Я хочу построить график «двух» на одном графике. Как я могу просто добавить, что данные,Используйте 'R' для построения двух строк на одном и том же графике

Данные в виде

1 5 10 
2 8 20 
3 9 30 

Я хочу построить X как column1, а две другие колонны вдоль оси у.

----- 
# Commands 
    2 
    3 library(ggplot2) 
    4 
    5 req <- read.table("stats_quick_sort.dat") 
    6 
    7 summary(req) 
    8 
    9 xx <- req$V1 
10 yy <- req$V2 
11 
12 
13 png('stats_sort_image.png', width=800, height=600) 
14 gg <- qplot(xx, yy) + geom_line() 
15 print(gg) 
16 dev.off() 

ответ

2

Как и в сторону - если вы предоставите воспроизводимый пример, демонстрирующий проблему, гораздо легче для нас, чтобы помочь вам. Я дам вам воспроизводимый пример в качестве ответа, чтобы вы поняли, что я имею в виду. Это означает, что любой может скопировать и вставить код, и он будет работать (тогда как я не смог бы скопировать/вставить ваш код, потому что у меня нет stats_quick_sort.dat).

Чтобы построить несколько линий на участке вы просто звоните geom_line снова, питаясь в x и y переменных aes:

# generate some dummy data so this example can be reproduced 
xx <- sort(runif(20)) 
yy <- runif(20) 
yy2 <- runif(20) 

gg <- qplot(xx, yy) + geom_line()  # first line 
gg <- gg + geom_line(aes(x=xx, y=yy2)) # add the second line! 
print(gg) 

В общем, если вы хотите добавить другую информацию в свой сюжет, который вы сделали не подавать в начальный звонок qplot/ggplot, а затем просто подайте его на номер aes. Вам нужна линия? Используйте geom_line. Вам нужны новые координаты x и y? Затем используйте geom_line(aes(x= .., y=..)). И так далее.

+0

Это было, я слегка поправил свой пост. –

1

Возможно, немного более канонический способ использования ggplot - создать длинный файл данных и отобразить каждую переменную, представляющую интерес для эстетики. Это обеспечивает простой способ добавления легенд автоматически и т. Д. Это также масштабируется легче, чем добавление отдельных слоев каждый раз, когда вы хотите новую строку. Вот пример:

library(ggplot2) 
library(reshape2) 
#Thanks mathematical coffee for data 
dat <- data.frame(xx = sort(runif(20)) 
        , yy = runif(20) 
        , yy2 = runif(20)) 

#Melt into long format, using xx as the ID variable 
dat.m <- melt(dat, id.vars = "xx") 

#What does this look like now? 
> head(dat.m,3) 
      xx variable  value 
1 0.001895333  yy 0.1240757 
2 0.037347893  yy 0.8760621 
3 0.086915655  yy 0.4068837 

#use ggplot and set the group and colour aesthetic to the variable column. This adds a legend 
ggplot(dat.m, aes(xx, value, group = variable, colour = variable)) + 
    geom_line() 

enter image description here

+0

Могу ли я сделать более двух графиков Y? Три или четыре? –

+0

@ berlinbrown2 - совершенно. Именно здесь функция «расплава» очень удобна. Учитывая, что data.frame из 6 столбцов с 1 переменной x и 5 y-variable, функция 'melt (yourData, id.vars =" x ")' создаст соответствующий длинный data.frame. На веб-сайте ggplot есть много хороших примеров, которые вы можете проверить: http://had.co.nz/ggplot2/. Я должен предупредить/отметить, что ggplot2 0.9.0 был довольно большой переписью, и я не уверен, что все примеры были обновлены * еще *. – Chase

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