簡體   English   中英

ggplot2:geom_smooth置信帶不會延伸到圖的邊緣,即使fullrange = TRUE

[英]ggplot2: geom_smooth confidence band does not extend to edge of graph, even with fullrange=TRUE

我一直在ggplot2中生成一些散點圖,發現我的geom_smooth se陰影(與stat_smooth完全相同的問題)不會擴展我的圖的整個范圍(請參見圖)。

從代碼中可以看到,我使用了“ fullrange = TRUE”,它確實擴展了線條本身(以及其他擬合線的se陰影),但是由於某種原因,使我的擬合線之一的陰影受阻。

它與圖的上邊界沖突似乎是一個問題。 如果我將范圍擴大到直線到達右側邊界的位置,陰影會繼續存在,但是這不是一個選擇,因為我必須將x和y軸范圍加倍才能做到這一點,數據。

有誰知道如何使陰影一直延伸到上軸邊界?

產生劇情的代碼

在此處輸入圖片說明

你可能需要添加coord_cartesian除了scale_x/y_continuous scale_x/y_continuous會刪除圖形范圍之外的點,但是coord_cartesian會覆蓋它並使用所有數據,即使其中一些數據在圖形中不可見。 在圖中,紅色點的置信帶在帶的頂部超過圖形的y范圍時結束。

在圖形的擴展范圍內沒有實際的“數據”,但是geom_smooth生成置信帶而生成的點視為“數據”,以決定要繪制的內容。

看下面的例子。 第一個圖僅使用scale_x/y_continuous 第二個添加了coord_cartesian ,但是請注意,仍未繪制置信帶。 在第三coord_cartesian圖中,我們仍然使用coord_cartesian ,但是我們向下擴展了scale_y_continuous范圍,以便將置信帶中低於零的點包括在y范圍中。 但是, coord_cartesian決定了實際繪制的范圍,也防止了超出范圍的點被排除。

我實際上發現這種行為令人困惑。 我本以為您可以只將coord_cartesian與所需的x和y范圍一起使用,並且仍然將置信帶和回歸線繪制到圖形的邊緣。 無論如何,希望這能為您提供所需的東西。

p1 = ggplot(mtcars, aes(wt, mpg, colour=factor(am))) + 
  geom_smooth(fullrange=TRUE, method="lm") +
  scale_x_continuous(expand=c(0,0), limits=c(0,10)) +
  scale_y_continuous(expand=c(0,0), limits=c(0,100)) +
  ggtitle("scale_x/y_continuous")

p2 = ggplot(mtcars, aes(wt, mpg, colour=factor(am))) + 
  geom_smooth(fullrange=TRUE, method="lm") +
  scale_x_continuous(expand=c(0,0), limits=c(0,10)) +
  scale_y_continuous(expand=c(0,0), limits=c(0,100)) +
  coord_cartesian(xlim=c(0,10), ylim=c(0,100)) +
  ggtitle("Add coord_cartesian; same y-range")

p3 = ggplot(mtcars, aes(wt, mpg, colour=factor(am))) +
  geom_smooth(fullrange=TRUE, method="lm") +
  scale_x_continuous(expand=c(0,0), limits=c(0,10)) +
  scale_y_continuous(expand=c(0,0), limits=c(-50,100)) +
  coord_cartesian(xlim=c(0,10), ylim=c(0,100)) +
  ggtitle("Add coord_cartesian; expanded y-range")

gridExtra::grid.arrange(p1, p2, p3)

在此處輸入圖片說明

暫無
暫無

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

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