GGPlot2 Boxplot仅显示扁平线条

时间:2013-12-30 14:43:10

标签: r ggplot2 boxplot

我一直在努力工作几个小时,似乎无法做到这一点。箱形图只给我平直的线条,它让我疯狂。我得到相同的输入,有或没有因子函数

ggplot(df2,aes(x = factor(Location),y=Final.Result)) + geom_boxplot()

解决!有一些数据值,例如“< 0.005”,R将其作为字符串并将所有内容转换为因子。

3 个答案:

答案 0 :(得分:4)

您有这些行,因为数据框中的变量Final.Result是因子而不是数字(您可以使用函数str()进行检查)。

> str(df2)
'data.frame':   66 obs. of  3 variables:
 $ Location    : Factor w/ 17 levels "BOON KENG RD BLK 6 (DS)",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Parameter   : Factor w/ 54 levels "Aluminium","Ammonia (as N)",..: 37 37 37 37 37 37 37 37 37 37 ...
 $ Final.Result: Factor w/ 677 levels "< 0.0005","< 0.001",..: 645 644 654 653 647 643 647 647 646 646 ...

尝试将这些值转换为数字(如df2中没有非数值)。这仅适用于df2,但如果您的整个数据框具有"< 0.0005","< 0.001"个值,则应决定如何处理它们(替换为NA或一些小常量)。

df2$Final.Result2<-as.numeric(as.character(df2$Final.Result))
ggplot(df2,aes(x = factor(Location),y=Final.Result2)) + geom_boxplot()

答案 1 :(得分:2)

这个答案只与问题的标题有关,但如果我谷歌“ggplot2 boxplot only lines”这个问题排在首位,并且该搜索字词没有其他有用的搜索结果,所以我觉得它很适合这里:

仅当您将数量指定为y aestetic时,Boxplots才有效。

比较

 ggplot(mtcars, aes(x = factor(cyl), y = disp)) + geom_boxplot()

sample boxplot with x = quantity and y = grouping

使用

给出正确的箱图
 ggplot(mtcars, aes(y = factor(cyl), x = disp)) + geom_boxplot()

boxplot with incorrect aesthetic setting

仅提供线条而不是箱线图。

要获取水平框图,请使用coord_flip()

 ggplot(mtcars, aes(x = factor(cyl), y = disp)) + 
   geom_boxplot() + coord_flip()

vertical boxplot

答案 2 :(得分:0)

获得扁平线而不是框的另一个原因是您汇总了表中的数值(例如,计算平均值,中位数等),而boxplot()现在只看到一个值。