Почему графики ggplot требуют, чтобы данные оси x были факторами при включении 3 переменных? - PullRequest
0 голосов
/ 15 мая 2018

Я делал несколько коробочных графиков с тремя переменными в ggplot и долго пытался получить то, что хотел, потому что данные на моей оси x были числовыми, а не факторными.После прочтения документации (http://www.sthda.com/english/wiki/ggplot2-box-plot-quick-start-guide-r-software-and-data-visualization) и других вопросов здесь ( Измените метки оси X в каждом фасете и ggplot: упорядочение диаграмм с несколькими переменными y для каждой группы непрерывного x ) я понял, что мне нужно преобразовать мои данные оси X в факторы.

> str(HT_2)
Classes ‘data.table’ and 'data.frame':  540 obs. of  4 variables:
 $ T             : int  -1 -2 -3 -4 0 1 2 3 4 -1 ...
 $ Month         : Factor w/ 12 levels "1","2","3","4",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Gauge         : chr  "Aconcagua" "Aconcagua" "Aconcagua" "Aconcagua" ...
 $ Norm_Flow_m3_s: num  1.49 1.77 1.99 2.02 1.17 ...
 - attr(*, ".internal.selfref")=<externalptr> 

Следующая строка кода решила мою проблему

ggplot(HT_2, aes(x=Month, y=Norm_Flow_m3_s,fill=Gauge)) + geom_boxplot()

Но та же строка не работает, когдаНа оси x есть целые данные

> str(HT_2)
Classes ‘data.table’ and 'data.frame':  540 obs. of  4 variables:
 $ T             : int  -1 -2 -3 -4 0 1 2 3 4 -1 ...
 $ Month         : int  1 1 1 1 1 1 1 1 1 1 ...
 $ Gauge         : chr  "Aconcagua" "Aconcagua" "Aconcagua" "Aconcagua" ...
 $ Norm_Flow_m3_s: num  1.49 1.77 1.99 2.02 1.17 ...
 - attr(*, ".internal.selfref")=<externalptr> 
 - attr(*, "sorted")= chr "Month"

Даже если я попытаюсь сгруппировать свои данные оси x

ggplot(HT_2, aes(x=Month, y=Norm_Flow_m3_s,fill=Gauge,group=Month)) + geom_boxplot()

Кто-нибудь знает, почему это происходит? Или как я могу включить числовые данные в полесюжет?

...