Как создать многоцветную сегментированную линию с помощью ggplotly? - PullRequest
0 голосов
/ 20 октября 2018

У меня есть следующий фрейм данных:

    df <- data.frame(party=c("Democrat", "Democrat", "Democrat", "Republican","Republican","Republican","Republican","Republican","Democrat","Democrat"), value=c(1,4,2,3,5,6,10,9,8,7), year=c(1960:1969))

Я пытаюсь нанести год на ось x, значение на оси y и цвет по сторонам.Таким образом, версия ggplot проста и работает:

    library(ggplot2)
    library(plotly)

    p<-ggplot(df, aes(x=year, y=value, color=party, group=1))+geom_line()
    p

enter image description here

Моя проблема заключается в попытке преобразовать его в объект с использованием ggplotly.

    ggplotly(p)

enter image description here

Кажется, что опция group = 1 в эстетике ggplot, которая заставляет линию быть одной линией, которая сегментирована по цвету, нене переносить на ggplotly вообще.Кто-нибудь может указать способ исправить это?Я искал несколько часов безрезультатно.

1 Ответ

0 голосов
/ 20 октября 2018

Я бы предложил заменить geom_line на geom_segment, что позволит вам определить внешний вид каждого отрезка.Ему нужна конечная точка для каждого сегмента, но он выдерживает перевод в plotly, который, кажется, имеет немного другую модель, чем ggplot2 для работы с несколькими сериями.

q<-ggplot(df, aes(x=year, y=value, 
                  xend = lead(year), yend = lead(value),
                  color=party))+
  geom_segment() + 
  scale_x_continuous(breaks = seq(1960, 1970, by = 2))
q

ggplotly(q)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...