Добавление линии с точками к графику в ggplot2

Для моего удобства я хочу написать функцию, которая добавляет линейный график и график рассеяния к уже существующему графику. Я определил:

addlinetoplot <- function(dataset, varx, vary)
     { 
       p <- geom_line(data=dataset, aes_string(x=varx, y=vary)) + 
            geom_point(data=dataset, aes_string(x=varx, y=vary))

       p
     }

Вышеупомянутая функция не работает. Это сработает, если я уберу знак + и часть geom_point () . Вышеупомянутое не работает, потому что по какой-то причине нельзя добавить эти две геометрии. Следующий пример иллюстрирует проблему.

Затем я попытался:

df1 <- data.frame(c1 = c(1:10), c2 = c(1:10))
c1 <- c(1:10)
csq <- c1^2
df2 <- data.frame(c1 = c(1:10), csq)
pltbase <- ggplot() + geom_line(df1, aes(x="c1", y="c2")) 

# This does not work.
pltbase + addlinetoplot(dataset=df2, varx = "c1", vary = "csq")

Я решил, что проблема в утверждении:

addthistotheplot <- geom_line(data=df2, aes_string(x="c1", y="csq")) + 
                    geom_point(data=df2, aes_string(x="c1", y="csq"))

Попытка определить приведенный выше оператор вызывает ошибку: нечисловой аргумент двоичного оператора.

Как я могу определить функцию addlinetoplot () , чтобы я мог заставить:

pltbase + addlinetoplot(dataset=df2, varx = "c1", vary = "csq")

работать. Один из способов - разделить geom_line и geom_point и задать для каждой разные функции. Есть ли способ сделать это в той же функции?

Спасибо!

5
задан Triad sou. 31 August 2011 в 05:52
поделиться