Управление порядком точек в ggplotly в R

Рассмотрим проблему (и воспроизводимый пример), приведенную в управление порядком точек в ggplot2 в R?.

Предоставленное там решение (сначала закажите data.frame, а затем график) работает и для меня. Однако, когда я хочу просмотреть результирующий график, используя plotly::ggplotly(), порядок точек снова перепутался. Кто-нибудь знает, как сохранить порядок точек на графике?


person yasel    schedule 18.10.2019    source источник


Ответы (1)


На самом деле, я считаю, что plotly создает правильный порядок в этом конкретном примере даже без изменения графика/фрейма данных в первую очередь.

library(tidyverse)
library(plotly)

set.seed(1)
mydf <- data.frame(x=rnorm(500),  label = 'a', stringsAsFactors = FALSE) %>% mutate(y = rnorm(500)*0.1 + x)
mydf$label[50] <- "point"

ggplot(mydf) + geom_point(aes(x=x, y=y, color=label, size = label)) + 
  scale_size_manual(values = c(a = 0.1,point = 2))

plotly::ggplotly()

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

Более безопасным вариантом, вероятно, может быть @Dinre ответ на ваш вышеупомянутый вопрос - сначала разделите свои данные на разные слои. Я использую предложенное быстрое базовое подмножество R, как в ответе, но вы также можете разделить его с помощью split или с помощью функций tidyverse.

df_layer_1 <- mydf[mydf$label=="a",]
df_layer_2 <- mydf[mydf$label=="point",]

ggplot() + 
  geom_point(data=df_layer_1, mapping = aes(x, y), colour="orange", size = .1) +
  geom_point(data=df_layer_2, aes(x, y), colour="blue", size = 2)

plotly::ggplotly()

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

R version 3.6.0 (2019-04-26)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

other attached packages:
[1] plotly_4.9.0  ggplot2_3.2.0
person tjebo    schedule 18.10.2019