[英]Adding line with points to a plot in ggplot2
For my convenience, I want to write a function that adds a line plot and a scatter plot to an already existing plot. 我定義:
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
}
以上 function 不起作用。 如果我刪除+
符號和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()
function 以便我可以:
pltbase + addlinetoplot(dataset=df2, varx = "c1", vary = "csq")
工作。 一種方法是將 geom_line 和 geom_point 分開,並為每個具有不同的 function 定義。 有沒有辦法在同一個 function 中做到這一點?
謝謝!
我現在找不到參考,但是在某處有一個答案,說明您可以通過將新的 arguments 作為列表傳遞來添加到 ggplot plot。 因此,您的 function 變為:
addlinetoplot <- function(dataset, varx, vary) {
list(
geom_line(data=dataset, aes_string(x=varx, y=vary)),
geom_point(data=dataset, aes_string(x=varx, y=vary))
)
}
然后您的繪圖代碼如下所示:
pltbase <- ggplot() + geom_line(data = df1, aes(x=c1, y=c2))
pltbase + addlinetoplot(df2, varx = "c1", vary = "csq")
結果是:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.