在以下情节中:
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")
答案 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)