R语言ggplot2绘制双年份小提琴图X轴出现多余刻度问题求助
你遇到的X轴多余刻度问题,核心原因是数据集中的Year列为数值类型,ggplot默认将数值型映射变量识别为连续坐标轴,会自动按固定间隔生成刻度,哪怕你的数据仅包含2017、2018两个离散年份值。
解决方法
以下两个方案二选一即可:
- 方法1(推荐):将Year转为分类变量
直接修改aes中的X轴映射,把Year改为factor(Year),此时X轴会转为分类轴,仅展示数据中存在的两个年份刻度,核心修改点如下:
ggplot(df, aes(factor(Year), TF)) + geom_violin(aes(fill = factor(Year))) + # 其余原有代码无需调整
你已经在labs中设置了x=NULL,所以无需额外处理分类轴的默认标题。
- 方法2:保留数值型X轴,手动指定刻度
如果你需要保留X轴的数值属性,只需新增一行scale_x_continuous配置,手动指定仅显示2017、2018两个刻度即可,完整可运行代码如下:
sum.data <- ddply(df, .(Field), summarize, mean.TF = mean(TF, na.rm = T)) (violin <- ggplot(df, aes(Year, TF)) + geom_violin(aes(fill = factor(Year))) + stat_summary(fun.y=mean, geom ="point", shape=18, size=2) + labs(x= NULL, y= "Total FAME") + facet_grid(Field ~.) + geom_hline(data = sum.data, aes(yintercept = mean.TF), linetype = 3) + scale_y_continuous(breaks = seq(0,300,50)) + # 新增此行手动指定X轴刻度 scale_x_continuous(breaks = c(2017, 2018)) + theme.custom)
内容的提问来源于stack exchange,提问作者Pablo Tovar
相关产品推荐
相关产品推荐

