如何在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
相关产品推荐
相关产品推荐

