r сюжетная диаграмма рассеяния с непрерывным цветом не будет отображать цвет NA, когда есть два значения (1 значение, 1 NA) - PullRequest
0 голосов
/ 16 декабря 2018

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

Когда в группе только два значения, одно число и одно NA , график для элемента NA показывает некоторое значение вместо цвета NA (который серый).

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

Я представляю и пример ниже

library(plotly)
library(dplyr)
set.seed(1234)
my_data <- 
data_frame(
    cat = sample(LETTERS[1:3], 30, replace=TRUE, prob=c(0.4, 0.5, 0.1)),
    num1 = runif(30,1,6),
    num2 = runif(30,100,200),
    )  %>%
    mutate(num2 = ifelse(row_number() == 14, NA, num2))
  1. График без сопоставления символов (без категории 2 элемента) отображает правильный цвет для NA

    plot_ly(
    data = my_data,
        type = "scatter",
        mode = "markers",
        x = ~cat,
        y = ~num1,
        color = ~num2,
        #symbol =~cat,          ## symbol mapping commented
    marker = list(size = 20),
    text = ~num2)
    

сюжет1

График с символами отображает один и тот же цвет для обеих точек.

plot_ly(
    data = my_data,
        type = "scatter",
        mode = "markers",
        x = ~cat,
        y = ~num1,
        color = ~num2,
        symbol =~cat,
    marker = list(size = 20),
    text = ~num2
)

plot2 Обведенная точка должна быть цвета NA (серый)

1 Ответ

0 голосов
/ 17 декабря 2018

Просто писать NA, как это, не указывает type NA.Я точно не знаю, но подозреваю, что это «символ» АН, а не «номер» АН ».Смотрите ниже, обратите внимание на введение АН.Найдите способ конвертировать ваши NA в NA_real_, я предлагаю dplyr, если NA, тогда NA_real_ еще оставьте его в покое. Тип заявления.

library(plotly)
library(dplyr)
set.seed(1234)
my_data <- 
data_frame(
cat = sample(LETTERS[1:3], 30, replace=TRUE, prob=c(0.4, 0.5, 0.1)),
num1 = runif(30,1,6),
num2 = runif(30,100,200),
)  %>%
mutate(num2 = ifelse(row_number() == 14, NA_real_, num2))

plot_ly(
data = my_data,
    type = "scatter",
    mode = "markers",
    x = ~cat,
    y = ~num1,
    color = ~num2,
    symbol =~cat,
marker = list(size = 20),
text = ~num2
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...