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

如何在R语言中为散点图和直方图设置y轴整数刻度值

问题解决:分类变量绘图轴刻度异常及函数误用问题

核心错误原因

你用的scale_y_continuous(breaks=pretty_breaks())是ggplot2包专属的绘图语法,但你的代码用的是基础R的plot()和hist()函数,两者语法不兼容,所以会报错。此外,你的Class列是0/1的分类变量,但你把它当成连续变量处理,导致轴出现不必要的小数刻度。


针对散点图的修正方案

把Class转为因子类型,让绘图系统识别它是分类变量,同时手动指定y轴刻度只显示0和1:

options(scipen = 999)

pdf("visualization.pdf")
library(tidyverse)
dataset <- read.csv("creditcard.csv")

# 将Class转为因子,明确是分类变量
dataset$Class <- as.factor(dataset$Class)

# 散点图绘制
plot(dataset$Amount, dataset$Class,
     main = "交易金额与信用卡欺诈的相关性",
     xlab = "交易金额", ylab = "欺诈标记(0=正常,1=欺诈)",
     pch = 19, frame = T
)
# 拟合回归直线(因变量为因子时lm会自动适配逻辑回归逻辑,如需线性回归可保留数值型)
m <- lm(as.numeric(Class) ~ Amount, data = dataset)
abline(m, col = "green")

如果需要精准控制y轴刻度,可添加自定义轴设置:

plot(dataset$Amount, dataset$Class,
     main = "交易金额与信用卡欺诈的相关性",
     xlab = "交易金额", ylab = "欺诈标记(0=正常,1=欺诈)",
     yaxt = "n", # 先隐藏默认y轴
     pch = 19, frame = T
)
# 手动添加y轴刻度
axis(2, at = c(0,1), labels = c("0", "1"))
m <- lm(as.numeric(Class) ~ Amount, data = dataset)
abline(m, col = "green")

针对直方图的修正方案

Class是分类变量,用直方图不合适,建议改用条形图展示两类的数量分布:

# 统计两类的频数
class_counts <- table(dataset$Class)
# 绘制条形图
barplot(class_counts,
        main = "信用卡欺诈与正常交易数量分布",
        xlab = "欺诈标记(0=正常,1=欺诈)",
        ylab = "交易数量",
        col = "red"
)

如果坚持要用直方图(不推荐),可手动设置x轴刻度为0和1:

h <- hist(as.numeric(dataset$Class),
          breaks = c(-0.5, 0.5, 1.5), # 让直方图刚好框住0和1两个值
          main = "信用卡欺诈标记分布",
          xlab = "欺诈标记(0=正常,1=欺诈)",
          ylab = "交易数量",
          col = "red"
)
# 手动设置x轴刻度
axis(1, at = c(0,1), labels = c("0", "1"))

额外说明

如果想使用scale_y_continuous()这类语法,需要切换到ggplot2绘图体系,比如散点图可以这样写:

ggplot(dataset, aes(x = Amount, y = Class)) +
  geom_point() +
  geom_smooth(method = "lm", color = "green") +
  scale_y_discrete(breaks = c("0", "1")) + # 分类变量用scale_y_discrete而非continuous
  labs(title = "交易金额与信用卡欺诈的相关性",
       x = "交易金额", y = "欺诈标记(0=正常,1=欺诈)")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 13:30:59