我可以在 ggplot2 中繪制一個函式,如下所示:
library(ggplot2)
ggplot(data.frame(x=0), aes(x)) geom_function(fun = sin) xlim(c(-5,5))
我可以使用 ggplot2 的構面來繪制多個函式的圖,每個構面一個嗎?(例如 sin 和 cos)
uj5u.com熱心網友回復:
因為fun=不是一種審美,我認為你不能對它進行刻面。但是,您可以使用該
如果您更喜歡 的方面的“外觀” ggplot2,則可以選擇此方法:
gsin <- ggplot(data.frame(x=0, fun="sin"), aes(x))
facet_wrap(~fun)
geom_function(fun = sin)
xlim(c(-5,5))
gtan <- ggplot(data.frame(x=0, fun="tan"), aes(x))
facet_wrap(~fun)
geom_function(fun = tan)
xlim(c(-5,5))
gsin gtan

所有這一切,到目前為止有效果的facet_*(scales="free_y")(因為我們固定xlim(.))。如果你想更接近地模仿 faceting,你需要控制所有 facet 的限制:
ylims <- c(-1, 1)
gsin <- ggplot(data.frame(x=0, fun="sin"), aes(x))
facet_wrap(~fun)
geom_function(fun = sin)
xlim(c(-5,5))
scale_y_continuous(limits = ylims)
gtan <- ggplot(data.frame(x=0, fun="tan"), aes(x))
facet_wrap(~fun)
geom_function(fun = tan)
xlim(c(-5,5))
scale_y_continuous(name = NULL, guide = NULL, limits = ylims)
gsin gtan
# Warning: Removed 22 row(s) containing missing values (geom_path).

從技術上講,您不需要在這里設定所有的 y 限制,但是......除非您確定無約束 y 軸的限制將是您需要的,否則它們可能會稍微偏離。例如,如果您將初始函式(在快速破解中)更改為2*sin(x)但忘記更新剩余構面的 y 限制,那么您的繪圖將是謊言。最好將限制設定在一個位置 ( ylims <- ...) 并在所有繪圖中參考。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/404918.html
標籤:
