我一直试图在散点图中绘制散点图,以两个绘图元素(颜色和符号)显示带有某些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))
没有符号映射(没有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)
带有符号的图对两个点显示相同的颜色。
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颜色(灰色)
答案 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
)