我有一个R脚本,它使用csv文件作为源数据来创建十六个单独的箱图。十六个箱图中的每一个都具有不同的y轴刻度,这使得难以将一般的ylim定义应用于脚本。我尝试将coor_cartesian函数与ylim语句以及scale_y_continuous函数一起使用,但同样,这太普遍了,无法应用于具有不同y轴刻度的16个箱图(我不想在16个箱图中规范化刻度,仅带有“极端”异常值的情节。
下面是我用来创建十六个盒子图的数据。 'SE_Data'是我上面提到的csv源文件。我还要提一下,十六个箱图被导出为单个pdf文件(我不知道是否需要这种详细程度)。
# Enter csv input file:
SE_Data<-read.csv("SE_DATA.csv",header=T)
# Enter output file name:
pdf(file="SE_Box_Plots.pdf", onefile=TRUE)
x=c("A","B","C","D","E","F","G","H")
SE_Data$ACO_Desc <- factor(SE_Data$ACO_Desc , x) #Ensures x-axis is ordered from A through H
#Creates sixteen individual boxplots
for (i in 5:ncol(SE_Data)) {
p<-ggplot(SE_Data, aes(x=Group_Desc, y=SE_Data[,i])) + geom_boxplot() +
ylab(gsub("\\_", " ", colnames(SE_Data)[i])) +
xlab("") +
theme(axis.text.x=element_text(angle = 0))
print(p)
}
dev.off()
dev.list()
我不确定是否需要创建一个IF ELSE语句来解决这个问题,然而,作为一个仍然相当新的R的人,这似乎远高于我的技能水平。下面,我将16个箱形图中的两个用于说明它们的y轴刻度如何相互不同。
方框图1:
方框图2:
从两个箱形图中可以看出,它们都具有非常不同的y轴刻度。在我看来,'boxplot 2'看起来不错,但是,'boxplot 1'包含极端异常值。我想开发一段代码,可以删除这些极值,以减少盒子图上的“死空间”;因此,降低y轴的比例并使其对眼睛更有吸引力。
重要的是要强调我仍然希望将异常值包含在我的箱形图中,但是,我想只删除极端异常值。如果您需要我的更多信息,请务必告诉我。
在此先感谢您的帮助,非常感谢。
克里斯
答案 0 :(得分:0)
如果没有数据,我无法重现你的图表,但包括
geom_boxplot( outlier.shape=NA )
应该隐藏异常值。您可以使用
手动调整yscalescale_y_continuous(limits=c(-5, 1)) # or whatever values you want to use.