假設我們有函式y = x^2,我們可以繪制這個從 x=0 到 x=100 的連續函式,如下所示:
library("ggplot2")
eq = function(x){x^2}
ggplot(data.frame(x=c(1, 100)), aes(x=x))
stat_function(fun=eq)
theme_void()

問題
但是假設我們希望定義一個非連續函式,例如,它與y=x^2x 在 20 和 30 之間以及 50 和 70 之間沒有值相同。我們如何定義它?
語境
我試圖用eq = function(x){x*x}繪制非連續函式所需的任何內容替換 ( )下面的第二行(即保持所有其他代碼相同)。
library("ggplot2")
eq = function(x){x*x} # CHANGE ONLY THIS LINE (IF POSSIBLE)
ggplot(data.frame(x=c(1, 100)), aes(x=x))
stat_function(fun=eq)
theme_void()
我將嘗試在同一個圖上繪制許多非連續函式,所以我懷疑對圖本身的任何攻擊(例如在連續函式的頂部添加元素)都不會很好地縮放..
uj5u.com熱心網友回復:
對于x不屬于您的域的值,您可以將函式的輸出替換為 NA 。
library(ggplot2)
eq <- function(x) {
ans <- x * x
ans[x >= 20 & x <= 30] <- NA
ans[x >= 50 & x <= 70] <- NA
ans
}
ggplot(data.frame(x = c(1, 100)), aes(x))
stat_function(fun = eq)
theme_void()

由reprex 包(v2.0.1)于 2021 年 12 月 29 日創建
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/396751.html
