【发布时间】: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