You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用ggplot2调整y轴刻度,绘制0.9-1范围等距的柱状图?

解决ggplot2柱状图Y轴非等距问题

核心修复:将字符型数据转为数值型

Y轴非等距的根源是col3为字符类型,ggplot会自动将其识别为离散变量。必须先把该列转换为数值型:

# 转换col3为数值型
data$col3 <- as.numeric(data$col3)

设置Y轴范围与等距刻度

数据类型转换完成后,使用scale_y_continuous()指定Y轴范围(0.9-1),并配置等距刻度。可根据需求调整刻度间隔:

完整修改代码

col1 <- c('SO','MO','EO','YO','RO')
col2 <- c('J','J','J','J','J',
          'F','F','F','F','F',
          'M','M','M','M','M',
          'G','G','G','G','G')
col3 <- c('0.92966','0.94522','0.93311','0.995222',
          '0.966463','0.975725','0.976464','0.9635321',
          '0.980223','0.9124456','0.991678','0.973444',
          '0.910789','0.922','0.993444','0.956555',
          '0.923132','0.987222','0.900556','0.932228')
data <- data.frame(col1,col2,col3)

# 关键步骤:转换col3为数值型
data$col3 <- as.numeric(data$col3)

library(ggplot2)
ggplot(data, aes(x=col1, y=col3,fill=col2)) + 
  labs(x = "col1", y = "col3")+
  geom_bar(stat = 'identity', position=position_dodge())+
  scale_fill_discrete(breaks = c("J","F","M",'G'))+
  theme(legend.title = element_text( size=12, face="bold"),
        legend.text = element_text(size =12),
        axis.title.x = element_text(size = 13, face="bold"),
        axis.title.y = element_text(size = 13, face="bold"),
        axis.text.x = element_text(size = 12, face="bold"),
        axis.text.y = element_text(size = 12,face="bold"))+
  scale_x_discrete(limits = c('SO','MO','EO','YO','RO'))+
  # 配置Y轴范围和等距刻度
  scale_y_continuous(
    limits = c(0.9, 1),
    breaks = seq(0.9, 1, by = 0.02) # 按0.02间隔生成刻度,可自行修改间隔值
  )

补充说明

  • 若不需要密集刻度,可手动指定刻度点,比如breaks = c(0.9, 0.95, 1)
  • 必须先转换数据类型,否则连续轴设置不会生效

内容的提问来源于stack exchange,提问作者TUSTLGC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 01:40:26