簡體   English   中英

在ggplot2中繪制離散(或不連續)函數

[英]Plotting a discrete (or discontinuous) function in ggplot2

我有以下功能,我想用ggplot繪制:

f(x)= 3/4,x在0和1之間; x為1/4,介於2和3之間; 其他地方0。

我想出了以下R代碼:

eq<-function(x) {
    if(x>=0 && x<=1) {
        y<-3/4
    } else if(x>=2 && x<=3) {
        y<-1/4
    } else {
    y<-0
    }
return(y)
}

library(ggplot2)

ggplot(data.frame(x=c(-5,5)), aes(x)) + stat_function(fun=eq)

但是,這會產生一個只有以0為中心的水平線的情節。我做錯了什么?

該函數應該“向量化”,即接受一個向量作為參數。

eq <- function(x) 
  ifelse( x>=0 & x<=1, 3/4,
  ifelse( x>=2 & x<=3, 1/4, 0 ))
ggplot(data.frame(x=c(-5,5)), aes(x)) + 
  stat_function(fun=eq, geom="step")

我認為這是另一個地方,任何一個switch都可以用來產生很好的效果,或者類似的東西
ysteps <- c(.75,.25,0)
xsteps <- c(1,2,3)
y <- ysteps[which(x >= xsteps)]

請隨意編輯它,這是正確的 - 我的大腦很慢,我現在沒有R可用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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