Исправлена ошибка: недостаточно значений в ручном масштабе. требуется 2, но предоставляется только 1. В R

#r #ggplot2

#r #ggplot2

Вопрос:

Я бы создал график, подобный этому, введите описание изображения здесь

но я столкнулся с проблемой: ошибка: недостаточно значений в ручном масштабе. требуется 2, но предоставляется только 1

Вот мой код

 Library(ggplot2)

Library(read_xl)

df2 <- read_excel("Data122.xlsx", sheet = "sheet4")

ggplot(Data=df2)   
  geom_line(aes(col="COP", 
                x =df2$`Ground Temp T1 Tg`, 
                y=df2$`Daily COP`), size= 2)   
  theme_bw()   
  labs(x = "Entering source temperature EST", y = "COP")   
  geom_point()   theme(legend.position = "top")   
  scale_color_manual(values=c("#FF3333"))   
  theme(legend.title = element_blank())   
  scale_y_continuous(name = "COP", 
                     sec.axis = sec_axis(trans = ~ . *1, 
                                         name = "Produced and Consumed power MWh"))   
  geom_line(aes(col = "Consumed Power", 
                x = df2$`Ground Temp T1 Tg`, 
                y = df2$`Electricity MWh day`), size= 2)
**Insufficient values in manual scale. 2 needed but only 1 provided**
  

Комментарии:

1. Ну, вам нужно указать второй цвет scale_color_manual . Кроме того, удалите df2$ изнутри aes . Это не требуется и может привести к неожиданным результатам.

Ответ №1:

Мне понадобился бы образец ваших данных, чтобы быть уверенным, но ваши проблемы есть scale_color_manual() . Вы указали одно значение цвета для сопоставления с данными, но в данных для сопоставления должно быть два значения. Если вы хотите, чтобы все было такого цвета, не отображайте цвет как эстетику, просто укажите его в качестве параметра:

  geom_line(aes(x =df2$`Ground Temp T1 Tg`, 
               y=df2$`Daily COP`), size = 2, color = "#FF3333")
  

Вот несколько других указаний на ваш код. В ваших aes() сопоставлениях у вас есть df2$ . Вам это не нужно. Вся причина предоставления data = в исходном ggplot() вызове заключается в том, чтобы избежать этого.

  geom_line(aes(x = `Ground Temp T1 Tg`, 
               y = `Daily COP`), size = 2, color = "#FF3333")
  

Ваш geom_point() слой не имеет отображенной эстетики и не определен в ggplot() вызове. Слои не наследуют эстетику от других слоев. На вашем графике не будет точек.