【发布时间】:2015-08-17 19:04:50
【问题描述】:
您好,从阅读和玩弄一些数据来看,ggplot 在绘制箱形图时可能会掉零。显然它在处理对数刻度的零时存在一些问题。当我做箱线图时,我经常收到警告。我假设的第二个是删除 NA,但第一个看起来可能会丢零
Removed x rows containing non-finite values (stat_boxplot)
Removed x rows containing missing values (stat_summary)
例如
library(ggplot2)
df = read.table(text="X1 X1.1 X1.2 X1.3 X2 X2.1 X2.2 X2.3
1 0 3 4 3 2 3 1
2 'NA' 5 5 5 2 1 2
2 'NA' 2 1 2 1 2 5", header=TRUE)
dfmelt<-melt(df)
ggplot(dfmelt, aes(variable, value, fill=variable)) +
geom_boxplot() +
theme(axis.text.x=element_text(angle=90))+
scale_x_discrete(labels=c('C1','C2','C3','C4','C5','C6','C7','C8'))+
scale_fill_manual(values=rep(c("red","green","blue","yellow"),2))+
stat_summary(fun.y = median, geom = "point", position = position_dodge(width = .9))+
scale_y_log10()
我想知道这是否仅在进行对数刻度时发生?如果这可能会影响箱线图本身的定位和中位数?具有多个零和非零值的数据是否会将所有零都丢掉以移动框?如果是这样,如何最好地处理它,以免 ggplot 最终扭曲我的数据?
谢谢
【问题讨论】:
-
您不能从
0获取log。在控制台输入log10(0),它会返回-Inf。 -
我在箱线图之前转换(记录)我的数据。似乎应该有关于删除数据的警告(在我的情况下,转换后的值已经是
-Inf。我发现了这个问题,因为我的箱形图上有一个不同的“n =”。我的解决方案是在转换过程中使用log(x+1)。
标签: r ggplot2 statistics