Страница 1 из 1

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

Добавлено: 16 мар 2015, 23:45
ymr3R9Jge
Помогите найти причину. Использую пакет 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").

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

Добавлено: 17 мар 2015, 08:41
Игорь Черниенко
Возможно, мало данных? Что за кодировка у Вашего файла?

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

Добавлено: 17 мар 2015, 08:42
gamm
не хватает данных, чтобы посчитать статистики для 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~.)

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

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

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

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

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

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

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

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

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