ggplot2小提琴图设置Y轴范围与刻度间隔问题求助
解决ggplot2小提琴图Y轴范围与刻度问题
问题根源
ylim()会直接过滤超出范围的数据,导致小提琴图、箱线图、散点等图形元素被截断- 你之前的
scale_y_continuous未生效,主要是代码末尾的+bp属于无效语法,打断了绘图逻辑
修正后的完整代码
library(ggplot2) # 转换变量为因子类型 X21$`gggnnn` <- as.factor(X21$`gggnnn`) X21$`RTtype` <- as.factor(X21$`RTtype`) # 构建绘图对象 bp <- ggplot(data=X21,aes(x=RTtype,y=RT,group=RTtype))+ geom_violin(aes(colour=RTtype),outlier.alpha = 1)+ facet_grid(.~gggnnn) + labs(x="AM or PM", y='Reaction time /ms')+ geom_boxplot(width=0.1,colour="black",alpha=1,outlier.shape=4)+ ggtitle("AM and PM Reaction Time Distributions among Gamers and Non-gamers")+ geom_jitter(aes(colour=RTtype,shape=gggnnn))+ # 全局aes已定义x/y/group,无需重复 scale_y_continuous(breaks = seq(150, 900, by = 100))+ # 设置刻度间隔为100 coord_cartesian(ylim = c(150, 900)) # 仅调整Y轴显示范围,不截断数据 # 输出图形 bp
核心改动说明
coord_cartesian(ylim = c(150, 900)):只缩放绘图的显示窗口,不会删除超出范围的数据,确保小提琴图形状、箱线图异常值等元素完整保留,仅Y轴展示150-900区间scale_y_continuous(breaks = seq(150, 900, by = 100)):明确指定Y轴刻度点,间隔设为100,覆盖默认的250间隔- 移除
geom_jitter中重复的x=RTtype,y=RT,group=RTtype映射,简化代码(全局aes已定义这些参数) - 修复原代码末尾的
+bp语法错误,改为直接调用bp输出图形
内容的提问来源于stack exchange,提问作者Misha Park
相关产品推荐
相关产品推荐

