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

geom_bar+coord_polar绘图:添加标签与去除刻度问题求助

ggplot极坐标同心圆:标签添加与刻度线去除解决方案

问题描述

我尝试给用ggplot制作的同心圆(极坐标条形图)添加数据框C列的标签,用geom_text_repel未能成功;同时无法去除左上角的刻度线。当前代码如下:

df <- data.frame(C=c(rep("The macro-environment",4),rep("The industry",4),rep("Competitors",4),rep("The organisation",4)))

ggplot(df, aes(factor(1), fill = C)) +
  geom_bar(width = 1, colour = NA, show.legend = FALSE, alpha = .8) +    
  coord_polar() +
    labs(
        x = "",
        y = ""
    ) +
    scale_fill_manual(values = c("#289045", "#beddc7", "#d4dfe9", "#286291")) +
    theme(axis.ticks.x = element_blank(),
        axis.ticks.y = element_blank()) +
    theme_minimal()

当前图表为四层同心圆,但无对应分类标签,且左上角残留刻度线。

解决步骤

1. 彻底去除刻度线

原代码中theme_minimal()会覆盖之前设置的axis.ticks.x/y = element_blank(),需将自定义theme设置放在theme_minimal()之后,确保生效:

theme_minimal() +
theme(
  axis.ticks = element_blank(),  # 移除所有刻度线
  axis.text.x = element_blank(), # 可选:移除x轴文字
  axis.text.y = element_blank()  # 可选:移除y轴文字
)

2. 添加分类标签

直接用原始数据会重复绘制标签,需先汇总每个分类的位置,再用geom_text_repel添加:

library(ggplot2)
library(ggrepel)
library(dplyr)

# 处理数据:计算每个分类的中心位置
df_summary <- df %>%
  group_by(C) %>%
  summarise(count = n()) %>%
  mutate(y_pos = cumsum(count) - count/2)

# 绘图并添加标签
ggplot(df, aes(factor(1), fill = C)) +
  geom_bar(width = 1, colour = NA, show.legend = FALSE, alpha = .8) +    
  geom_text_repel(data = df_summary,
                  aes(x = factor(1), y = y_pos, label = C),
                  nudge_x = 0.5,  # 控制标签向外偏移的距离
                  size = 4) +
  coord_polar() +
  labs(x = "", y = "") +
  scale_fill_manual(values = c("#289045", "#beddc7", "#d4dfe9", "#286291")) +
  theme_minimal() +
  theme(
    axis.ticks = element_blank(),
    axis.text.x = element_blank(),
    axis.text.y = element_blank()
  )

说明

  • 标签定位:通过cumsum(count) - count/2计算每个同心圆的中心位置,确保标签居中显示。
  • nudge_x参数可根据图表大小调整,避免标签与图形重叠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 14:15:38