繁体   English   中英

ggplot2的CSV数据的箱线图

[英]Boxplot of CSV data with ggplot2

我有一个每天六个月(2016年8月-2017年1月)每天取重量的CSV文件。 我想为每个月绘制一个箱线图,基本上可以绘制每个月数据的summary()。 我想使用ggplot2,因为它看起来更漂亮。 我到处寻找解决方案,并提出了许多解决方案,但似乎没有解决任何问题。

数据的标题和摘要:

> wts <- read.csv('weights.csv', header=T, sep=',')
> head(wts)
  August.2016 September.2016 October.2016 November.2016 December.2016 January.2016
1       254.2          250.0        248.2         245.8         245.6        244.4
2       252.6          249.2        248.6         246.4         246.0        245.0
3       251.8          250.6        249.2         248.0         246.4        244.3
4       253.2          252.4        249.8         247.5         246.0        243.6
5       252.2          250.6        248.8         247.0         246.0        242.6
6       254.0          251.0        247.8         247.6         246.0        242.0
> summary(wts)
  August.2016    September.2016   October.2016   November.2016   December.2016    January.2016  
 Min.   :249.6   Min.   :245.6   Min.   :245.4   Min.   :244.2   Min.   :243.4   Min.   :241.6  
 1st Qu.:252.2   1st Qu.:248.3   1st Qu.:246.7   1st Qu.:246.2   1st Qu.:244.8   1st Qu.:242.9  
 Median :252.8   Median :249.2   Median :247.8   Median :246.6   Median :245.6   Median :243.6  
 Mean   :252.7   Mean   :249.1   Mean   :247.6   Mean   :246.7   Mean   :245.3   Mean   :243.5  
 3rd Qu.:253.6   3rd Qu.:250.0   3rd Qu.:248.2   3rd Qu.:247.2   3rd Qu.:246.0   3rd Qu.:244.3  
 Max.   :255.2   Max.   :252.4   Max.   :249.8   Max.   :248.6   Max.   :247.0   Max.   :245.0  
                 NA's   :1                       NA's   :1                       NA's   :1  

从我收集的数据来看,我需要以ggplot喜欢的方式重塑数据,但是我不确定该怎么做。 如果可能的话,我也想在箱形图上突出显示均值(带有实际数字)。 我可以知道怎么做吗?

谢谢

为了保持相同的范例,可以使用tidyr包中的tidyr gather()将数据重塑为长格式,然后将结果插入ggplot() 要添加描述均值的文本,可以将stat_summary()"text" geom一起使用,并将mean函数应用于value变量。

library(tidyr)
library(ggplot2)

ggplot(gather(wts, factor_key = TRUE), 
   aes(key, value)) + 
    geom_boxplot() + 
    stat_summary(aes(label = ..y..), 
                 fun.y = function(x) round(mean(x), 2), 
                 geom = "text", 
                 size = 3,
                 color = "red")

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM