簡體   English   中英

在 ggplot2 中將帶點的線添加到 plot

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM