ggplotly в r генерирует легенду, отличную от ggplot - PullRequest
0 голосов
/ 14 июля 2020

Я создал следующий фрейм данных в R. Первый шаг - импортировать необходимые библиотеки

 library(ggplot2)
 library(plotly)
 library(dplyr)

Мы создаем фрейм данных здесь следующим образом

  DF_1<-data.frame("A"= c(1:10))
  DF_1$B<-c("D", "C")
  DF_1$C<-DF_1$A^2

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

  p2<-ggplot(DF_1, aes(x=A, y=C, group=B, fill=B)) +
  geom_line(size=.5) +  geom_ribbon(data=subset(DF_1),aes(x=A,ymax=C),ymin=0,alpha=0.3) +
  scale_fill_manual(name='Legend', values=c("green4",  "red"), labels=c("D", "C" ))+theme_bw() 

При рендеринге p2 легенда отображается правильно. Когда я вкладываю p2 в ggplotly, легенда меняется на две темные линии.

   p3<-ggplotly(p2, dynamicTicks = T)
   p3= layout(p3, xaxis = list(type = "log"))

Можно ли сохранить легенды p2 в p3. Прошу кого-нибудь взглянуть

1 Ответ

1 голос
/ 14 июля 2020

Похоже, что ggplotly более разумно, чем ggplot2, в том, как устанавливать эстетику. Простое перемещение fill aes из глобальной настройки в ggplot в geom_ribbon дает правильную легенду:

library(ggplot2)
library(plotly)
library(dplyr)

DF_1<-data.frame("A"= c(1:10))
DF_1$B<-c("D", "C")
DF_1$C<-DF_1$A^2

ggplot(DF_1, aes(x = A, y = C, group=B)) +
  geom_line(size=.5) + 
  geom_ribbon(aes(x = A, ymin = 0, ymax = C, fill = B), alpha=0.3) +
  scale_fill_manual(name='Legend', values=c("green4",  "red"), labels=c("D", "C" ))+theme_bw() 

ggplotly(dynamicTicks = T) %>% 
  layout(xaxis = list(type = "log"))

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

...