2012-02-02 1 views
43

Я хочу объединить два ggplots, из двух разных data.frames, в один сюжет. Ниже вы найдете код. Я хочу объединить сюжет 1 & 2 или 3 участков & 4.ggplot объединение двух графиков из разных data.frames

df1 <- data.frame(p=c(10,8,7,3,2,6,7,8), 
      v=c(100,300,150,400,450,250,150,400)) 
df2 <- data.frame(p=c(10,8,6,4), v=c(150,250,350,400)) 

plot1 <- qplot(df1$v, df1$p) 
plot2 <- qplot(df2$v, df2$p, geom="step") 

plot3 <- ggplot(df1, aes(v, p)) + geom_point() 
plot4 <- ggplot(df2, aes(v, p)) + geom_step() 

Это должно быть очень легко сделать, но почему-то я не могу заставить его работать. Спасибо за ваше время.

+5

с помощью 'ggplot()' синтаксис, вы можете указать данные использовать для каждого отдельного слоя, например, 'geom_step (data = df2)' – baptiste

+0

Спасибо, это работает отлично. – jeroen81

ответ

49

Как сказал Батист, вам нужно указать аргумент данных на уровне геометрии. Либо

#df1 is the default dataset for all geoms 
(plot1 <- ggplot(df1, aes(v, p)) + 
    geom_point() + 
    geom_step(data = df2) 
) 

или

#No default; data explicitly specified for each geom 
(plot2 <- ggplot(NULL, aes(v, p)) + 
     geom_point(data = df1) + 
     geom_step(data = df2) 
) 
+20

@ naught101 Внешние скобки - это трюк, чтобы сделать печать печати в той же строке, что и его назначение. Вы можете использовать этот трюк и для других переменных. '(my_variable <- 1: 5)' - более чистая версия 'my_variable <- 1: 5; my_variable'. –

2

Вы можете взять этот трюк, чтобы использовать только qplot. Используйте внутреннюю переменную $mapping. Вы даже можете добавить color = к своим сюжетам, чтобы они также были помещены в картографию, а затем ваши сюжеты в сочетании с легендой и цветами автоматически.

cpu_metric2 <- qplot(y=Y2,x=X1) 

cpu_metric1 <- qplot(y=Y1, 
        x=X1, 
        xlab="Time", ylab="%") 

combined_cpu_plot <- cpu_metric1 + 
    geom_line() + 
    geom_point(mapping=cpu_metric2$mapping)+ 
    geom_line(mapping=cpu_metric2$mapping) 
+0

Как я могу поместить два цвета, используя этот подход? –

+1

@WagnerJorge пытается читать qplot docs и добавлять цвет при инициализации cpu_metric2, например 'qplot (y = ..., x = ..., color = ...)', а затем добавить цвет внутри 'geom_line (mapping ... , color = ...) ' –

28

только рабочий раствор для меня, было определение объекта данных в geom_line вместо базового объекта, ggplot.

Как это:

ggplot() + 
geom_line(data=Data1, aes(x=A, y=B), color='green') + 
geom_line(data=Data2, aes(x=C, y=D), color='red') 

вместо

ggplot(data=Data1, aes(x=A, y=B), color='green') + 
geom_line() + 
geom_line(data=Data2, aes(x=C, y=D), color='red') 

More info here

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