А чё там?
Рисунок распределения средних показателей относительно месяца и года
- rhot
- Гуру
- Сообщения: 1727
- Зарегистрирован: 25 янв 2011, 17:50
- Репутация: 194
- Ваше звание: доктор
- Откуда: Архангельск
Re: Рисунок распределения средних показателей относительно месяца и года
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________
-
- Интересующийся
- Сообщения: 49
- Зарегистрирован: 04 май 2015, 18:13
- Репутация: 0
Re: Рисунок распределения средних показателей относительно месяца и года
> read.csv2(file="China AOD 2002-2017.csv", colClasses=c('character', rep('numeric', 12)), dec='.')
Ошибка в file(file, "rt") :не могу открыть соединение
Вдобавок: Предупреждение:
В file(file, "rt") :
не могу открыть файл 'China AOD 2002-2017.csv': No such file or directory
Но при открытии через другой способ, получается открыть :
read.csv(file.choose(), header=TRUE) -> random
потом выбираю файл и все, что делать дальше хз
- rhot
- Гуру
- Сообщения: 1727
- Зарегистрирован: 25 янв 2011, 17:50
- Репутация: 194
- Ваше звание: доктор
- Откуда: Архангельск
Re: Рисунок распределения средних показателей относительно месяца и года
Это потому что мой файл в формате csv.
Я не люблю майкрософт и всё проприетарное.___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________
-
- Интересующийся
- Сообщения: 49
- Зарегистрирован: 04 май 2015, 18:13
- Репутация: 0
Re: Рисунок распределения средних показателей относительно месяца и года
С вашим файлом все получилось. Я использовал все как у вас только добавлял файл сам.
df.in <- read.csv2(file.choose(), 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)
> ggplot(df, aes(year, month, fill=aod))+
+ geom_tile()+
+ scale_fill_gradient2(midpoint=0.4, high='red', low='blue')
Как я понимаю цвета в этоге можно менять, а если мне нужны определенные показатели шкалы (0-1), то необходимо что прописывать?
Сейчас получается что я могу использовать данный код, для получения изображения с другими данными? или необходимо будет чтото изменять?
Я бы хотел у вас попросить чтобы вы попробовыли сделать одну из других рисунков! Если конечно у вас это получится. Буду очень вам признателен!
- rhot
- Гуру
- Сообщения: 1727
- Зарегистрирован: 25 янв 2011, 17:50
- Репутация: 194
- Ваше звание: доктор
- Откуда: Архангельск
Re: Рисунок распределения средних показателей относительно месяца и года
Код: Выделить всё
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()
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________
-
- Интересующийся
- Сообщения: 49
- Зарегистрирован: 04 май 2015, 18:13
- Репутация: 0
Re: Рисунок распределения средних показателей относительно месяца и года
а сейчас выскочило: Ошибка: Discrete value supplied to continuous scale
- rhot
- Гуру
- Сообщения: 1727
- Зарегистрирован: 25 янв 2011, 17:50
- Репутация: 194
- Ваше звание: доктор
- Откуда: Архангельск
Re: Рисунок распределения средних показателей относительно месяца и года
Импортируйте так
Код: Выделить всё
df.in <- read.csv2(file="China AOD 2002-2017.csv", dec='.')
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________
-
- Интересующийся
- Сообщения: 49
- Зарегистрирован: 04 май 2015, 18:13
- Репутация: 0
Re: Рисунок распределения средних показателей относительно месяца и года
Спасибо. с таким кодом все получилось. А как теперь добавить к данному рисунку графики распределения по месяцам и годам как во втором примере? и добавлением более отчетлиывх контуров в изобращении?
-
- Гуру
- Сообщения: 964
- Зарегистрирован: 22 май 2010, 20:20
- Репутация: 154
Re: Рисунок распределения средних показателей относительно месяца и года
До графиков я так и не "доехал", а 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=";")
- rhot
- Гуру
- Сообщения: 1727
- Зарегистрирован: 25 янв 2011, 17:50
- Репутация: 194
- Ваше звание: доктор
- Откуда: Архангельск
Re: Рисунок распределения средних показателей относительно месяца и года
А зачем это мне?
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________
-
- Интересующийся
- Сообщения: 49
- Зарегистрирован: 04 май 2015, 18:13
- Репутация: 0
-
- Гуру
- Сообщения: 964
- Зарегистрирован: 22 май 2010, 20:20
- Репутация: 154
-
- Гуру
- Сообщения: 964
- Зарегистрирован: 22 май 2010, 20:20
- Репутация: 154
-
- Интересующийся
- Сообщения: 49
- Зарегистрирован: 04 май 2015, 18:13
- Репутация: 0
Re: Рисунок распределения средних показателей относительно месяца и года
Все нормально.nickleb писал(а): ↑12 апр 2018, 14:39rhot, - это точно вам не зачем, - "прошу пардону"... только, м.б., усилить акцент того, что "лучшее" первым (даже нулевым) шагом от XLS избавится сразу... да, и так: "потусовался"
В оригинальных файлах NASA сразу на выходе .csv формат, но его сначала необходимо подчищать, а потом использовать. С форматами особых проблем не возникло. Глубокоуважаемый rhot помог разобраться с построением 1 и 2 фигуры, но еще есть вопросы по графикам во 2м и разобраться с постановкой цветов, так как данная палитра не совсем подходит, так как необходимо указание более четких границ как на рисунке-примере, ну или подобрать соответствующие цвета. Если вы знаете как это сделать то конечно буду рад !
- rhot
- Гуру
- Сообщения: 1727
- Зарегистрирован: 25 янв 2011, 17:50
- Репутация: 194
- Ваше звание: доктор
- Откуда: Архангельск
Re: Рисунок распределения средних показателей относительно месяца и года
Вот так, с помощью пакета 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)))
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________
Кто сейчас на конференции
Сейчас этот форум просматривают: Baidu [Spider] и 16 гостей