Цвета диаграммы рассеяния теряются при преобразовании в график в R - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь построить пузырьковый график, например, со следующими данными:

    # install.packages("tidyverse")
    # install.packages("plotly")
    # install.packages("viridis")

    library(tidyverse)
    library(plotly) 
    library(viridis) 

    data <- tribble(
    ~race, ~gender, ~count, 
    "race1", "gender1", 15, 
    "race1", "gender2", 58,
    "race1", "gender3", 59,
    "race2", "gender1", 100,
    "race2", "gender2", 12,
    "race2", "gender3", 13, 
    "race3", "gender1", 14, 
    "race3", "gender2", 39, 
    "race3", "gender3", 87
    )

Когда я запускаю команду ggplot, чтобы создать цветной график рассеяния, я получаю больше или меньше того, что хочу (код и рисунок ниже):

bubble <- ggplot(data = data, aes(x = race, y = gender)) + 
  geom_point(aes(size = log10(count) * 4, fill = count), shape = 21) + 
  scale_fill_viridis(discrete = F) +
  geom_text(aes(label = count), size = 4) +
  scale_size_identity() +
  xlab("Race") + 
  ylab("Gender") + 
  theme_classic()

Изображение пузырькового графика, закрашенное переменной подсчета

Однако, когда я использую следующую команду для преобразования этого графика вИнтерактивный график, я теряю цветовые различия (см. рисунок ниже).Я почесал голову над этим какое-то время, и, похоже, не могу найти решение проблемы ... Похоже, что в графике сохраняются различия в цвете для других типов графиков, которые я сделал (например, гистограммы).

Я также получаю прикрепленное предупреждающее сообщение:

ggplotly(bubble)

> Warning message:
In L$marker$color[idx] <- aes2plotly(data, params, "fill")[idx] :
  number of items to replace is not a multiple of replacement length

Полная версия того же графика

Кто-нибудь имеет представление о том, что происходит/ Как сохранить цвет заливки, который я указал на исходном графике ggplot?

1 Ответ

0 голосов
/ 01 марта 2019

После некоторого устранения неполадок, похоже, ваш звонок shape = 21 в geom_point.Попробуйте этот обходной путь:

bubble <- ggplot(data = data, aes(x = race, y = gender)) + 
  geom_point(aes(size = log10(count) * 4, color = count)) + 
  scale_color_viridis(discrete = F) +
  geom_text(aes(label = count), size = 4) +
  scale_size_identity() +
  xlab("Race") + 
  ylab("Gender") + 
  theme_classic()

ggplotly(bubble)

Примечание: вам придется изменить все ваши fill вызовы на color (включая scale_color_viridis)

...