[英]R ggplot: Change Grouped Boxplot Median line
我已經繪制了分組的箱形圖,現在我想用白線代替標准的黑色中線,同時保持邊框為另一種顏色。 我正在按照Minimalist Boxplots網站上的說明進行操作,因為我非常喜歡他們的風格。
他們使用命令stat_summary(geom = "crossbar", width=0.65, fatten=0, color="white", fun.data = function(x){ return(c(y=median(x), ymin=median(x), ymax=median(x))) })
。 該命令適用於簡單的箱形圖:
但是現在我正在嘗試在我的分組箱圖上使用它,它不再工作了(缺少白色中線):
這是我復制數據的代碼:
Data <- data.frame(
W = sample(1:100),
M = sample(1:100),
A = sample(1:100),
O = sample(1:100),
Type = sample(c("1", "2", "3", "4", "5")))
我的劇本:
Data_Boxplot <- melt(Data,id.vars='Type', measure.vars=c('W','M','A', 'O'))
Boxplots <- ggplot(Data_Boxplot, aes(Type, value, group=variable)) +
geom_boxplot(outlier.colour = NULL, aes(color=variable, fill=variable)) +
stat_summary(geom = "crossbar", width=0.65, fatten=0, color="white",
fun.data = function(x){c(y=median(x), ymin=median(x), ymax=median(x))})
Boxplots
我需要改變什么? 非常感謝您的幫助。
您只映射了geom_boxplot
x
和y
。 應該為所有人映射在地理位置之間共享的變量。 在這種情況下,您還需要按variable
分組。
ggplot(Data.m, aes(Type, value, group=variable) +
geom_boxplot(outlier.colour = NULL, aes(color=variable, fill=variable)) +
stat_summary(geom = "crossbar", width=0.65, fatten=0, color="white",
fun.data = function(x){c(y=median(x), ymin=median(x), ymax=median(x))})
我沒有測試,因為你沒有提供數據。
好的,現在我們有一個很好的數據示例,我們可以看到正在發生的事情。
實際上我錯過了兩個問題。 兩者都是因為geom_boxplot
會自動解決一些問題給你,因為的fill
,即stat_summary
沒有。 所以我們必須手動完成它們。
首先,我們想要對variable
和Type
進行分組,我們可以通過使用interaction
功能來實現。
其次,箱形圖被自動躲避(即在組內移動),而水平線則不是。 我們將使用position_dodge
定義我們的定位,並將其應用於兩個geoms。 將它應用於兩者是使它們完全對齊的最簡單方法。 我們最終得到:
p <- position_dodge(0.8)
ggplot(Data_Boxplot, aes(Type, value, group = interaction(variable, Type))) +
geom_boxplot(aes(color = variable, fill = variable), outlier.colour = NULL, position = p) +
stat_summary(geom = "crossbar", width = 0.6, fatten=0, color="white", position = p,
fun.data = function(x){c(y=median(x), ymin=median(x), ymax=median(x))}) +
theme_minimal()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.