Скрипичные диаграммы в ggplot2

Вопросы по статистическому пакету R. Не обязательно гео.
Ответить
ymr3R9Jge
Активный участник
Сообщения: 117
Зарегистрирован: 31 окт 2011, 00:18
Репутация: 14
Откуда: Кривий Ріг

Скрипичные диаграммы в ggplot2

Сообщение ymr3R9Jge » 16 мар 2015, 23:45

Помогите найти причину. Использую пакет ggplot2 для построения "матрицы" скрипичных диаграмм. В качестве исходных данных взял наблюдения метеостанций с сайта rp5. Скрипт выглядит следующим образом:

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

ggplot(aes(y=T, x=DD, fill=DD), data=bigmeteo)+geom_violin()+labs(y=expression(paste("температура (", degree ~ C, ")")), x="напрямок вітру (звідки дує)", title="Температура повітря в залежності від напрямку вітру за даними шести навколишніх метеостанцій (кількість вимірювань 99932)")+theme(text=element_text(size=15))+guides(fill=F)+geom_boxplot(width=0.1)+facet_grid(punkt~.)
Получается график. Но! Две метеостанции (Комиссаровка и Лошкарёвка) - странно выглядят! Причём такие-же диаграммы по ним выходят и для параметра давление (P). Никак не могу найти причину... Гистораммы значений давления и температуры по этим двум станциям смотрятся вполне нормально, не сильно отличаясь от остальных метеостанций. Массив данных во вложенном файле bigmeteo.txt (поменяйте расширение на ".RData").
Вложения
bigmeteo_T_DD-facet.png
Скрипичные диаграммы
bigmeteo_T_DD-facet.png (172.57 КБ) 6565 просмотров
bigmeteo.txt
рабочий файл R (поменяйте расширение на "RData")
(1.66 МБ) 688 скачиваний

Аватара пользователя
Игорь Черниенко
Активный участник
Сообщения: 137
Зарегистрирован: 28 мар 2009, 01:05
Репутация: 11
Откуда: Хабаровск, Южно-Сахалинск

Re: Скрипичные диаграммы в ggplot2

Сообщение Игорь Черниенко » 17 мар 2015, 08:41

Возможно, мало данных? Что за кодировка у Вашего файла?

gamm
Гуру
Сообщения: 4057
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1054
Ваше звание: программист
Откуда: Казань

Re: Скрипичные диаграммы в ggplot2

Сообщение gamm » 17 мар 2015, 08:42

не хватает данных, чтобы посчитать статистики для DD=NA (надписи сократил для краткости, и поскольку имена не копипастятся, брал их по номерам)

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

> p<-bigmeteo
> table(p$punkt,is.na(p$DD))
                   
                    FALSE  TRUE
  Баштанка          15067    23
  Бобринець         17367    20
  Вел.Олександрівка 17416    19
  Комісарівка       17447     2
  Лозоватка         17350   105
  Лошкарівка        15114     2
если немного добавить, то все будет работать.

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

p<-bigmeteo
p.names<-attr(p.tab, "dimnames")[[1]]
table(p$punkt,is.na(p$DD))
ind<-(bigmeteo$punkt==p.names[4]); is.na(p$DD[ind][1:5])<-TRUE
ind<-(bigmeteo$punkt==p.names[6]); is.na(p$DD[ind][1:5])<-TRUE
ggplot(aes(y=T, x=DD, fill=DD), data=p)+
      geom_violin()+labs(y=expression(paste("T (", degree ~ C, ")")), 
      x="wind", 
      title="T station 99932)")+
      theme(text=element_text(size=15))+guides(fill=F)+geom_boxplot(width=0.1)+facet_grid(punkt~.)
но лучше просто убрать NA, их там немного

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

p<-bigmeteo
ind<-is.na(p$DD) | is.na(p$T)
p<-p[!ind,]
ggplot(aes(y=T, x=DD, fill=DD), data=p)+
      geom_violin()+labs(y=expression(paste("T (", degree ~ C, ")")), 
      x="wind", 
      title="T station 99932)")+
      theme(text=element_text(size=15))+guides(fill=F)+geom_boxplot(width=0.1)+facet_grid(punkt~.)

Аватара пользователя
Игорь Черниенко
Активный участник
Сообщения: 137
Зарегистрирован: 28 мар 2009, 01:05
Репутация: 11
Откуда: Хабаровск, Южно-Сахалинск

Re: Скрипичные диаграммы в ggplot2

Сообщение Игорь Черниенко » 17 мар 2015, 09:54

NA это, как я понял, пропуски в поле с направлением ветра. То есть данных достаточно, по 15-17 тыс измерений? Ваш файл я открыть не могу

gamm
Гуру
Сообщения: 4057
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1054
Ваше звание: программист
Откуда: Казань

Re: Скрипичные диаграммы в ggplot2

Сообщение gamm » 17 мар 2015, 11:51

Игорь Черниенко писал(а):NA это, как я понял, пропуски в поле с направлением ветра.
там только 2 значения температуры, не хватает (на самом деле вообще одно, для второго температура NA)
Игорь Черниенко писал(а): То есть данных достаточно, по 15-17 тыс измерений? Ваш файл я открыть не могу
смените расширение на RData и грузите с помощью load()

ymr3R9Jge
Активный участник
Сообщения: 117
Зарегистрирован: 31 окт 2011, 00:18
Репутация: 14
Откуда: Кривий Ріг

Re: Скрипичные диаграммы в ggplot2

Сообщение ymr3R9Jge » 17 мар 2015, 15:24

Спасибо! Теперь работает! Насколько я понял - нехватка "NA" для расчёта статистики делает невозможной отрисовку плотности распределения для остальных категорий?

gamm
Гуру
Сообщения: 4057
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1054
Ваше звание: программист
Откуда: Казань

Re: Скрипичные диаграммы в ggplot2

Сообщение gamm » 17 мар 2015, 15:55

Не совсем так - просто границы получаются очень большие, и все сжимается в линию. В коде ковыряться желания нет, лучше просто удалить такое, их там немного.

[ Сообщение с мобильного устройства ]

Ответить

Вернуться в «R»

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

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