ここに[.txtファイル内の]データがいくつかあり、それをデータフレームdfに読み込みました。
df <- read.table("data.txt", header=T,sep="\t")
次のコードを使用して、列の負の値を削除しますx
(正の値のみが必要なため) 。df
yp <- subset(df, x>0)
今、同じレイヤーに複数の箱ひげ図をプロットしたい。最初にデータ フレームを溶かしdf
ます。結果のプロットには、以下に示すようにいくつかの外れ値が含まれます。
# Melting data frame df
df_mlt <-melt(df, id=names(df)[1])
# plotting the boxplots
plt_wool <- ggplot(subset(df_mlt, value > 0), aes(x=ID1,y=value)) +
geom_boxplot(aes(color=factor(ID1))) +
scale_y_log10(breaks = trans_breaks("log10", function(x) 10^x), labels = trans_format("log10", math_format(10^.x))) +
theme_bw() +
theme(legend.text=element_text(size=14), legend.title=element_text(size=14))+
theme(axis.text=element_text(size=20)) +
theme(axis.title=element_text(size=20,face="bold")) +
labs(x = "x", y = "y",colour="legend" ) +
annotation_logticks(sides = "rl") +
theme(panel.grid.minor = element_blank()) +
guides(title.hjust=0.5) +
theme(plot.margin=unit(c(0,1,0,0),"mm"))
plt_wool
ここで、外れ値のないプロットを作成する必要があるため、最初にこれを行うには、ここで提案されている次のコードを使用して、下限と上限のウィスカーを計算します。
sts <- boxplot.stats(yp$x)$stats
外れ値を取り除くために、ウィスカーの上限と下限を以下のように追加します。
p1 = plt_wool + coord_cartesian(ylim = c(sts*1.05,sts/1.05))
結果のプロットを以下に示しますが、上記のコード行は上位の外れ値のほとんどを正しく削除しますが、下位の外れ値はすべて残っています。誰かがこのプロットからすべての外れ値を完全に削除する方法を提案してくれませんか、ありがとう。