2015-09-24 3 views
0

В настоящее время я пытаюсь построить простой stat_summary (fun.y = mean, fun.ymin = min, fun.ymax = max, geom = "pointrange" ...R ggplot2 stat_summary: ошибка при построении минимального порога

Там нет сообщения об ошибке, но минимальные пороги построенные ложны, должно быть около 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) 

Поскольку средние и максимальные значения кажутся правильно построенными, я не понимаю, что я сделал не так в этом коде. Буду рад прочесть любую идею.

Спасибо,

Пол

ответ

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 

enter image description here

У меня нет объяснения, почему происходит эта ошибка. Я предполагаю, что он передается другой функции, где он интерпретируется таким образом, который вводит 0 значений в данные.

+0

Большое спасибо, он работает. Удивительно, но я раньше использовал этот код для другого набора данных и не имел проблем. Похоже, что иногда этот аргумент «ширина» учитывается и ничем не мешает, а иногда и нет. еще раз спасибо –

Смежные вопросы