【问题标题】:R plotly scatter plot marker size appears to depend on color when color is discrete当颜色离散时,R plotly 散点图标记大小似乎取决于颜色
【发布时间】:2017-10-04 18:35:05
【问题描述】:

更新:在此处作为错误报告打开: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'))

最大的点不是在右侧,而是在每个颜色组内似乎都在缩放大小,这根本不是我真正想要的:

我尝试从因子更改为字符,并且发生了同样的事情,如果我更改为数字(使用因子级别映射到颜色),那么图例变得连续,这不好。有什么想法吗?

【问题讨论】:

    标签: r plotly


    【解决方案1】:

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

    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 建议,这与数据中单个出现的因子水平有关,在这种情况下,carb 中的68。如果将它们组合为一个级别,则似乎可以正常工作

    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)
    

    【讨论】:

    • 我认为当有组只有一个观察值时会出现错误(这里组 carb=6 和组 carb=8)。这些组对应的气泡太大了,其他的都是对的。
    • @StéphaneLaurent 感谢您的指出!这正是这里发生的事情。
    • 通过一些实验,我确定当一个组中有很多点但大小都相同时会发生这种情况。我越来越确信这是一个错误,并正在撰写一篇文章来解决它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-04
    • 1970-01-01
    • 1970-01-01
    • 2020-12-22
    • 1970-01-01
    • 2021-04-20
    相关资源
    最近更新 更多