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

如何在R语言中使用Highcharter绘制极坐标堆叠图

实现目标极坐标堆叠条形图的正确方法

你提供的数据框为宽格式,而highcharter绘制堆叠极坐标图需要长格式(tidy)数据,同时现有代码的系列添加方式不符合要求,导致无法正常渲染。以下是完整的解决步骤:

1. 数据格式转换

先将宽格式数据转换为长格式,便于highcharter识别不同的类别系列:

# 加载必要依赖包
library(highcharter)
library(tidyr)
library(dplyr)

# 你的原始数据框
df <- structure(list(row_labels = c("La ubicación actual de los contenedores de la ciudad", 
"La falta de limpieza de los solares", "La velocidad a la que circulan los vehículos en la ciudad"
), `Nada problemático` = c(45.1242829827916, 17.3996175908222, 
26.5774378585086), Poco = c(24.8565965583174, 21.7973231357553, 
33.4608030592734), Bastante = c(19.3116634799235, 30.7839388145315, 
23.7093690248566), `Muy problemático` = c(9.75143403441682, 
26.0038240917782, 14.34034416826), `NS/NC` = c(0.956022944550669, 
4.01529636711281, 1.91204588910134)), row.names = c("#Total", 
"#Total1", "#Total2"), class = c("etable", "data.frame"))

# 转换为长格式数据
df_long <- df %>%
  pivot_longer(cols = -row_labels, names_to = "category", values_to = "percentage")

2. 绘制极坐标堆叠条形图

调整highcharter代码,开启堆叠模式、配置极坐标参数,并正确映射长格式数据:

highchart() %>%
  # 设置图表类型为极坐标条形图
  hc_chart(type = "bar", polar = TRUE) %>%
  # X轴使用问题类别,优化刻度显示
  hc_xAxis(categories = df$row_labels, tickmarkPlacement = "on", lineWidth = 0) %>%
  # Y轴设置百分比范围,格式化标签
  hc_yAxis(min = 0, max = 100, labels = list(format = "{value}%")) %>%
  # 映射长格式数据,按category分组生成系列
  hc_add_series_df(
    df_long,
    hcaes(x = row_labels, y = percentage, group = category),
    dataLabels = list(enabled = TRUE, format = "{y:.1f}%")
  ) %>%
  # 开启堆叠模式,关闭动画
  hc_plotOptions(
    bar = list(
      stacking = "normal",
      animation = FALSE
    )
  ) %>%
  # 设置极坐标面板结束角度,匹配目标图样式
  hc_pane(endAngle = 270) %>%
  # 启用导出功能和版权信息
  hc_exporting(enabled = TRUE) %>%
  hc_credits(enabled = TRUE) %>%
  # 添加图表标题(可选)
  hc_title(text = "问题严重程度分布")

关键要点说明

  • 数据格式适配:highcharter的hc_add_series_df需要长格式数据,每个评价类别对应一个独立系列,才能实现堆叠效果。
  • 堆叠模式开启:通过plotOptions.bar.stacking = "normal"设置堆叠,让同一X轴类别下的百分比数据叠加显示。
  • 极坐标配置:polar = TRUE启用极坐标布局,hc_pane(endAngle = 270)限制图表角度为270度,与目标图视觉效果一致。

内容的提问来源于stack exchange,提问作者R USER MEMBER

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 18:52:02