簡體   English   中英

帶有 ggplot2 的箱線圖:試圖在 plot 的代碼上放置 geom_jitter,奇怪的異常點

[英]Boxplot with ggplot2: Trying to lay geom_jitter over code for plot, strange outlier dots

我研究並使用了兩種不同的代碼來為我的數據制作箱線圖:

一個代碼 (A) 相當簡單,基本上在我的箱線圖中顯示了我想要的功能:背面的網格線,在控制和干預中區分我的患者組,通過訪問,在 x 和 y 軸上使用數字進行縮放。 一個問題是顯示了奇怪的異常值,我寧願將其合並到顯示所有數據點的抖動中。 我還想稍微改變 plot 的測量值,即 x 和 y 軸長度/比率為更方形的形狀,如果控制箱和干預箱可以彼此分開更遠,那將是理想的。 我還想在風格上用較淺的顏色填充框,如“B”所示。

先感謝您!

這是A的代碼:

ggplot(df, aes(x=visit,y=weight_v1_3, color=groupci)) +
  geom_boxplot(width=.5) + theme_bw() + scale_color_brewer(palette="Dark2")

我使用的第二個代碼 (B) 有一個 geom_jitter,我真的很想將它合並到 A 中。

B的代碼:

  df <- df %>% 
  rename_with(~ gsub("\\.", "_", tolower(.x))) 

pal <- c("red", "blue")

g <- ggplot(df, aes(x = groupci, y = weight_v1_3)) +
  geom_boxplot(aes(fill = groupci, fill = after_scale
(colorspace::lighten(fill, .7))), alpha = .5, size = 1.5, outlier.size = 5)
  

g + 
  geom_jitter(aes(color = groupci), width = .1, size = 7, alpha = .5) +
  scale_y_continuous(breaks = 1:9) +
  scale_color_manual(values = pal, guide = "none") +
  scale_fill_manual(values = pal, guide = "none")

樣本數據:

structure(list(pseudonym = c(1L, 2L, 4L, 5L, 6L, 7L, 3L, 8L, 
9L, 10L, 11L, 1L, 2L, 4L, 5L, 6L, 7L, 3L, 8L, 9L, 10L, 11L, 1L, 
2L, 4L, 5L, 6L, 7L, 8L, 9L, 10L), control.0.1. = c(0L, 0L, 0L, 
0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 
1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), intervention.0.1. = c(1L, 
1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 
0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), visit = c(2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), weight.V1.3 = c(60L, 
60L, 60L, 60L, 60L, 60L, 60L, 60L, 60L, 60L, 60L, 59L, 59L, 59L, 
59L, 59L, 59L, 59L, 59L, 59L, 59L, 59L, 57L, 57L, 57L, 57L, 57L, 
57L, 57L, 57L, 57L)), class = "data.frame", row.names = c(NA, 
-31L))

“A”plot:

劇情

“B”plot:

B圖

您會看到異常點,因為默認情況下,它們顯示在geom_boxplot()中。 如果您希望隱藏它們,您可以在geom_boxplot()中將outlier.coloroutlier.shape設置為NA

這是一個說明性示例。 首先,顯示使用默認值覆蓋geom_jitter()的箱線圖。 框 plot 的顏色為黑色,我更改了抖動點的形狀以使通過geom_boxplot()顯示的異常點更加明顯。

library(ggplot2)

df <- diamonds[sample(1:nrow(diamonds), size=500),]

p <-
ggplot(df, aes(x=cut, y=price)) +
  geom_boxplot() + 
  geom_jitter(aes(color=cut), width=0.2, size=2, shape=2)
p

在此處輸入圖像描述

現在,要從箱線圖幾何圖形中刪除異常值,您可以將任何outlier.shapeoutlier.color值設置為NA ,它將刪除它們。

p1 <-
ggplot(df, aes(x=cut, y=price)) +
  geom_boxplot(outlier.shape = NA) + 
  geom_jitter(aes(color=cut), width=0.2, size=2, shape=2)
p1

在此處輸入圖像描述

您應該能夠將其應用於您自己的示例(我無法重現,因為您引用了代碼中數據中不存在的列); 但是,請注意,刪除異常值不適用於outlier.size=NA 您必須使用outlier.color=NAoutlier.shape=NA

暫無
暫無

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

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