Ошибка geom_point требует следующей недостающей эстетики: y при использовании geom_point

Мне нужно построить несколько столбцов из моего фрейма данных. Вообще говоря, на этой диаграмме мне нужно, чтобы значения трех выбранных столбцов были отображены как одна строка, где X будет представлять столбец Release в соответствии со следующим фреймом данных:

Release,AddedClasses,ModifiedClasses,RemovedClasses,AddedMethods,ModifiedMethods,RemovedMethods,AddedImports,RemovedImports,AddedFields,ModifiedFields,RemovedFields
v1,39,33,0,43,25,0,3,0,21,0,0
v2,48,62,0,88,56,1,35,0,42,0,2
v3,54,93,0,117,95,1,67,0,67,0,2
v4,55,116,29,124,134,5,69,2,121,0,5

Для строк мне нужно построить значения из следующих столбцов: AddedClasses, ModifiedClasses, RemovedClasses.

Я попытался построить график с помощью следующего кода:

ggplot(data=ReminderDOPTransformationsResume, aes(x=Release, group = 1)) + 
geom_line(aes(y=AddedClasses,color=AddedClasses), size=2) + 
geom_point(aes(color = AddedClasses), size=5, stroke = 0, shape = 16) + 
geom_line(aes(y=ModifiedClasses,color=ModifiedClasses), size=2) + 
geom_point(aes(color = ModifiedClasses), size=5, stroke = 0, shape = 16) + 
geom_line(aes(y=RemovedClasses,color=RemovedClasses), size=2) + 
geom_point(aes(color = RemovedClasses), size=5, stroke = 0, shape = 16) + 
scale_linetype_manual(values=c("solid", "solid")) +
theme_bw(base_size = 24) + theme(plot.title = element_text(hjust = 0.5), legend.title=element_blank()) 

Но при выполнении отображается следующая ошибка:

Error: geom_point requires the following missing aesthetics: y

Если удалить geom_point частей, график будет построен, но есть ошибки в цветах линий и заголовках:

введите здесь описание изображения


person Leomar de Souza    schedule 14.08.2019    source источник
comment
Подсказка: добавление нескольких операторов geom - верный признак того, что ваши данные следует изменить с широкого на длинный формат. Кроме того, предоставьте примеры данных в текстовом формате, а не в виде изображений, чтобы пользователи могли их копировать / вставлять.   -  person neilfws    schedule 15.08.2019
comment
@neilfws Спасибо за быстрые советы. Я обновил описание, чтобы вставить код фрейма данных.   -  person Leomar de Souza    schedule 15.08.2019


Ответы (1)


Преобразуйте данные из «широкого» в «длинный» формат - один столбец для имен переменных, другой для их значений - и aes() сделает всю работу за вас.

library(dplyr)
library(tidyr)
library(ggplot2)

ReminderDOPTransformationsResume <- tibble(Release = paste0("v", 1:4), 
                                           AddedClasses = c(39, 48, 54, 55), 
                                           ModifiedClasses = c(33, 62, 93, 116),
                                           RemovedClasses = c(0, 0, 0, 29),
                                           AddedMethods = c(43, 88, 117, 124))

ReminderDOPTransformationsResume %>% 
  select(Release, AddedClasses, ModifiedClasses, RemovedClasses) %>% 
  gather(Var, Val, -Release) %>% 
  ggplot(aes(Release, Val, group = Var)) + 
  geom_line(aes(color = Var)) + 
  geom_point(aes(color = Var))

Результат:

введите здесь описание изображения

person neilfws    schedule 14.08.2019