使用R语言ggforce绘制平行集图时X轴名称丢失的解决问询
解决ggforce平行集图X轴名称缺失问题
问题出在gather_set_data函数处理后,x变量是数值型索引(1-4),未关联原始数据的分类名称。可通过以下两种方式修复:
方法一:将x转换为带标签的因子
在数据处理阶段把x转为因子,指定对应分类名称:
library(ggforce) library(reshape2) library(ggplot2) data <- reshape2::melt(Titanic) data <- gather_set_data(data, 1:4) # 给x添加对应的分类标签 data$x <- factor(data$x, levels = 1:4, labels = c("Class", "Sex", "Age", "Survived")) ggplot(data, aes(x, id = id, split = y, value = value)) + geom_parallel_sets(aes(fill = Sex), alpha = 0.3, axis.width = 0.1) + geom_parallel_sets_axes(axis.width = 0.1) + geom_parallel_sets_labels(colour = 'white')
方法二:使用scale_x_discrete手动设置轴标签
在ggplot图层中添加scale_x_discrete,指定刻度和对应标签:
library(ggforce) library(reshape2) library(ggplot2) data <- reshape2::melt(Titanic) data <- gather_set_data(data, 1:4) ggplot(data, aes(x, id = id, split = y, value = value)) + geom_parallel_sets(aes(fill = Sex), alpha = 0.3, axis.width = 0.1) + geom_parallel_sets_axes(axis.width = 0.1) + geom_parallel_sets_labels(colour = 'white') + # 设置X轴的刻度和对应标签 scale_x_discrete(breaks = 1:4, labels = c("Class", "Sex", "Age", "Survived"))
两种方法都能让X轴显示原始分类名称(Class、Sex、Age、Survived),与官方示例效果一致。
内容的提问来源于stack exchange,提问作者Patrik Ulvdal
相关产品推荐
相关产品推荐

