Highchart shiny R 散点图 - 如何定义单个点颜色

Highchart shiny R scatter plot - how to define individual point colors

我正在尝试在 highcharts shiny R 中创建一个散点图,但我需要分别为点赋予不同的颜色。例如考虑以下示例:

library("MASS")

dscars <- round(mvrnorm(n = 20, mu = c(1, 1), Sigma = matrix(c(1,0,0,1),2)), 2)


highchart() %>%
  hc_chart(type = "scatter", zoomType = "xy") %>% 
  hc_tooltip(
    useHTML = TRUE,
    pointFormat = paste0("<span style=\"color:{series.color};\">{series.options.icon}</span>",
                         "{series.name}: <b>[{point.x}, {point.y}]</b><br/>")
  ) %>% 
  hc_add_series(data = list.parse2(as.data.frame(dscars)),
                marker = list(symbol = fa_icon_mark("car")),
                icon = fa_icon("car"), name = "car") 

我的objective就是给这20分,一个独特的颜色。

我尝试设置 "fillColor" 内部标记列表以及定义系列的颜色,两者都使用 20 种颜色的矢量,但我没有成功。

谁能给我点提示? 谢谢

这是你想要的吗?

rm(list = ls())
library(highcharter)
library(MASS)
dscars <- data.frame(round(mvrnorm(n = 20, mu = c(1, 1), Sigma = matrix(c(1,0,0,1),2)), 2))

highchart() %>%
  hc_chart(type = "scatter", zoomType = "xy") %>% 
  hc_tooltip(
    useHTML = TRUE,
    pointFormat = paste0("<span style=\"color:{colorByPoint:true};\">{series.options.icon}</span>",
                         "{series.name}: <b>[{point.x}, {point.y}]</b><br/>")
  ) %>% 
  hc_add_series(data = list.parse2(as.data.frame(dscars)),colorByPoint = TRUE,
                marker = list(symbol = fa_icon_mark("car")),
                icon = fa_icon("car"), name = "car") 

在highcharts(highcharter)中,点可以作为其他参数给出,与x和y相同。所以首先

library("MASS")

dscars <- round(mvrnorm(n = 20, mu = c(1, 1), Sigma = matrix(c(1,0,0,1),2)), 2)
dscars <- as.data.frame(dscars)
names(dscars) <- c("x", "y") # it's better give a named list IMHO
dscars$color <- colorize(1:nrow(dscars))

colorize是一个函数,用于在给定其他向量的情况下创建一个颜色向量。在这种情况下,输入向量是一个序列(无重复),因此输出将是不同的颜色。但如果你愿意,你可以使用自己的颜色。

highchart() %>%
 hc_chart(type = "scatter", zoomType = "xy") %>% 
 hc_tooltip(
   useHTML = TRUE,
   pointFormat = paste0("<span style=\"color:{point.color};\">{series.options.icon}</span>",
                     "{series.name}: <b>[{point.x}, {point.y}]</b><br/>")
  ) %>%
  hc_add_series(data = list_parse(dscars),
              marker = list(symbol = fa_icon_mark("car")),
              icon = fa_icon("car"), name = "car") 

注意我们使用了:

  • color:{point.color}; 在 poinFormat 中,因为每个点在颜色辅助器中都有自己的颜色。
  • 我使用 list_parse 解析命名列表而不是未命名列表中的数据框,因此 highcharts 了解如何使用数据。 list_parse 与旧版 highcharts 相同 list.parse3

希望对您有所帮助。