Рисунок распределения средних показателей относительно месяца и года

Не знаете, где задать вопрос? Задавайте здесь.
Аватара пользователя
rhot
Гуру
Сообщения: 1727
Зарегистрирован: 25 янв 2011, 17:50
Репутация: 194
Ваше звание: доктор
Откуда: Архангельск

Re: Рисунок распределения средних показателей относительно месяца и года

Сообщение rhot » 12 апр 2018, 12:09

Hekpoxa писал(а):
12 апр 2018, 12:08
уже на 3й строчке возникли проблемы это полный ппц.
А чё там?
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________

Hekpoxa
Интересующийся
Сообщения: 49
Зарегистрирован: 04 май 2015, 18:13
Репутация: 0

Re: Рисунок распределения средних показателей относительно месяца и года

Сообщение Hekpoxa » 12 апр 2018, 12:30

rhot писал(а):
12 апр 2018, 12:09
А чё там?
> 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: Рисунок распределения средних показателей относительно месяца и года

Сообщение rhot » 12 апр 2018, 12:59

Это потому что мой файл в формате csv.
China AOD 2002-2017.csv
(2.97 КБ) 477 скачиваний
Я не люблю майкрософт и всё проприетарное.
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________

Hekpoxa
Интересующийся
Сообщения: 49
Зарегистрирован: 04 май 2015, 18:13
Репутация: 0

Re: Рисунок распределения средних показателей относительно месяца и года

Сообщение Hekpoxa » 12 апр 2018, 13:14

rhot писал(а):
12 апр 2018, 12:59
Это потому что мой файл в формате csv.
С вашим файлом все получилось. Я использовал все как у вас только добавлял файл сам.
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: Рисунок распределения средних показателей относительно месяца и года

Сообщение rhot » 12 апр 2018, 13:37

Noname_2.png
Noname_2.png (70.24 КБ) 6719 просмотров

Код: Выделить всё

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} \_ Знание сила ¸.·´¯)¸.·´¯)___________

Hekpoxa
Интересующийся
Сообщения: 49
Зарегистрирован: 04 май 2015, 18:13
Репутация: 0

Re: Рисунок распределения средних показателей относительно месяца и года

Сообщение Hekpoxa » 12 апр 2018, 13:48

а сейчас выскочило: Ошибка: Discrete value supplied to continuous scale

Аватара пользователя
rhot
Гуру
Сообщения: 1727
Зарегистрирован: 25 янв 2011, 17:50
Репутация: 194
Ваше звание: доктор
Откуда: Архангельск

Re: Рисунок распределения средних показателей относительно месяца и года

Сообщение rhot » 12 апр 2018, 13:52

Импортируйте так

Код: Выделить всё

df.in <- read.csv2(file="China AOD 2002-2017.csv", dec='.')
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________

Hekpoxa
Интересующийся
Сообщения: 49
Зарегистрирован: 04 май 2015, 18:13
Репутация: 0

Re: Рисунок распределения средних показателей относительно месяца и года

Сообщение Hekpoxa » 12 апр 2018, 14:12

rhot писал(а):
12 апр 2018, 13:52
ОД: ВЫДЕЛИТЬ ВСЁ

df.in <- read.csv2(file="China AOD 2002-2017.csv", dec='.')
Спасибо. с таким кодом все получилось. А как теперь добавить к данному рисунку графики распределения по месяцам и годам как во втором примере? и добавлением более отчетлиывх контуров в изобращении?

nickleb
Гуру
Сообщения: 964
Зарегистрирован: 22 май 2010, 20:20
Репутация: 154

Re: Рисунок распределения средних показателей относительно месяца и года

Сообщение nickleb » 12 апр 2018, 14:14

rhot писал(а):
12 апр 2018, 12:59
Я не люблю майкрософт и всё проприетарное
До графиков я так и не "доехал", а 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=";")
Wide_China_AOD_2002-2017.csv
(2.92 КБ) 748 скачиваний
Long_China_AOD_2002-2017.csv
(4.92 КБ) 603 скачивания

Аватара пользователя
rhot
Гуру
Сообщения: 1727
Зарегистрирован: 25 янв 2011, 17:50
Репутация: 194
Ваше звание: доктор
Откуда: Архангельск

Re: Рисунок распределения средних показателей относительно месяца и года

Сообщение rhot » 12 апр 2018, 14:23

nickleb писал(а):
12 апр 2018, 14:14
До графиков я так и не "доехал", а XLS исходный в ASCII (Wide_China_AOD_2002-2017.csv и Long_China_AOD_2002-2017.csv) реформатировал...
А зачем это мне?
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________

Hekpoxa
Интересующийся
Сообщения: 49
Зарегистрирован: 04 май 2015, 18:13
Репутация: 0

Re: Рисунок распределения средних показателей относительно месяца и года

Сообщение Hekpoxa » 12 апр 2018, 14:29

nickleb писал(а):
12 апр 2018, 14:14
До графиков я так и не "доехал", а XLS исходный в ASCII (Wide_China_AOD_2002-2017.csv и Long_China_AOD_2002-2017.csv) реформатировал...
а что в этоге получится здесь?

nickleb
Гуру
Сообщения: 964
Зарегистрирован: 22 май 2010, 20:20
Репутация: 154

Re: Рисунок распределения средних показателей относительно месяца и года

Сообщение nickleb » 12 апр 2018, 14:39

rhot писал(а):
12 апр 2018, 14:23
А зачем это мне?
rhot, - это точно вам не зачем, - "прошу пардону"... только, м.б., усилить акцент того, что "лучшее" первым (даже нулевым) шагом от XLS избавится сразу... да, и так: "потусовался" :)

nickleb
Гуру
Сообщения: 964
Зарегистрирован: 22 май 2010, 20:20
Репутация: 154

Re: Рисунок распределения средних показателей относительно месяца и года

Сообщение nickleb » 12 апр 2018, 14:44

Hekpoxa писал(а):
12 апр 2018, 14:29
а что в этоге получится здесь?
уже попросил прощения у rhot'а за отвлечение внимание... прошу и у вас... у вас там дело пошло - так, что успеха и удачи!

Hekpoxa
Интересующийся
Сообщения: 49
Зарегистрирован: 04 май 2015, 18:13
Репутация: 0

Re: Рисунок распределения средних показателей относительно месяца и года

Сообщение Hekpoxa » 12 апр 2018, 14:51

nickleb писал(а):
12 апр 2018, 14:39
rhot, - это точно вам не зачем, - "прошу пардону"... только, м.б., усилить акцент того, что "лучшее" первым (даже нулевым) шагом от XLS избавится сразу... да, и так: "потусовался"
Все нормально.
В оригинальных файлах NASA сразу на выходе .csv формат, но его сначала необходимо подчищать, а потом использовать. С форматами особых проблем не возникло. Глубокоуважаемый rhot помог разобраться с построением 1 и 2 фигуры, но еще есть вопросы по графикам во 2м и разобраться с постановкой цветов, так как данная палитра не совсем подходит, так как необходимо указание более четких границ как на рисунке-примере, ну или подобрать соответствующие цвета. Если вы знаете как это сделать то конечно буду рад !

Аватара пользователя
rhot
Гуру
Сообщения: 1727
Зарегистрирован: 25 янв 2011, 17:50
Репутация: 194
Ваше звание: доктор
Откуда: Архангельск

Re: Рисунок распределения средних показателей относительно месяца и года

Сообщение rhot » 12 апр 2018, 14:58

Hekpoxa писал(а):
12 апр 2018, 14:12
А как теперь добавить к данному рисунку графики распределения по месяцам и годам как во втором примере?
Вот так, с помощью пакета rasterViz проще всего.
Noname_3.png
Noname_3.png (68.53 КБ) 6692 просмотра

Код: Выделить всё

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} \_ Знание сила ¸.·´¯)¸.·´¯)___________

Ответить

Вернуться в «Я новичок!»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя