使用radarchart绘制雷达图时数值显示异常问题求助
R语言雷达图数值位置偏移问题的解决方法
问题根源
你用的是fmsb包的radarchart函数,当前代码里的axistype=1会强制把坐标轴起始刻度设为0,但你的数据设定的最小值是4、最大值是16。这就导致图表刻度范围被拉到0-16,而你的观测值是基于4-16的区间,数值位置自然会被压缩偏移,出现和实际值不符的情况。另外你设置的caxislabels=seq(0,16,4)虽然刻度显示正确,但和数据的实际区间不匹配,进一步加剧了视觉误差。
修正方案
核心是让坐标轴范围匹配你设定的min/max(4-16),把axistype参数改为2:
axistype=2的逻辑是:坐标轴从数据框第二行的最小值开始,到第一行的最大值结束,刻度会自动对齐你的数据区间,观测值位置就能和实际数值完全对应。
完整修正代码
library(fmsb) # 你的原始数据 df <- structure(list(Acceptance = c(16, 4, 13), `Committed Action` = c(16, 4, 11), Diffusion = c(16, 4, 7), `Present Moment` = c(16, 4, 10), `Self as Context` = c(16, 4, 11), Values = c(16, 4, 12)), row.names = c(NA, -3L), class = c("tbl_df", "tbl", "data.frame")) # 修正后的雷达图绘制代码 radarchart(df, axistype=2, # 关键调整:匹配数据的min/max区间 # 自定义多边形样式 pcol=rgb(0.2,0.5,0.5,0.9), pfcol=rgb(0.2,0.5,0.5,0.5), plwd=4, # 自定义网格样式 cglcol="grey", cglty=1, axislabcol="grey", caxislabels=seq(4,16,4), # 刻度改为4-16,和数据一致 cglwd=0.8, # 自定义标签大小 vlcex=0.8 )
补充说明
调整后,雷达图的刻度会从4开始,每间隔4到16结束,你观测到的Diffusion=7、Values=12等数值会准确对应到图中的位置,不会再出现偏移问题。
内容的提问来源于stack exchange,提问作者Pss
相关产品推荐
相关产品推荐

