如何在fviz_pca_var标签中添加下标及反转y轴?
解决fviz_pca_var可视化的两个问题:下标显示与y轴反转
一、让变量标签的下标正常显示
fviz_pca_var默认不会解析文本中的下标语法,要让P[1]、C3[2]这类下标正常显示,需要将变量名转换为R的plotmath表达式格式,有两种实用方法:
方法1:提前修改数据框列名
直接把列名替换为expression对象,fviz_pca_var会自动解析下标格式:
colnames(df) <- expression(P[1], Z[2], C3[1], C3[2]) pca <- princomp(df, scores = TRUE)
方法2:可视化时指定标签
如果不想改动原数据框,可在fviz_pca_var中直接传入带plotmath语法的标签参数:
fviz_pca_var(pca, title = "", repel = TRUE, ggtheme = theme_bw(), labels = expression(P[1], Z[2], C3[1], C3[2]))
两种方法都能让标签中的下标以数学格式正确显示。
二、简便反转y轴数值(保持-1在左侧)
你当前用scale_x_reverse()实现了x轴反转(-1在左侧),要反转y轴,直接使用scale_y_reverse()即可。如果设置了y轴范围,需要将limits的顺序调换(因为反转后轴的上下限会互换):
fviz_pca_var(pca, title = "", repel = TRUE, ggtheme = theme_bw(), labels = expression(P[1], Z[2], C3[1], C3[2])) + scale_x_reverse() + scale_y_reverse(limits = c(0.6, -0.2)) # 原limits为c(-0.2,0.6),反转后顺序调换
若不需要固定范围,直接用scale_y_reverse()就能自动反转y轴数值,同时保留x轴-1在左侧的布局。
完整示例代码
df <- structure(list(`P[1]` = c(-0.9, -1, -1.1, -1.2, -1.28, -1.35, -1.41, -1.45, -1.47, -1.47, -1.45, -1.41, -1.35, -1.27, -1.17, -1.06, -0.93, -0.79, -0.64, -0.49, -0.33, -0.17, -0.01, 0.14, 0.29, 0.44, 0.57, 0.68, 0.78, 0.86, 0.92, 0.97, 1, 1.02, 1.03, 1.03, 1.02, 1.02, 1.01, 1, 1, 0.99, 0.98, 0.96, 0.94, 0.92, 0.89, 0.86, 0.82, 0.79, 0.75), `Z[2]` = c(0.56, 0.5, 0.44, 0.38, 0.32, 0.27, 0.22, 0.19, 0.18, 0.18, 0.22, 0.27, 0.36, 0.47, 0.6, 0.74, 0.88, 1.02, 1.15, 1.25, 1.32, 1.35, 1.33, 1.25, 1.11, 0.91, 0.67, 0.38, 0.06, -0.27, -0.61, -0.93, -1.22, -1.46, -1.66, -1.79, -1.86, -1.87, -1.82, -1.72, -1.56, -1.37, -1.14, -0.89, -0.62, -0.34, -0.06, 0.23, 0.51, 0.8, 1.08), `C3[1]` = c(-0.16, -0.14, -0.12, -0.1, -0.25, -0.53, -0.29, -0.83, -0.69, -0.06, -0.98, -0.53, -0.8, 1.17, 0.64, 0.09, 0.61, 1.97, 0.84, 1.85, -0.98, -0.67, -0.82, -1, -0.47, -1.01, -0.79, -0.97, -1.33, -1.48, -1.59, -1.71, -1.8, -1.88, -1.94, -2.09, -1.96, -1.96, -1.95, -1.97, -1.88, -1.82, -1.63, -1.52, -1.54, -1.4, -1.42, -1.29, -1.19, -0.83, -0.69), `C3[2]` = c(0.77, 0.79, 0.81, 0.82, 0.79, 0.71, 0.78, 0.63, 0.67, 0.86, 0.59, -0.34, 0.65, 1.23, 1.53, 1.7, 0.99, 2.07, 1.71, 3.01, -0.53, -0.53, 0.54, 0.43, 0.52, -0.59, 0.25, 0.1, -0.5, -0.57, -0.54, -0.57, -0.55, -0.55, -0.56, -0.83, -0.46, -0.46, -0.46, -0.61, -0.49, -0.51, -0.2, -0.13, -0.39, -0.26, -0.54, -0.44, -0.44, 0.22, 0.34)), row.names = c(NA, -51L), class = c("tbl_df", "tbl", "data.frame")) # 修改列名为带下标表达式 colnames(df) <- expression(P[1], Z[2], C3[1], C3[2]) pca <- princomp(df, scores = TRUE) # 可视化:下标正常显示+双轴反转 fviz_pca_var(pca, title = "", repel = TRUE, ggtheme = theme_bw()) + scale_x_reverse() + scale_y_reverse(limits = c(0.6, -0.2))
内容的提问来源于stack exchange,提问作者tnt
相关产品推荐
相关产品推荐

