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

Radar Chart线条扭曲呈锯齿状,如何优化显示效果?

解决R语言雷达图线条锯齿状扭曲问题

问题描述

使用R语言的fmsb包绘制雷达图时,彩色线条(如左侧深蓝色线条)呈现锯齿状扭曲,而非平滑曲线,需改进该问题。

数据与原代码

样本数据

HerbizideDieselEnergieverbrauchTHG.EmissionenBodenabtragRegenwürmer_AbnahmeInsekte_abnahmeTox_AquaTox_terr
011110000
00.680.680.6910000
0.440.540.680.810.69100.420.42
10.140.70.410011

原数据结构与代码

# 数据结构
structure(list(Herbizide = c(1, 0, 0, 0, 0.44, 1), Diesel = c(1, 
0, 1, 0.68, 0.54, 0.14), Energieverbrauch = c(1, 0, 1, 0.68, 
0.81, 0.7), THG.Emissionen = c(1, 0, 1, 0.69, 0.69, 0.4), Bodenabtrag = c(1, 
0, 1, 1, 1, 1), Regenwürmer_Abnahme = c(1, 0, 0, 0, 0, 0), Insekte_Abnahme = c(1, 
0, 0, 0, 0, 0), Tox_Aqua = c(1, 0, 0, 0, 0.42, 1), Tox_Terr = c(1, 
0, 0, 0, 0.42, 1)), row.names = c("1", "2", "3MH_2HH", "1HA_2MH_1HH", 
"3BS_2MH", "3S"), class = "data.frame")

# 原绘图代码
library(fmsb)
library(scales)
umw_ris<- rbind(rep(1,8) , rep(0,8) , umw_old)
coul2<-c("blue2", "steelblue2","springgreen4","springgreen2")
radarchart(umw_ris, axistype=1, 
          #custom polygon
          pcol=coul2, plwd=4 , plty=1,
          #custom the grid
          cglcol="grey", cglty=3, axislabcol="gray20", 
          caxislabels=seq(0,1,5), 
                     calcex=0.8,cglwd=0.4,vlcex=1)
dev.off() 

原绘图效果

雷达图显示效果

改进方案

1. 修复核心数据维度错误

原代码中rbind(rep(1,8), rep(0,8), umw_old)的rep(1,8)和rep(0,8)仅生成8个值,但数据包含9个指标列,维度不匹配导致数据错位,这是线条锯齿的主要原因。修正为:

umw_ris <- rbind(rep(1,9), rep(0,9), umw_old)

2. 修正轴标签参数

caxislabels=seq(0,1,5)的步长设置错误,会导致轴标签仅显示0,修正为合理的步长:

caxislabels=seq(0,1,0.2)

3. 修正后的完整代码

library(fmsb)
library(scales)

# 假设umw_old是你的原始数据框
umw_ris <- rbind(rep(1,9), rep(0,9), umw_old)
coul2 <- c("blue2", "steelblue2","springgreen4","springgreen2")

radarchart(umw_ris, axistype=1, 
          # 自定义多边形线条
          pcol=coul2, plwd=4, plty=1,
          # 自定义网格
          cglcol="grey", cglty=3, axislabcol="gray20", 
          caxislabels=seq(0,1,0.2), 
          calcex=0.8, cglwd=0.4, vlcex=1)

4. 进阶:绘制平滑曲线(使用ggplot2)

如果需要更平滑的雷达图曲线,可使用ggplot2结合ggspider包:

library(ggplot2)
library(ggspider)
library(tidyr)

# 转换数据为长格式
umw_long <- pivot_longer(umw_old, cols = everything(), 
                                names_to = "Indicator", values_to = "Value")

# 绘制平滑雷达图
ggplot(umw_long, aes(x = Indicator, y = Value, group = name, color = name)) +
  geom_spider(linetype = 1, size = 1.5, smooth = TRUE) +
  geom_point(size = 3) +
  scale_color_manual(values = coul2) +
  coord_polar() +
  theme_minimal() +
  theme(axis.text.x = element_text(size = 10))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 13:28:09