【问题标题】:R highcharter scatter plot legend color is not mapped correctly from the point color as costume paletteR highcharter 散点图图例颜色未从作为服装调色板的点颜色正确映射
【发布时间】:2023-01-12 03:13:30
【问题描述】:

我正在尝试使用服装颜色图绘制散点图。所以我根据数据框列的唯一值定义我的服装颜色。

library('dplyr')
library('leaflet')
library('highcharter')

n <- length(unique(mtcars$carb))

col_vector <- c('#e6194b', '#3cb44b', '#ffe119', '#4363d8', '#f58231', '#911eb4',
                '#46f0f0', '#f032e6', '#bcf60c', '#008080', '#e6beff',
                '#9a6324', '#800000', '#aaffc3', '#808000', '#000075', '#808080')
set.seed(2)

if(n > length(col_vector)){
  
  col=sample(col_vector, n,replace = TRUE)
  
}else {
  
  col=sample(col_vector, n,replace = FALSE)
}

pal <- leaflet::colorFactor(pal = col, domain = unique(mtcars$carb))

现在我只想画这张图:

df <- dplyr::mutate(mtcars,
                colorCode = pal(mtcars[['carb']])
                )



highchart() %>%
  hc_add_series(df, type = "scatter",
                hcaes(x = mpg, 
                      y = disp, 
                      group = carb
                ),
                color = unique(df$colorCode)

  )

它适用于点和图例,但有一种奇怪的行为。如果你检查df数据框,你会看到颜色代码 carb = 4#F032E6 而图表显示了一些不同的东西。看看下面的数据框:

虽然图表看起来像这样:

正如您在图中看到的那样,carb = 4 不是 #F032E6

hcaes 中定义颜色有效,但图例未使用相同的调色板更新。

n <- length(unique(mtcars$carb))

col_vector <- c('#e6194b', '#3cb44b', '#ffe119', '#4363d8', '#f58231', '#911eb4',
                '#46f0f0', '#f032e6', '#bcf60c', '#008080', '#e6beff',
                '#9a6324', '#800000', '#aaffc3', '#808000', '#000075', '#808080')
set.seed(2)

if(n > length(col_vector)){
  
  col=sample(col_vector, n,replace = TRUE)
  
}else {
  
  col=sample(col_vector, n,replace = FALSE)
}

pal <- leaflet::colorFactor(pal = col, domain = unique(mtcars$carb))

df <- dplyr::mutate(mtcars,
                    colorCode = pal(mtcars[['carb']])
                    )



highchart() %>%
  hc_add_series(df, type = "scatter",
                hcaes(x = mpg, 
                      y = disp, 
                      group = carb,
                      color = colorCode
                      
                )
  )

【问题讨论】:

    标签: r highcharts scatter-plot r-highcharter


    【解决方案1】:

    你可以在你的美学中使用colour而不是像这样的color

    library(dplyr)
    library(leaflet)
    library(highcharter)
    
    n <- length(unique(mtcars$cyl))
    
    col_vector <- c('#e6194b', '#3cb44b', '#ffe119', '#4363d8', '#f58231', '#911eb4',
                             '#46f0f0', '#f032e6', '#bcf60c', '#008080', '#e6beff',
                             '#9a6324', '#800000', '#aaffc3', '#808000', '#000075', '#808080')
                             set.seed(2)
                             
                             if(n > length(col_vector)){
                               
                               col=sample(col_vector, n,replace = TRUE)
                               
                             }else {
                               
                               col=sample(col_vector, n,replace = FALSE)
                             }
                             
                             pal <- leaflet::colorFactor(pal = col, domain = unique(mtcars$cyl))
                             
                             df <- dplyr::mutate(mtcars,
                                                 colorCode = pal(mtcars[['carb']])
                             )
                             
                             highchart() %>%
                               hc_add_series(df, type = "scatter",
                                             hcaes(x = mpg, 
                                                   y = disp, 
                                                   group = cyl,
                                                   colour = colorCode))
    

    创建于 2023-01-11 reprex v2.0.2

    【讨论】:

    • 在这种情况下,我们有 3 个来自 mtcars 数据框 ('cyl') 的集群。但是如果你有更多的集群,它似乎不起作用。例如,尝试使用“carb”而不是“cyl”。它相应地改变了点的颜色和图例,但它映射错误。与数据框上的 colorCode 列进行比较。 * 我更新我的问题
    • 我更新了 qestion@Quinten
    • 嗨@YasinAmini,检查我更新的代码!你应该使用colour。而不是color
    • 你好,我们又见面了。它仍然不起作用。它不使用我的服装调色板。它从默认库值中获取。颜色代码与我在问题@Quinten 中发布的图片相同
    猜你喜欢
    • 1970-01-01
    • 2013-07-14
    • 2016-05-04
    • 2018-04-08
    • 1970-01-01
    • 2020-05-25
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    相关资源
    最近更新 更多