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

Highchart水平条形图图例颜色显示错误问题求助

问题解决方法

问题根源

你代码里同时在hcaes()中指定了color和group参数,这会导致Highcharts的颜色映射逻辑冲突,进而出现图例配色与条形颜色不匹配的问题。另外原代码未配置水平条形图相关选项,默认生成的是垂直条形图。

修正步骤

  1. 移除冲突的color参数:只保留group = Language,让Highcharts自动根据分组分配颜色,确保图例与条形颜色一一对应。
  2. 配置水平条形图:
    • 在hcaes()中交换x和y的映射,将课程名course_code放到y轴,完成率completion_rate放到x轴
    • 添加hc_plotOptions(bar = list(horizontal = TRUE))开启水平条形模式
  3. 可选:自定义配色:如果需要固定分组的颜色,使用hc_colors()传入对应颜色值,颜色顺序要和Language的唯一类别顺序一致(可通过unique(df$Language)查看类别顺序)。

完整修正代码

library(highcharter)
library(tidyverse)

# 读入数据
df <- read_csv("completion_rates_26_Aug.csv")

df %>% 
  hchart("bar", hcaes(y = course_code, x = completion_rate, group = Language)) %>% 
  hc_plotOptions(bar = list(horizontal = TRUE)) %>%
  hc_colors(c("#FF6B6B", "#4ECDC4", "#45B7D1")) %>% # 可根据语言分组调整颜色
  hc_add_theme(hc_theme_google()) %>% 
  hc_tooltip(pointFormat = "<b>完成率: </b> {point.completion_rate}") %>% 
  hc_title(text = "课程完成率", style = list(fontSize = "15px", fontWeight = "bold")) %>% 
  hc_yAxis(title = list(text = "课程")) %>%
  hc_xAxis(title = list(text = "完成率"))

补充说明

  • 不需要自定义颜色的话,直接删掉hc_colors()这行即可,Highcharts会使用主题默认的分组配色
  • 确保df中的Language是字符型或因子型变量,这样分组逻辑才能正常运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 04:36:13