如何在Hmisc包的plot.princomp()中绘制更多主成分?
解决princomp碎石图显示超过默认10个主成分的问题
方法1:调用base R原生绘图方法
加载Hmisc后,默认的plot.princomp会被Hmisc的自定义方法覆盖,导致原生的k参数无法被识别。直接调用stats包的原生方法即可解决:
stats::plot.princomp(prin.raw, k = 13, type = 'lines', main = ' ', ylim = c(0,3))
此方法会正确识别k参数,显示你指定数量的主成分。
方法2:手动提取特征值自定义绘图
如果需要更灵活的绘图控制,可以直接从princomp对象中提取特征值(特征值等于标准差的平方),手动绘制碎石图:
# 提取所有主成分的特征值 eigen_values <- prin.raw$sdev^2 # 指定要显示的主成分数量 n_components <- 13 selected_eigen <- eigen_values[1:n_components] # 绘制折线型碎石图 plot(1:n_components, selected_eigen, type = 'l', xlab = '主成分', ylab = '特征值', main = '', ylim = c(0, 3)) # 可选:添加数据点增强可读性 points(1:n_components, selected_eigen, pch = 16)
这种方式完全自定义,你可以根据需求调整绘图样式、显示的主成分数量,不受包方法的限制。
问题原因说明
Hmisc包重载了plot.princomp方法,该方法不支持原生plot.princomp的k参数,因此直接使用plot(prin.raw, k=13)会抛出参数无效的警告。调用stats包的原生方法或手动绘图均可解决此问题。
内容的提问来源于stack exchange,提问作者llewmills
相关产品推荐
相关产品推荐

