2016-12-20 6 views
-2

Я хочу построить участок разброса разброса, показывающий другой цвет для двухступенчатых осадков. например, показатель янв. осадков янв. в красном, февраль в желтом и на станции В янв. значение осадков в голубом, февраль в зеленом и т. д., которое появляется в легенде. Кроме того, я хочу включить плавную линию для данных обеих станций, которые также отображаются в легенде, например, красная плавная линия для станции A и синяя для станции B. По этой ссылке вы можете найти обе станции Данные CSV: https://drive.google.com/file/d/0B3fQ9_46L-O0TjJwYmF6UThNSGs/view?usp=sharing https://drive.google.com/file/d/0B3fQ9_46L-O0ZXVYb3lzZDBZaHM/view?usp=sharingКак сделать отдельную легенду в ggplot

Ниже приведен код, который я пробовал, но не смог.

#reading csv file of ramoili station of rautahat[Scatterplot of two stations][1] 
ram = read.csv('preci_ramoili.csv',header=TRUE, stringsAsFactors=FALSE) 
#reading CSV file of gaur station of rautahat 
gaur= read.csv('preci_Gaur.csv',header=TRUE, stringsAsFactors=FALSE) 
#gaur rainfall 
rain <- data.frame(index(agg),stack(as.data.frame(coredata(agg)))) 
rain 
head(rain) 
tail(rain) 
names(rain)[1] <- "Year" 
names(rain)[2] <- "Rainfall" 
names(rain)[3] <- "Month" 
#ramoili rainfall 
rain1<-data.frame(index(core),stack(as.data.frame(coredata(core)))) 
rain1 
head(rain1) 
names(rain1)[1] <- "Year" 
names(rain1)[2] <- "Rainfall" 
names(rain1)[3] <- "Month" 
head(rain1) 
#ramoili premonsoon rainfall 
rain1_pre<-data.frame(index(core[,3:5]),stack(as.data.frame(coredata(core[,3:5])))) 
head(rain_pre) 
tail(rain1_pre) 
names(rain1_pre)[1] <- "Year" 
names(rain1_pre)[2] <- "Rainfall" 
names(rain1_pre)[3] <- "Month" 
#ggplot of two stations gaur and ramoili yearly rainfall of rautahat in same plot 
p9 <- ggplot(rain, aes(x =Year, y=Rainfall, size=Rainfall)) + geom_point(shape = 21,color = "#000000", fill = "#40b8d0") + 
    geom_smooth(aes(fill="Gaur"), colour="darkblue", size=1) 

p10 <- p9 + geom_point(data=rain1, aes(x =Year, y=Rainfall, color=Month)) + 
    geom_smooth(data=rain1, aes(fill="Ramoili"), colour="red", size=1)+ 
    ggtitle(" Yearly rainfall at two stations of Rautahat")+ 
    scale_fill_manual(name="Stations", values=c("blue", "red")) 
print(p10) 
+0

Данные помогает, но ваш вопрос и код отсутствует упоминание '' agg' и core'. Он также помогает перечислять пакеты, которые вы используете в своем примере кода. –

ответ

-2

В случае отсутствия полных данных образца и использования предоставленных данных образца, я проиллюстрировал подход.

Я не уверен, почему вам нужны разные месячные цвета для каждой станции, и я думаю, что разница будет лучше проиллюстрирована с использованием граней. Если нет, я бы по-прежнему рекомендовал поддерживать соответствие цветов месяца и удалить сетку фасетов.

Вам нужно будет изменить оси, названия, весы и т. Д., Чтобы они по своему вкусу.

library(dplyr) 
library(ggplot2) 
library(purrr) 
library(tidyr) 
library(trend) 

gaur <- list.files("~/Desktop", pattern = "Gaur", full.names = TRUE) %>% 
    read.csv() %>% 
    mutate(station = "Gaur") 

ramoili <- list.files("~/Desktop", pattern = "ramoili", full.names = TRUE) %>% 
    read.csv() %>% 
    mutate(station = "Ramoli") 

plot_data <- bind_rows(gaur, ramoili) %>% 
    gather(month, rainfall, -Year, -station) 


ggplot(plot_data, aes(x = Year, y = rainfall)) + 
    geom_line(aes(color = month)) + 
    geom_point(aes(color = month), show.legend = FALSE) + 
    geom_smooth(aes(fill = station), size = 0.1) + 
    scale_x_continuous(breaks = scales::pretty_breaks()) + 
    scale_fill_manual(name = "Stations", values = c("blue", "red")) + 
    facet_grid(month ~ station) + 
    theme_minimal() 

enter image description here

И для моделей:

models <- bind_rows(gaur, ramoili) %>% 
     select(-Year) %>% 
     nest(-station) %>% 
     mutate(ts_data = map(data, ~ts(.x, frequency = 1, start = c(1984,1)))) %>% 
     mutate(mk_model = map(ts_data, mk.test), 
      sens_slope = map(ts_data, sens.slope)) 

> models$mk_model[1] 
[[1]] 
Mann-Kendall Test 

two-sided homogeinity test 
H0: S = 0 (no trend) 
HA: S != 0 (monotonic trend) 

Statistics for total series 
     S  varS Z tau  pvalue 
1 -1637 39765.67 -8.2 -0.275 2.2289e-16 

> models$sens_slope[1] 
[[1]] 

Sen's slope and intercept 


slope: 0 
95 percent confidence intervall for slope 
0 0 

intercept: 14.9 
nr. of observations: 384 
+0

Я пытаюсь найти тенденцию этих двух станций. Кроме того, проверьте его тренд, используя Манн Кендалл и величину с помощью наклона сена. Пожалуйста, не могли бы вы дать мне какое-то направление, как я должен идти по этому поводу на этих двух наборах данных. –

+0

Я бы заглянул в пакеты 'kendall' или' trend'. Вспомните, чтобы принять/опросить полезные ответы. –

+0

Я также добавил подход к моделированию, используя пакеты 'trend',' purrr' и 'tidyr'. –

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