2017-10-04 62 views
4

UPDATE:打开作为一个bug报告在这里:https://github.com/ropensci/plotly/issues/1133[R plotly散点图标记的大小似乎取决于颜色,当颜色是离散

我创建一个散点图与plot_ly,其中颜色是由一个因子变量表示大小由数字表示。在这种情况下,看起来这个尺寸奇怪地受到颜色的影响。

为了演示,这里我给xsize分配了相同的变量。人们会预期在这种情况下,最大的点位于最右侧。此演示代码包含一些额外的hoverinfo用于调试。

library(plotly) 

my_data <- mtcars 
my_data$carb <- as.factor(mtcars$carb) 

plot_ly(my_data, 
     x = ~wt, 
     y = ~mpg, 
     size = ~wt, 
     color = ~carb, 
     type = 'scatter', 
     mode = 'markers', 
     hoverinfo = 'text', 
     text = ~paste0('wt (x): ', wt, '\n', 
         'mpg (y): ', mpg, '\n', 
         'wt (size): ', wt, '\n', 
         'carb (color): ', carb, '\n')) 

取而代之的是最大的点是在右边的,看起来好像尺寸被每个色组,这根本不是我真正想要的内缩放:

enter image description here

我尝试过从因素转换为字符,并且发生同样的事情,如果我更改为数字(要使用因子级别映射到颜色),则图例变得连续,这是不好的。有任何想法吗?

回答

0

我不知道这个问题的答案,但经过几次测试后,我觉得这与颜色变量中的数字级别有关。

library(plotly) 

my_data <- mtcars 
my_data$carb <- factor(mtcars$carb) 
my_data$cyl <- factor(mtcars$cyl) # cyl contains 3 levels and works fine 
plot_ly(data=my_data, x = ~wt, y = ~mpg, color = ~cyl, size = ~wt) 


# 2 levels works fine 
my_data$carb <- factor(mtcars$carb) 
levels(my_data$carb) <- rep(1:2,each=3) 
plot_ly(data=my_data, x = ~wt, y = ~mpg, color = ~carb, size = ~wt) 

# 3 levels works fine 
my_data$carb <- factor(mtcars$carb) 
levels(my_data$carb) <- rep(1:3,each=2) 
plot_ly(data=my_data, x = ~wt, y = ~mpg, color = ~carb, size = ~wt) 

# 4 levels break down 
my_data$carb <- factor(mtcars$carb) 
levels(my_data$carb) <- c(1,1,2,2,3,4) 
plot_ly(data=my_data, x = ~wt, y = ~mpg, color = ~carb, size = ~wt) 

一个bug可能吗?

更新 通过@StéphaneLaurent建议,这是关系到与数据出现单因子水平,在这种情况下,6carb8。如果它们被合并为一个级别,它似乎是工作

my_data$carb <- factor(mtcars$carb) 
levels(my_data$carb) <- c(1,2,3,4,5,5) 
plot_ly(data=my_data, x = ~wt, y = ~mpg, color = ~carb, size = ~wt) 
+2

我认为,当有只有一个观察(这里组碳水化合物= 6和组碳水化合物= 8)组发生的错误。与这些组相对应的气泡太大,其他的都是正确的。 –

+0

@StéphaneLaurent感谢您指出!这正是这里发生的事情。 – platypus

+0

通过一些实验,我确定它可以发生在一个组中有许多点但所有的尺寸相同的情况下。我越来越确信这是一个错误,并且正在撰写一篇文章来解决这个问题。 –