当有两个值(1个值,1个NA)时,具有连续颜色的p plotly散点图将不显示NA颜色

时间:2018-12-16 19:28:24

标签: r plotly na

我一直试图在散点图中绘制散点图,以两个绘图元素(颜色和符号)显示带有某些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)
    

plot1

  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 :(得分:0)

仅这样写NA并不会指定NA的type。我不确定,但我怀疑这是一个NA“字符”,而不是NA“数字”。见下文,注意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
)