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

使用fviz_eig自定义百分比标签字体时出错,求解决方案

解决fviz_eig自定义方差百分比标签的错误问题

问题根源

你当前代码的核心问题有两个:

  • 混用FactoMineR::PCA和prcomp的结果生成标签,额外计算没必要,且geom_text未指定坐标映射,导致标签位置与图表不匹配。
  • 字体名称存在跨系统兼容性问题(比如macOS中"Times New Roman"通常显示为"Times")。

修正后的代码

直接从FactoMineR的PCA结果中提取方差解释数据,明确标签的坐标映射,同时适配不同系统的字体:

library(factoextra)
library(FactoMineR)

# 执行PCA分析(确保stress.m是你的数据集)
stress.m_pca <- PCA(stress.m, scale.unit = TRUE, ncp = 8, graph = FALSE)

# 提取各主成分的方差解释百分比,保留两位小数
var_explained <- round(stress.m_pca$eig[, 2], 2)
percent_labels <- paste(var_explained, "%", sep = "")

# 绘制方差解释图并自定义标签
fviz_eig(stress.m_pca, addlabel = FALSE, ncp = 8) +
  geom_text(
    # 明确绑定x(主成分序号)和y(方差百分比)坐标
    aes(x = seq_along(var_explained), y = var_explained),
    label = percent_labels,
    vjust = -0.6,
    hjust = 0.3,
    size = 8,
    # 根据系统自动适配字体名称
    family = ifelse(Sys.info()["sysname"] == "Darwin", "Times", "Times New Roman")
  )

额外排查建议

如果仍存在字体显示错误,可先查看系统已安装的字体列表,替换为存在的字体名称:

# 加载extrafont包查看可用字体
library(extrafont)
fonts()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 13:04:54