簡體   English   中英

有沒有辦法修復ggplot中區域之間的這些空白?

[英]Is there a way to fix these blank gaps between areas in ggplot?

我在繪制正態分布的 plot 后面的彩色區域時遇到問題。 我希望實現這樣的目標:在此處輸入圖像描述

但沒有空白。 我的代碼是

normal <- function(mu, sigma, x){
  1/(sigma*sqrt(2*pi))*exp(-((x-mu)/sigma)^2)
}
normal_shade1 <- function(mu, sigma, x){
  y <- normal(mu=mu, sigma=sigma, x)
  y[x < 0.5 | x > 1.5] <- NA
  return(y)
}
normal_shade2 <- function(mu, sigma, x){
  y <- normal(mu=mu, sigma=sigma, x)
  y[x < 1.5 | x > 2.5] <- NA
  return(y)
}
normal_shade3 <- function(mu, sigma, x){
  y <- normal(mu=mu, sigma=sigma, x)
  y[x < 2.5 | x > 3.5] <- NA
  return(y)
}
normal_shade4 <- function(mu, sigma, x){
  y <- normal(mu=mu, sigma=sigma, x)
  y[x < 3.5 | x > 4.5] <- NA
  return(y)
}
normal_shade5 <- function(mu, sigma, x){
  y <- normal(mu=mu, sigma=sigma, x)
  y[x < 4.5 | x > 5.5] <- NA
  return(y)
}
normal_shade6 <- function(mu, sigma, x){
  y <- normal(mu=mu, sigma=sigma, x)
  y[x < 5.5 | x > 6.5] <- NA
  return(y)
}
normal_shade7 <- function(mu, sigma, x){
  y <- normal(mu=mu, sigma=sigma, x)
  y[x < 6.5 | x > 7.5] <- NA
  return(y)
}

p2 <- ggplot(data = data.frame(x = seq(0.5,7.5,by=0.1)), aes(x)) +
  stat_function(fun=normal_shade1, geom='area', fill = '#f0f9e8', args=list(mu=4, sigma=1.6), alpha = 1) + 
  stat_function(fun=normal_shade2, geom='area', fill = '#ccebc5', args=list(mu=4, sigma=1.6), alpha = 1) + 
  stat_function(fun=normal_shade3, geom='area', fill = '#a8ddb5', args=list(mu=4, sigma=1.6), alpha = 1) + 
  stat_function(fun=normal_shade4, geom='area', fill = '#7bccc4', args=list(mu=4, sigma=1.6), alpha = 1) + 
  stat_function(fun=normal_shade5, geom='area', fill = '#4eb3d3', args=list(mu=4, sigma=1.6), alpha = 1) + 
  stat_function(fun=normal_shade6, geom='area', fill = '#2b8cbe', args=list(mu=4, sigma=1.6), alpha = 1) + 
  stat_function(fun=normal_shade7, geom='area', fill = '#08589e', args=list(mu=4, sigma=1.6), alpha = 1) + 
  stat_function(fun=normal, geom='line', args=list(mu=4, sigma=1.6), size = 0.3) + ylab("") + 
  scale_y_continuous(expand = expansion(mult = c(0, 0)), breaks = NULL) + 
  scale_x_continuous(breaks = seq(0.5,7.5,by=1), labels = ("−∞",1.5,2.5,3.5,4.5,5.5,6.5,"\U221E")) 

p2 + labs(title = "",
          x = "", y = "", fill = "Legenda") +  
  theme_set(
    theme_bw() +
      theme(
        #axis.title.x = element_text(margin = margin(15, 0, 0, 0)),
        axis.title.y = element_text(margin = margin(0, 1, 0, 0)),
        strip.text = element_text(size = 11),
        axis.text = element_text(size = 12, color = "black"),
        plot.title = element_blank(),#element_text(size = 20),
        plot.subtitle = element_text(size = 17),
        axis.title = element_blank(),#element_text(size = 20),
        axis.line.x = element_line(colour = "black", size = 0.3),
        axis.line.y = element_blank(),
        axis.text.x = element_text(size = 12, family = "Iwona"),
        axis.text.y = element_text(size = 20),
        legend.text = element_text(size = 20),
        axis.ticks = element_line(colour = "black", size = 0.3),
        legend.key = element_rect(fill = "white"),
        legend.position = "top", 
        panel.border = element_blank(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        axis.line = element_line(colour = "black"),
        panel.background = element_rect(fill = "white")
      )
  )

我已經在這張圖片中獲得了我正在尋找的結果:使用類似的代碼在此處輸入圖片描述 如果有人可以幫助我,我真的很感激。

試試這些色號,

normal_shade1 <- function(mu, sigma, x){
  y <- normal(mu=mu, sigma=sigma, x)
  y[x<=1.5] <- NA
  return(y)
}
normal_shade2 <- function(mu, sigma, x){
  y <- normal(mu=mu, sigma=sigma, x)
  y[x<=2.5] <- NA
  return(y)
}
normal_shade3 <- function(mu, sigma, x){
  y <- normal(mu=mu, sigma=sigma, x)
  y[x<=3.5] <- NA
  return(y)
}
normal_shade4 <- function(mu, sigma, x){
  y <- normal(mu=mu, sigma=sigma, x)
  y[x<=4.5] <- NA
  return(y)
}
normal_shade5 <- function(mu, sigma, x){
  y <- normal(mu=mu, sigma=sigma, x)
  y[x<=5.5] <- NA
  return(y)
}
normal_shade6 <- function(mu, sigma, x){
  y <- normal(mu=mu, sigma=sigma, x)
  y[x<=6.5] <- NA
  return(y)
}
normal_shade7 <- function(mu, sigma, x){
  y <- normal(mu=mu, sigma=sigma, x)
  y[x<=7.5] <- NA
  return(y)
}

暫無
暫無

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

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