Как построить коробочный график с правильно расположенными значениями непрерывной оси x в ggplot2 - PullRequest
0 голосов
/ 11 ноября 2018

Я пытаюсь построить блок-график, где моя ось X представляет собой непрерывную шкалу времени, в которой градусы растут в днях, т.е. от 0 до 2500. Я хотел бы получить блок-график со значениями оси X, правильно распределенными по непрерывному времени. масштаб, а не дискретный. Обычно, если бы это было обычное время / дата, я мог бы использовать 'scale_x_date' с ggplot2 в R. Однако, поскольку числа находятся вне масштаба даты / времени, я не уверен, как мы можем правильно расположить значения оси x. Вот фиктивный пример:

library(ggplot2)
set.seed(1234)
#get data    
df <- data.frame(y=abs(rnorm(8)),
             x=as.factor(rep(c(0,100,200,500),times=2))) 
ggplot(aes(y=y,x=x), data=df) + 
       geom_boxplot()

Это дает мне сюжет

enter image description here

, где моя ось x не разнесена на основе ее числовых значений. Вместо этого я хотел бы получить коробку, где интервал между 200 и 500 должен быть в три раза больше, чем 100-200. Мои фактические данные имеют значения по оси X в диапазоне 0-2500 растущих дней. Я ищу ggplot2 конкретное решение предпочтительно.

1 Ответ

0 голосов
/ 11 ноября 2018
df <- data.frame(y=abs(rnorm(8)),
                 x=rep(c(0,100,200,500),times=2)) 

ggplot(df, aes(x, y, group=x)) + 
  geom_boxplot()

enter image description here

Это решение основано на двух изменениях. Во-первых, для построения прямоугольников, расположенных на непрерывной оси x, нам нужно предоставить числовые значения, а не значения коэффициента x. Тем не менее, это не работает само по себе, потому что без значений x, сгруппированных по уровням фактора, ggplot больше не знает, как сгруппировать данные в разные блоки. Итак, нам также необходимо предоставить дополнительную группирующую переменную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...