我正在尝试绘制一个简单的stat_summary(fun.y = mean,fun.ymin = min,fun.ymax = max,geom =“pointrange”...
没有错误消息,但绘制的最小阈值为false,假设大约为4-5,它们在0处分配。
我使用的代码是:
library(ggplot2)
library(scales)
p=ggplot(data,aes(x=Date,y=ED))+
stat_summary(fun.y=mean,fun.ymin=min, fun.ymax=max,geom="pointrange",colour='grey60',width=.5,size=1)+
# scale axes
scale_y_continuous(breaks=seq(2,10,2))+
scale_x_date(labels = date_format("%m"), breaks='6 months')+
# theme
theme(legend.position = "none")+
theme_bw()+
theme(strip.text.x = element_text(size = 16,face='bold'))+
theme(axis.text.x=element_text(size=14,face="bold"),
axis.text.y=element_text(size=14,face='bold'),
axis.title=element_text(size=16,face="bold"))
p
在数据集中,每个日期有3个ED值,分别对应于平均值,最小值和最大值。这是数据集:
> data
Date ED
1 2000-10-23 6.64
2 2000-10-23 5.28
3 2000-10-23 8.01
4 2001-05-08 5.89
5 2001-05-08 5.05
6 2001-05-08 6.73
7 2001-10-23 7.27
8 2001-10-23 5.55
9 2001-10-23 8.99
10 2002-05-08 5.83
11 2002-05-08 4.92
12 2002-05-08 6.75
13 2002-10-23 7.60
14 2002-10-23 5.67
15 2002-10-23 9.53
16 2003-05-08 5.83
17 2003-05-08 4.92
18 2003-05-08 6.75
19 2003-10-23 7.60
20 2003-10-23 5.67
21 2003-10-23 9.53
22 2004-05-07 5.83
23 2004-05-07 4.92
24 2004-05-07 6.75
25 2004-10-22 7.60
26 2004-10-22 5.67
27 2004-10-22 9.53
28 2005-05-07 5.83
29 2005-05-07 4.92
30 2005-05-07 6.75
31 2005-10-22 7.60
32 2005-10-22 5.67
33 2005-10-22 9.53
我已经检查了数据集中的值,格式为数字,没有0,负值既不是NA。
# check values
class(data$ED)
data$ED[is.na(data$ED)]
data$ED[data$ED<=0]
min(data$ED)
tapply(data$ED,list(data$Date),min)
tapply(data$ED,list(data$Date),max)
由于似乎正确绘制了均值和最大值,我不明白我在这段代码中做错了什么。 我很乐意阅读任何想法。
谢谢,
保
答案 0 :(得分:1)
似乎width
中的参数stat_summary()
导致问题。你应该删除它。 geom_linerange()
无论如何都不允许它(它使用size
代替。)
p=ggplot(data,aes(x=Date,y=ED))+
stat_summary(fun.y=mean,fun.ymin=min, fun.ymax=max,
geom="pointrange",colour='grey60',size=1)+
# scale axes
scale_y_continuous(breaks=seq(2,10,2))+
ylim(2,10) +
scale_x_date(labels = date_format("%m"), breaks='6 months')+
# theme
theme(legend.position = "none")+
theme_bw()+
theme(strip.text.x = element_text(size = 16,face='bold'))+
theme(axis.text.x=element_text(size=14,face="bold"),
axis.text.y=element_text(size=14,face='bold'),
axis.title=element_text(size=16,face="bold"))
p
我没有解释为什么会发生此错误。我猜它被传递给另一个函数,在这个函数中,它以一种在数据中引入0值的方式进行解释。