Re: Рисунок распределения средних показателей относительно месяца и года
Добавлено: 12 апр 2018, 12:09
Геоинформационные системы (ГИС) и Дистанционное зондирование Земли
https://gis-lab.info/forum/
> read.csv2(file="China AOD 2002-2017.csv", colClasses=c('character', rep('numeric', 12)), dec='.')
С вашим файлом все получилось. Я использовал все как у вас только добавлял файл сам.
Код: Выделить всё
df <- gather(df.in, month, aod, January:December)
names(df)[1] <- 'year'
n.month <- c('January','February','March','April','May','June','July','August','September','October','November','December')
df$month <- factor(df$month, levels=n.month, labels=n.month)
df$month <- as.numeric(df$month)
ggplot(df, aes(year, month, fill=aod))+
geom_raster(interpolate=T)+
scale_y_continuous(breaks=seq(1, 12, 1), labels=n.month)+
scale_x_continuous(breaks=seq(2002, 2017, 1))+
scale_fill_gradientn(colours=rev(rainbow(4)))+
theme_classic()
Код: Выделить всё
df.in <- read.csv2(file="China AOD 2002-2017.csv", dec='.')
Спасибо. с таким кодом все получилось. А как теперь добавить к данному рисунку графики распределения по месяцам и годам как во втором примере? и добавлением более отчетлиывх контуров в изобращении?
До графиков я так и не "доехал", а XLS исходный в ASCII (Wide_China_AOD_2002-2017.csv и Long_China_AOD_2002-2017.csv) реформатировал...
Код: Выделить всё
library("readxl")
library("tidyverse")
library("tools")
xls_name <- "China AOD 2002-2017.xls"
RootNameForCsv <- gsub(tools::file_ext(xls_name), "csv", xls_name)
RootNameForCsv <- gsub(" ", "_", RootNameForCsv)
df <- readxl::read_excel(xls_name)
number_of_columns <- ncol(df)
colnames(df)[1] <- "Year"
colnames(df)[2:number_of_columns] <- substr(colnames(df)[2:number_of_columns],
start=1,
stop=3)
df <- readr::type_convert(df)
df_long <- tidyr::gather(df, Month, AOD, -Year)
df_long$Month_Num <- match(df_long$Month, month.abb)
df_long <- df_long[order(df_long$Year, df_long$Month_Num),]
df_long <- df_long[, c("Year", "Month_Num", "AOD", "Month")]
WideCsv <- paste0("Wide_", RootNameForCsv)
readr::write_delim(df, WideCsv, delim=";")
LongCsv <- paste0("Long_", RootNameForCsv)
readr::write_delim(df_long, LongCsv, delim=";")
Все нормально.nickleb писал(а): ↑12 апр 2018, 14:39rhot, - это точно вам не зачем, - "прошу пардону"... только, м.б., усилить акцент того, что "лучшее" первым (даже нулевым) шагом от XLS избавится сразу... да, и так: "потусовался"
Вот так, с помощью пакета rasterViz проще всего.
Код: Выделить всё
library(raster)
library(rasterViz)
df.in <- read.csv2(file="China AOD 2002-2017.csv", dec='.')
df <- gather(df.in, month, aod, January:December)
names(df)[1] <- 'year'
n.month <- c('January','February','March','April','May','June','July','August','September','October','November','December')
df$month <- factor(df$month, levels=n.month, labels=n.month)
df$month <- as.numeric(df$month)coordinates(df) <- ~ year+month
gridded(df) <- T
r.df <- raster(df)
levelplot(r.df, panel=panel.levelplot.raster, interpolate=T, col.regions=rainbow, scales=list(x=list(at=seq(2002,2017,1)), y=list(at=1:12, labels=n.month)))