Блочная диаграмма отображается неправильно

Попытка запустить эту команду:

data %>%
+     ggplot( aes(x=Seconds, y=Rate)) +
+     geom_boxplot( fill="skyblue", notch=FALSE) +
+     geom_jitter( size=1, color="orange", width=0.2)

В этом data.frame (каждый столбец был преобразован в фактор) (упрощенно):

Seconds  |  Rate
0.512849 |  0
0.227982 |  0
1.287198 |  1
1.278101 |  1
2.218711 |  2
3.124897 |  2
5.128947 |  3
6.189710 |  3

Вывод таков, что правильно показывает часть точечной диаграммы, но не часть диаграммы:

Сюжет с ошибкой, описанной в сообщении.


person Dr Ken Reid    schedule 21.07.2019    source источник
comment
Взгляните на документы: ожидается, что ваш аргумент x будет дискретным, таким как скорость, которую вы имеете. Возможно, вы захотите поменять местами оси x и y. Почему у вас секунды как фактор? Это похоже на противоположное тому, что вы хотели бы   -  person camille    schedule 22.07.2019
comment
Также взгляните на str(data). Я думаю, вы обнаружите, что seconds отображается как символ или фактор (в то время как вы хотите, чтобы это было непрерывное число), вероятно, в результате процесса импорта из любого файла, из которого вы его читаете.   -  person Brian    schedule 22.07.2019
comment
Привет, ребята, я пробовал менять оси местами, и я отменил изменение на seconds, так что это просто целые числа. Я также последовал совету JMilner и удалил канал, добавил в группу и поместил data в функцию ggplot(). Боюсь, все тот же результат. Теперь это выглядит так: ggplot(data, aes(x=Rate, y=Seconds, group=Seconds)) + geom_boxplot( fill="skyblue", notch=FALSE) + geom_jitter( size=1, color="orange", width=0.2) Изображение: imgur.com/a/8M0tKIi   -  person Dr Ken Reid    schedule 22.07.2019


Ответы (2)


geom_boxplot требует команду group= внутри aes()

По умолчанию будут использоваться ваши значения x, если вы не укажете другую переменную.

Так что добавить...

data %>%
  ggplot( aes(x=Seconds, y=Rate, group=Seconds)) +
  geom_boxplot( fill="skyblue", notch=FALSE) +
  geom_jitter( size=1, color="orange", width=0.2)

Также вы заметите, что я удалил + в начале каждой строки. Это нужно только в конце ИЛИ в начале, а не в обоих случаях.

Не уверен, почему вы используете канал (%>%), но вы можете просто построить его так...

ggplot(data, aes(x=Seconds, y=Rate, group=Seconds)) +
  geom_boxplot( fill="skyblue", notch=FALSE) +
  geom_jitter( size=1, color="orange", width=0.2)

Итак, здесь у вас есть диаграмма для каждого значения в вашем столбце секунд, который выглядит так, как будто он отличается в каждой строке.

Ваши группы диаграмм должны быть переменными на оси X, и обычно они должны быть категориальными или, по крайней мере, целыми числами.

Численно было бы более разумно, если бы у вас были значения в столбце «Скорость» в качестве значений группировки для полей, хотя я понимаю, что скорость, вероятно, здесь является зависимой переменной.

Я думаю, вам нужно дать этому вопросу немного больше контекста, но, надеюсь, это поможет.

person JMilner    schedule 21.07.2019

Все остальные ответы были частично правильными, но полный ответ приведен ниже. В частности, данные нужно было сгруппировать по скорости (Дж. Милнер предложил группировку, но по секундам, так что он был на правильном пути!), а скорость нужно было сделать фактором, а не секундами (как предложили Брайан и Камилла).

ggplot(data, aes(x=Rate, y=Seconds, group=Rate)) +
+     geom_boxplot( fill="skyblue", notch=FALSE) +
+     geom_jitter( size=1, color="orange", width=0.3)

Окончательный вывод выглядит следующим образом (секунды изменены на минуты, метка теперь правильная :)введите здесь описание изображения

person Dr Ken Reid    schedule 22.07.2019