您是否有任何想法將抖動僅應用於boxplot的異常值數據?這是密碼將抖動應用於帶有ggplot2的boxplot中的異常值數據
ggplot(data = a, aes(x = "", y = a$V8)) + geom_boxplot(outlier.size =
0.5)+ geom_point(data=a, aes(x="", y=a$V8[54]), colour="red", size=3) +
theme_bw() +coord_flip()
謝謝!!
您是否有任何想法將抖動僅應用於boxplot的異常值數據?這是密碼將抖動應用於帶有ggplot2的boxplot中的異常值數據
ggplot(data = a, aes(x = "", y = a$V8)) + geom_boxplot(outlier.size =
0.5)+ geom_point(data=a, aes(x="", y=a$V8[54]), colour="red", size=3) +
theme_bw() +coord_flip()
謝謝!!
向您的數據集添加了一個向量,以指示哪些點不是異常值。然後,設置geom_boxplot
以不繪製任何異常值,並使用geom_point
來繪製異常值的明確值。
我會用diamonds
數據集從ggplot2
來說明。
library(ggplot2)
library(dplyr)
diamonds2 <-
diamonds %>%
group_by(cut) %>%
mutate(outlier = price > median(price) + IQR(price) * 1.5) %>%
ungroup
ggplot(diamonds2) +
aes(x = cut, y = price) +
geom_boxplot(outlier.shape = NA) + # NO OUTLIERS
geom_point(data = function(x) dplyr::filter_(x, ~ outlier), position = 'jitter') # Outliers
我從來沒有見過'data ='參數中使用的函數;太精彩了! – Brian
離羣值的默認值有點偏離,所以這些點與鬍鬚重疊...使用:'outlier.high = V8>分位數(V8,.75)+ 1.50 * IQR(V8)'和'outlier.low = V8 <分位數(V8,.25) - 1.50 * IQR(V8))'。然後可以添加'geom_jitter(data = filter(a,outlier.high == T | outlier.low == T),color =「red」,width = .2)' –
這是稍微不同的方法比上述(分配與NA顏色變量針對非離羣值),並且包括用於所述上限和下限的計算的校正。
默認的「離羣值」定義是超出25/75四分位數+/- 1.5 x四分位距離(IQR)的點。
生成一些示例數據:
set.seed(1)
a <- data_frame(x= factor(rep(1:4, each = 1000)),
V8 = c(rnorm(1000, 25, 4),
rnorm(1000, 50, 4),
rnorm(1000, 75, 4),
rnorm(1000, 100, 4)))
計算上限/下限的異常值(採用dplyr/tidyverse函數):
library(tidyverse)
a <- a %>% group_by(x) %>%
mutate(outlier.high = V8 > quantile(V8, .75) + 1.50*IQR(V8),
outlier.low = V8 < quantile(V8, .25) - 1.50*IQR(V8))
定義顏色用於上/下幾點:
a <- a %>% mutate(outlier.color = case_when(outlier.high ~ "red",
outlier.low ~ "steelblue"))
未分類的案例將被編碼爲「NA」顏色,a nd不會出現在劇情中。
的dplyr::case_when()
功能並不完全穩定,但(可能需要GitHub的開發版> 0.5的enter link description here),所以這裏是一個基礎的選擇,如果不工作:
a$outlier.color <- NA
a$outlier.color[a$outlier.high] <- "red"
a$outlier.color[a$outlier.low] <- "steelblue"
簡介:
a %>% ggplot(aes(x, V8)) +
geom_boxplot(outlier.shape = NA) +
geom_jitter(color = a$outlier.color, width = .2) + # NA not plotted
theme_bw() + coord_flip()
你能給我們一個可重複的例子嗎? –