对于期刊提交,我被告知我的数字不能有前导零。例如,采取此图:
df <- data.frame(x = -10:10, y = (-10:10)/10)
ggplot(df, aes(x, y))+
geom_point()
y轴具有标签
-1.0 -0.5 0.0 0.5 1.0
我需要制作这些标签:
-1.0 -.5 0 .5 1.0
我想我必须使用scale包中的format_format()
,但我在format
,formatC
和sprintf
的各种文档中都没有看到任何内容这将产生必要的标签。
答案 0 :(得分:5)
您可以编写自己的功能:
no_zero <- function(x) {
y <- sprintf('%.1f',x)
y[x > 0 & x < 1] <- sprintf('.%s',x[x > 0 & x < 1]*10)
y[x == 0] <- '0'
y[x > -1 & x < 0] <- sprintf('-.%s',x[x > -1 & x < 0]*-10)
y
}
然后绘图:
ggplot(df, aes(x, y))+
geom_point() +
scale_y_continuous(labels = no_zero)
给出了期望的结果:
答案 1 :(得分:4)
我有一个GitHub包,numform可以执行此操作(我根据此问题添加了对f_num
函数的零控制权):
library(devtools)
library(ggplot2)
install_github('trinker/numform')
df <- data.frame(x = -10:10, y = (-10:10)/10)
ggplot(df, aes(x, y))+
geom_point() +
scale_y_continuous(labels = numform::ff_num(zero = 0))
答案 2 :(得分:2)