我最近開始使用 R,并且對我的班級使用的 ggplot 感到困惑。我習慣于 運算子只添加兩個輸出,但我看到在 ggplot 中您可以執行以下操作:
ggplot(data = bechdel, aes(x = domgross_2013))
geom_histogram(bins = 10, color="purple", fill="white")
labs(title = "Domestic Growth of Movies", x = " Domestic Growth")
在這里,我們將兩個函式呼叫一起添加。這里到底發生了什么?ggplot 是否“覆寫”了 運算子(也許就像您如何==在 dart 中覆寫運算子?)以做一些不同的事情?還是' '運算子在 R 中的含義與我在其他編程語言中習慣的不同?
uj5u.com熱心網友回復:
我會回答第一個問題。您應該在單獨的帖子中提出第二個問題。
R 允許您覆寫大多數運算子。最簡單的方法是使用“S3”物件系統。這是一個非常簡單的系統,您可以在其中為物件附加一個名為的屬性"class",這會影響 R 處理某些函式的方式。(適用的那些稱為“通用函式”。還有其他函式不關注類。)
每個ggplot2函式都回傳一個帶有類的物件。您可以使用該class()函式來獲取類。例如,class(ggplot(data = "mtcars"))是一個包含 的字符向量c("gg", "ggplot"),并且class(geom_histogram(bins = 10, color="purple", fill="white"))是向量c("LayerInstance","Layer","ggproto","gg")。
如果您要求,methods(" ")您將看到所有具有為加法定義的方法的類,其中包括"gg",因此 R 將呼叫該方法來處理您使用的運算式中的加法。
uj5u.com熱心網友回復:
運算子是 ggplot2 哲學的一部分。它的靈感來自圖形語法,值得一讀。本質上,您不斷創建新的和新的層。
嘗試在您的代碼中一步一步地執行,這應該是有意義的!
one <- ggplot2::ggplot(data = mtcars)
labs(title = "Mtcars", subtitle = "Blank Canvas")
two <- ggplot2::ggplot(data = mtcars, aes(x = mpg))
labs(title = "Mtcars", subtitle = " Aesthetic Mapping")
three <- ggplot2::ggplot(data = mtcars, aes(x = mpg, y = after_stat(count)))
geom_histogram()
library(patchwork)
one two three

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/416770.html
標籤:
