scales::percent
has an accuracy
argument that you can modify. This should give you what you want:
ggplot(df, aes(x, y)) +
geom_point(
colour="red",
size=5
) +
labs(x="X", y="Y") +
xlim(-1,1) +
ylim(-1,1) +
scale_x_continuous(labels = function(x) scales::percent(x, accuracy = 1)) +
scale_y_continuous(labels = function(x) scales::percent(x, accuracy = 1))