如何避免在ggplot的Y轴上舍入小数

时间:2019-08-08 12:09:24

标签: r ggplot2

在以下情节中:

enter image description here

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")

1 个答案:

答案 0 :(得分:0)

如果我根据How do I change the number of decimal places on axis labels in 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)