2015-06-22 1 views
1

Как можно объединить 2 гистограммы qplots и поместить их на один и тот же участок вместо двух отдельных графиков? Существует аналогичный вопрос о простых одномерных гистограммах: How to plot two histograms together in R? Однако они не используют qplots и используют простые 1D гистограммы. Ниже приведен оригинальный код. Если вы можете изменить его, чтобы каждая из легенд гистограммы была одна на левой стороне, а другая - на правой стороне сюжета, которая сделала бы мой день. Огромное спасибо!!!Как объединить две или более 2D гистограммы вместе в R?

plt_d = d[s & grepl("Rd", d$Cmd), c("Time_Stamp_Norm", 
    "Virtual_Address_Norm")] 

    p1 <- qplot(Time_Stamp_Norm, Virtual_Address_Norm, data=plt_d, 
    geom='bin2d', binwidth = hist_binwidth, 
    xlab="Normalized Time", 
    ylab="Normalized Address", 
    main="Read requests in virtual address space") + 
    scale_fill_gradient(low="#C6DBEF", high="#08306B") + 
    xlim(0, 1+b_inv) + ylim(0, 1+b_inv) + 
    theme(axis.text=element_text(size=10), axis.title=element_text(size=10), 
    plot.title=element_text(size=10)) 

    plt_d = d[s & grepl("Wr", d$Cmd), c("Time_Stamp_Norm", 
    "Virtual_Address_Norm")] 

    p2 <- qplot(Time_Stamp_Norm, Virtual_Address_Norm, data=plt_d, 
    geom='bin2d', binwidth = hist_binwidth, 
    xlab="Normalized Time", 
    ylab="Normalized Address", 
    main="Write requests in virtual address space") + 
    scale_fill_gradient(low="#C7E9C0", high="#00441B") + 
    xlim(0, 1+b_inv) + ylim(0, 1+b_inv) + 
    theme(axis.text=element_text(size=10), axis.title=element_text(size=10), 
    plot.title=element_text(size=10)) 

    ... 

    print(p1, vp = viewport(layout.pos.row = 1, layout.pos.col = 1)) 
    print(p2, vp = viewport(layout.pos.row = 1, layout.pos.col = 2)) 

    ... 

    dev.off() 

enter image description here

+0

Похоже, что вам нужно, это переменная, представляющая какой из двух категорий, каждая точка данных попадает; то ваша эстетика заполнения определяется этим фактором, а альфа - счетчиком. Это, по крайней мере, приведет к обеим категориям на одном наборе осей. Но гиды были бы немного хлопотливыми. – tegancp

+0

Спасибо. Все нужно, чтобы поместить зеленые данные в верхнюю часть синего цвета и легенду с зеленого цвета, чтобы положить на левую сторону участка. Зеленый цвет не должен перекрывать синий (возможно, в некоторых небольших местах), потому что они отделимы во времени. – Dimon

ответ

1

Благодаря tegancp за советом. Вот мое решение:

x <- c(rnorm(n=1000, mean=5, sd=1), rnorm(n=1000, mean=7, sd=1)) 
y <- c(rnorm(n=1000, mean=5, sd=1), rnorm(n=1000, mean=7, sd=1)) 
d <- data.frame(x,y) 
d$type=c(rep("Rd",1000),rep("Wr",1000)) 
p <- ggplot(d) + geom_bin2d(aes(x=x, y=y, alpha=..count.., fill = d$type)) 
pdf(file="my_file.pdf") 
print(p) 
dev.off() 

enter image description here