当颜色是离散的时,R曲线散点图标记尺寸似乎取决于颜色

时间:2017-10-04 18:35:05

标签: r plotly

更新:在此处作为错误报告打开:https://github.com/ropensci/plotly/issues/1133

我使用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

我尝试过从一个因素到另一个因素的变化,同样的事情发生了,如果我改为数字(使用因子级别映射到颜色),那么图例就会变得连续,这是不好的。有什么想法吗?

1 个答案:

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

可能是个错误?

<强>更新 由@StéphaneLaurent建议,这与数据中单次出现的因子级别相关,在本例中为6中的8carb。如果将它们合并为一个级别,它似乎正在工作

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)