You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为highcharter柱状图设置条件颜色与填充图案?

解决方案

要实现最后一列(2020年)图案填充、其余列纯色的堆叠柱状图,需要从数据格式调整和图案填充模块正确配置两方面入手,以下是修正后的完整代码:

library(tidyverse)
library(highcharter)

set.seed(123) # 设置随机种子保证结果可复现
df <- data.frame(
  year = seq(2001, 2020, by=1),
  newA = sample(1:15, size=20, replace=T),
  newB = sample(1:15, size=20, replace=T)
)

# 处理New A系列数据:前19个点纯色,最后1个点图案填充
data_newA <- map2(df$newA, df$year, function(y, yr) {
  if (yr != 2020) {
    list(y = y, color = "#2f7ed8") # 自定义纯色
  } else {
    list(
      y = y,
      color = list(
        pattern = list(
          path = "M 0 0 L 10 10 M 9 -1 L 11 1 M -1 9 L 1 11",
          width = 10,
          height = 10,
          color = "#2f7ed8" # 图案线条颜色与纯色一致
        )
      )
    )
  }
})

# 处理New B系列数据:同理设置样式
data_newB <- map2(df$newB, df$year, function(y, yr) {
  if (yr != 2020) {
    list(y = y, color = "#0d233a") # 自定义纯色
  } else {
    list(
      y = y,
      color = list(
        pattern = list(
          path = "M 0 5 L 5 0 L 10 5 L 5 10 Z",
          width = 10,
          height = 10,
          color = "#0d233a"
        )
      )
    )
  }
})

highchart() %>%
  hc_chart(type = "column") %>%
  hc_add_dependency("modules/pattern-fill.js") %>% # 必须加载图案填充模块
  hc_add_series(
    name = "New A",
    data = data_newA,
    stack = "new",
    showInLegend = F
  ) %>%
  hc_add_series(
    name = "New B",
    data = data_newB,
    stack = "new",
    showInLegend = F
  ) %>%
  hc_plotOptions(column = list(stacking = "normal")) %>%
  hc_xAxis(categories = df$year, title = list(text = ""))

关键说明:

  1. 数据格式转换:
    不再直接传递数值向量,而是将每个数据点封装为包含y(数值)和color(样式)的列表,这样才能单独控制最后一个点的填充方式。

  2. 图案填充配置:

    • 必须通过hc_add_dependency("modules/pattern-fill.js")加载模块,否则图案属性会被忽略。
    • 图案的path参数用SVG路径定义形状:
      • 第一个图案是交叉线(M 0 0 L 10 10 M 9 -1 L 11 1 M -1 9 L 1 11)
      • 第二个图案是菱形(M 0 5 L 5 0 L 10 5 L 5 10 Z)
    • 可调整width/height控制图案密度,color设置图案线条颜色与纯色保持一致,视觉更统一。
  3. 自定义纯色:
    普通数据点通过color = "#xxxxxx"直接设置自定义纯色,替代默认配色。

内容的提问来源于stack exchange,提问作者DanB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 09:34:53