Почему geom_line отображается неправильно?

Я провожу анализ в наборе данных Bike Sharing (kaggle). Вот образец:

Голова

     yr  mnth Ano     cnt
  <int> <int> <chr> <int>
1     0     1 2011    985
2     0     1 2011    801
3     0     1 2011   1349
4     0     1 2011   1562
5     0     1 2011   1600

Хвост

    yr   mnth  Ano   cnt
  <int> <int> <chr> <int>
1     1    12 2012   2114
2     1    12 2012   3095
3     1    12 2012   1341
4     1    12 2012   1796
5     1    12 2012   2729

Где «cnt» означает количество велосипедов на каждый день. Каждая строка это день с 01.01.2011 по 12.12.2012

Моя цель состояла в том, чтобы проанализировать число центов за каждый месяц как с 2011, так и с 2012 года; Однако я продолжаю получать этот странный вывод:

мой код:

k<- bike_new %>% 
  ggplot(aes(x=mnth,y=cnt))+  geom_line();k

Что я здесь делаю неправильно?

Добавьте group = Ano к aes

Allan Cameron 12.12.2020 19:50
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
1
95
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как упоминалось в мудром совете @AllanCameron, добавьте элемент group в качестве фактора, и, поскольку у вас есть два года, вам понадобится цвет. Вот код, использующий смоделированные данные:

library(ggplot2)
library(dplyr)
#Code
bike_new %>% 
  ggplot(aes(x=factor(mnth),y=cnt,group=factor(Ano),color=factor(Ano)))+
  geom_line()+
  xlab('month')+
  labs(color='Ano')

Выход:

Некоторые используемые данные:

#Data
bike_new <- structure(list(yr = c(0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 
0L, 0L, 0L, 0L, 0L), mnth = c(1, 1, 1, 1, 1, 12, 12, 12, 12, 
12, 2, 2, 2, 2, 2), Ano = c(2011L, 2011L, 2011L, 2011L, 2011L, 
2012L, 2012L, 2012L, 2012L, 2012L, 2011L, 2011L, 2011L, 2011L, 
2011L), cnt = c(985, 801, 1349, 1562, 1600, 2114, 3095, 1341, 
1796, 2729, 1085, 901, 1449, 1662, 1700)), row.names = c(NA, 
-15L), class = "data.frame")

Если вы хотите видеть только одну строку в год, @Phil может объяснить стратегию, используя другую переменную в качестве дня. Или вы можете агрегировать значения в следующей форме:

#Code 2
bike_new %>% 
  group_by(Ano,mnth) %>%
  summarise(cnt=sum(cnt,na.rm=T)) %>%
  ggplot(aes(x=factor(mnth),y=cnt,group=factor(Ano),color=factor(Ano)))+
  geom_line()+
  geom_point()+
  xlab('month')+
  labs(color='Ano')
 

Выход:

Поскольку вы анализируете количество велосипедов.

Этот вывод не то, что я ищу. Я имею в виду линейную диаграмму временных рядов, а не эти вертикальные линии

insanedshk 12.12.2020 20:20

@insanedshk Пожалуйста, предоставьте больше данных, чтобы помочь вам!

Duck 12.12.2020 20:21

@insanedshk Причина, по которой появляются эти вертикальные линии, заключается в том, что данные показывают одни и те же месяцы и годы несколько раз с разным количеством каждый раз. Если вам нужна фактическая линейная диаграмма временных рядов, данные должны включать какой-то разделитель между наблюдениями (предположительно, дневная переменная).

Phil 12.12.2020 21:13

@insanedshk Я добавил обновление со стратегией получения линий. Пожалуйста, дайте мне знать, если это сработает для вас!

Duck 12.12.2020 21:36

Другие вопросы по теме