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

如何用R语言绘制包含160个条形的自定义环形条形图

环形条形图R实现方案

需求还原

  • 复现如下环形条形图,共160个条形
  • 支持自定义数据、自定义标签
  • 数据为160个小时对应的总增加值(单位:£)
    环形条形表示例

前置准备

首次使用先运行以下代码安装依赖包,后续使用不需要重复执行安装步骤:

# 安装依赖包
install.packages(c("ggplot2", "dplyr"))
# 加载依赖包
library(ggplot2)
library(dplyr)

完整可运行代码

代码默认生成160条模拟数据,你可以直接替换模拟数据部分为你的真实数据即可生成目标图表:

# ---------------------- 1. 数据准备(可替换为你的真实数据) ----------------------
# 你自己的数据需要保留三列即可:
# id:1-160的连续整数,用来给条形排序
# label:每个条形对应的自定义标签(比如小时标识)
# value:每个条形对应的总增加值数值
df <- data.frame(
  id = 1:160,
  label = paste0("小时", 1:160),
  value = runif(160, min = 10, max = 120) # 此处为模拟数值,替换为你的真实数值即可
)

# ---------------------- 2. 通用参数设置 ----------------------
# 中间空心区域大小,数值越大空心越大
hole_size <- 30
# 标签角度调整,避免文字倒置、重叠
angle_adjust <- 90 - 360 * (df$id - 0.5)/nrow(df)
df$label_angle <- ifelse(angle_adjust < -90, angle_adjust + 180, angle_adjust)
df$hjust <- ifelse(angle_adjust < -90, 1, 0)

# ---------------------- 3. 绘图 ----------------------
ggplot(df, aes(x = as.factor(id), y = value, fill = value)) +
  # 绘制条形
  geom_bar(stat = "identity", alpha = 0.8) +
  # 设置y轴范围,留出中间空心区域
  ylim(-hole_size, max(df$value)*1.15) +
  # 转为极坐标实现环形效果
  coord_polar(start = 0) +
  # 添加自定义标签
  geom_text(aes(label = label, y = value + 3, angle = label_angle, hjust = hjust), size = 2.3) +
  # 极简主题,去掉多余坐标轴、网格元素
  theme_minimal() +
  theme(
    axis.text = element_blank(),
    axis.title = element_blank(),
    panel.grid = element_blank(),
    legend.position = "bottom"
  ) +
  # 填充色设置,可自行修改颜色规则
  scale_fill_viridis_c(name = "总增加值(£)")

常见自定义调整方法

  • 调整环形大小:修改hole_size的数值即可
  • 调整标签大小:修改geom_text里的size参数,数值越大标签越大
  • 调整填充颜色:把scale_fill_viridis_c替换为其他配色即可,比如scale_fill_gradient(low = "lightblue", high = "darkblue")就可以改为蓝色渐变
  • 调整图例位置:修改legend.position参数,可选值为top/bottom/left/right/none(隐藏图例)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 00:24:03