2015-10-31 3 views
0

Мне нужно построить две регрессии на тех же осях. Для этого у меня есть 3 столбца в моем наборе данных (назовем их A, B & C). Я хочу построить B против A, а затем C против A, и иметь их как разные линии регрессии цвета, причем точки данных имеют тот же цвет, что и соответствующие строки.R/ggplot2: Несколько линий регрессии на тех же осях

Чтобы быть более конкретным, чтобы создать отдельные участки, которые я использовал следующий код для первого:

P1 <- ggplot(data=volboth, aes(x=control, y=vol30)) + 
geom_point(alpha=1, size=4, color="maroon") + 
ggtitle("Correlation Plot: Ground Survey (Control) vs 30m UAV Survey") + 
labs(x = expression(paste("Volume - Control Data - ", m^{3})), 
    y = expression(paste("Volume - Aerial Data - ", m^{3}))) + 
xlim(0, 5) + 
ylim(0, 5) + 
geom_smooth(method=lm, se=FALSE, fullrange=TRUE) 

И тогда следующий за второй сюжет:

P2 <- ggplot(data=volboth, aes(x=vol10, y=control)) + 
geom_point(alpha=1, size=4, color="maroon") + 
ggtitle("Correlation Plot: Ground Survey (Control) vs 10m UAV Survey") + 
labs(x = expression(paste("Volume - Aerial Data - ", m^{3})), 
    y = expression(paste("Volume - Control Data - ", m^{3}))) + 
xlim(0, 5) + 
ylim(0, 5) + 
geom_smooth(method=lm, se=FALSE, fullrange=TRUE) 

Любые идеи о том, как объединить оба графика на одинаковые оси и применить соответствующие визуальные темы? Я открыт для использования стандартного R (не ggplot2), если это упростит ситуацию.

+0

Как первый шаг к тому, чтобы ответить на мой собственный вопрос, я сделал следующее, в котором были добавлены две линии регрессии, которые мне нужны, а также разные цветовые точки. То, что он не делает, - это дать регрессионным линиям соответствующий ковер своим точкам: – Luke

+0

ggplot (volboth) + geom_jitter (aes (control, vol10), color = "blue") + geom_smooth (aes (control, vol10), метод = lm, se = FALSE) + geom_jitter (aes (control, vol30), color = "green") + geom_smooth (aes (control, vol30), method = lm, se = FALSE) + Лаборатории (x = Actual ", y =" Remote ") – Luke

+3

Стандартные рекомендации по использованию ggplot2:« расплавить »ваш data.frame, чтобы иметь один столбец для значений x, один для значений y и один столбец, который отображает ваши значения в группы/цвета. Если вам нужна более конкретная помощь, вам необходимо предоставить воспроизводимые входные данные. – Roland

ответ

0
require(ggplot2) 
#first, some sample data 
volboth <- data.frame(control=(0:100)/20,vol10=(50:150)/50,vol30=(120:20)/30) 

#next, make a plot 
P1 <- ggplot(data=volboth, aes(x=control, y=vol30)) + 
    geom_point(alpha=1, size=4, color="maroon") + 
    geom_smooth(method=lm, se=FALSE, fullrange=TRUE) + 
#Now add a second layer, with same x, but other y (and blue color for clarity) 
    geom_point(aes(y=vol10),alpha=1, size=4, color="blue") + 
    geom_smooth(aes(y=vol10),method=lm, se=FALSE, fullrange=TRUE) + 
    ggtitle("Correlation Plot: Ground Survey (Control) vs 30m UAV Survey") + 
    labs(x = expression(paste("Volume - Control Data - ", m^{3})), 
     y = expression(paste("Volume - Aerial Data - ", m^{3}))) + 
    xlim(0, 5) + 
    ylim(0, 5) 

print(P1) 

Который дает мне этот график: enter image description here
я использовал geom_point здесь, но, как вы разработали сами, если ваши точки близко друг к другу, geom_jitter может быть лучшей альтернативой.

+0

Очень полезно RHA, огромное спасибо! – Luke

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