将线条的颜色设置为与标记颜色相同

问题描述 投票:0回答:1

我正在尝试使用 R 中的 Highcharter 创建折线图,其中线条的颜色将是数据框的 COLOR 列中的颜色。

数据框的第一列有:row_names,不同的日期可以在同一天多次。 第二列:名称,可以出现多次的不同名称,每个日期一个。 第三列:y,值 第四列:COLOR,每个名称的颜色不同

df <- structure(list(row_labels = c("2024-03-18", "2024-03-18", "2024-03-18", 
"2024-03-18", "2024-03-18", "2024-03-18", "2024-03-18", "2024-03-18", 
"2024-03-18", "2024-03-18", "2024-03-18", "2024-03-18", "2024-03-18", 
"2024-03-18", "2024-03-19", "2024-03-19", "2024-03-19", "2024-03-19", 
"2024-03-19", "2024-03-19", "2024-03-19", "2024-03-19", "2024-03-19", 
"2024-03-19", "2024-03-19", "2024-03-19", "2024-03-19", "2024-03-19", 
"2024-03-20", "2024-03-20", "2024-03-20", "2024-03-20", "2024-03-20", 
"2024-03-20", "2024-03-20", "2024-03-20", "2024-03-20", "2024-03-20", 
"2024-03-20", "2024-03-20", "2024-03-20", "2024-03-20", "2024-03-21", 
"2024-03-21", "2024-03-21", "2024-03-21", "2024-03-21", "2024-03-21", 
"2024-03-21", "2024-03-21", "2024-03-21", "2024-03-21", "2024-03-21", 
"2024-03-21", "2024-03-21", "2024-03-21", "2024-03-22", "2024-03-22", 
"2024-03-22", "2024-03-22", "2024-03-22", "2024-03-22", "2024-03-22", 
"2024-03-22", "2024-03-22", "2024-03-22", "2024-03-22", "2024-03-22", 
"2024-03-22", "2024-03-22"), name = c("car", "boat", "bike", 
"walk", "truck", "limo", "tuktuk", "plane", "helicopter", "monopedal", 
"pedal", "paraplane", "swim", "run", "car", "boat", "bike", "walk", 
"truck", "limo", "tuktuk", "plane", "helicopter", "monopedal", 
"pedal", "paraplane", "swim", "run", "car", "boat", "bike", "walk", 
"truck", "limo", "tuktuk", "plane", "helicopter", "monopedal", 
"pedal", "paraplane", "swim", "run", "car", "boat", "bike", "walk", 
"truck", "limo", "tuktuk", "plane", "helicopter", "monopedal", 
"pedal", "paraplane", "swim", "run", "car", "boat", "bike", "walk", 
"truck", "limo", "tuktuk", "plane", "helicopter", "monopedal", 
"pedal", "paraplane", "swim", "run"), y = c(25, 24.71, 9.69, 
6.46, 2.9, 1.64, 1.34, 0.2, 0.5, 0.51, 1.47, 4.92, 16.59, 4.08, 
26.59, 27.87, 9.68, 5.37, 2.55, 1.77, 1.74, 0.33, 0.62, 0.78, 
1.39, 3.52, 14.49, 3.3, 25.64, 29.88, 8.73, 3.91, 2.49, 1.08, 
2.08, 0.21, 0.46, 0.5, 1.24, 3.49, 16.53, 3.76, 23.12, 29.58, 
12.17, 6.15, 1.53, 3.23, 0.81, 0.37, 0.17, 0.87, 0.48, 2.71, 
15.89, 2.93, 30.32, 29.01, 7.85, 5.43, 1.58, 2.36, 1.37, 0.58, 
0, 0.23, 0.25, 2.72, 15.91, 2.4), COLOR = c("#a2d214", "#228b22", 
"#e4010b", "#0055a4", "#E51C55", "#63be21", "#6B1E5E", "#adbe18", 
"#0a0a0a", "#0b0b0b", "#0c0c0c", "#0d0d0d", "#0e0e0e", "#0f0f0f", 
"#a2d214", "#228b22", "#e4010b", "#0055a4", "#E51C55", "#63be21", 
"#6B1E5E", "#adbe18", "#0a0a0a", "#0b0b0b", "#0c0c0c", "#0d0d0d", 
"#0e0e0e", "#0f0f0f", "#a2d214", "#228b22", "#e4010b", "#0055a4", 
"#E51C55", "#63be21", "#6B1E5E", "#adbe18", "#0a0a0a", "#0b0b0b", 
"#0c0c0c", "#0d0d0d", "#0e0e0e", "#0f0f0f", "#a2d214", "#228b22", 
"#e4010b", "#0055a4", "#E51C55", "#63be21", "#6B1E5E", "#adbe18", 
"#0a0a0a", "#0b0b0b", "#0c0c0c", "#0d0d0d", "#0e0e0e", "#0f0f0f", 
"#a2d214", "#228b22", "#e4010b", "#0055a4", "#E51C55", "#63be21", 
"#6B1E5E", "#adbe18", "#0a0a0a", "#0b0b0b", "#0c0c0c", "#0d0d0d", 
"#0e0e0e", "#0f0f0f")), row.names = c(NA, -70L), class = c("tbl_df", 
"tbl", "data.frame"))

以下代码正在创建图表,并将颜色分配给随机值,而不是位于 df 同一行的值:

hchart(df,
'line',
hcaes(x=row_labels, y=y, group=name), 
dataLabels=list(enabled=T)) %>% 
  hc_colors(color=df$COLOR)

以下代码设置正确的颜色,但只是针对点而不是整行:

hchart(df4bis, 'line', hcaes(x = row_labels, y = y, group = name,color = COLOR), dataLabels = list(enabled = TRUE))

我怎样才能正确地做到这一点?

r plot linechart r-highcharter
1个回答
0
投票

一种选择是将颜色向量传递给

hc_colors
,其中颜色是根据类别的顺序设置的:

library(highcharter)

colors <- df |>
  dplyr::distinct(name, COLOR) |>
  dplyr::arrange(name) |>
  dplyr::pull(COLOR)

hchart(df,
  "line",
  hcaes(x = row_labels, y = y, group = name),
  dataLabels = list(enabled = TRUE)
) %>%
  hc_colors(color = colors)

© www.soinside.com 2019 - 2024. All rights reserved.