首页 > 解决方案 > 如何避免在ggplot的Y轴上舍入小数

问题描述

在下图中:

在此处输入图像描述

Y 轴的值为 1.9999999925(对于 99 个步骤)和 1.9999999882(对于其余步骤)。如您所见,该图仅显示值 2,因为它将两个值的小数四舍五入为 2。如何避免这种情况并按原样显示这两个值?

这是我为生成绘图而编写的 R 脚本:

dataset <- readr::read_csv("/data.csv")
dataset <- dataset %>% melt(id.vars = c("Class"))
dataset <- transform(dataset, value = value)
YaxisTitle <- "Fitness"
class <- "Steamer"
p2_data <- dataset %>% filter(Class == class)
pp2 <- p2_data %>% ggplot(aes(x=factor(variable), y=value, group=Class, colour=Class)) + geom_line() + scale_x_discrete(breaks = seq(0, 1000, 100)) + labs(x = "Steps", y = YaxisTitle) + theme(legend.position="none")

标签: rggplot2

解决方案


如果我从如何更改 ggplot2 中轴标签上的小数位数?我确实设法更改标签。

关键是更改比例功能scaleFUN以允许原始帖子中超过 2 位小数到 9 位小数(或您需要的任何数字)。所以从"%.2f""%.9f"

df <- data.frame(Steps=1:1000, Fitness=c(rep(1.9999999925,99),rep(1.9999999882,901)))

library(ggplot2)

scaleFUN <- function(x) sprintf("%.9f", x)

ggplot(data=df,aes(x=Steps,y=Fitness)) +
  geom_line() +
  scale_y_continuous(labels=scaleFUN)

推荐阅读