如何使用 ggplot 更改坐标轴上数字的格式?

我使用 R 和 ggplot 来绘制一些数据的散点图,除了 y 轴上的数字采用计算机风格的指数格式(即4e + 05,5e + 05等)外,一切都很好。这对我来说是不可接受的,所以我想让它显示为500,000,400,000,以此类推。获得适当的指数符号也是可以接受的。

该地块的代码如下:

p <- ggplot(valids, aes(x=Test, y=Values)) +
geom_point(position="jitter") +
facet_grid(. ~ Facet) +
scale_y_continuous(name="Fluorescent intensity/arbitrary units") +
scale_x_discrete(name="Test repeat") +
stat_summary(fun.ymin=median, fun.ymax=median, fun.y=median, geom="crossbar")

非常感谢你的帮助。

185993 次浏览
x <- rnorm(10) * 100000
y <- seq(0, 1, length = 10)
p <- qplot(x, y)
library(scales)
p + scale_x_continuous(labels = comma)

另一个选择是格式化您的轴勾标签与逗号是通过使用包 scales,并添加

 scale_y_continuous(name="Fluorescent intensity/arbitrary units", labels = comma)

到你的 ggplot 语句。

如果不想加载包,请使用:

scale_y_continuous(name="Fluorescent intensity/arbitrary units", labels = scales::comma)

我还找到了另一种在轴上给出正确的“ x10(上标)5”符号的方法。我把它贴在这里,希望对某些人有用。我从 给你那里得到了代码,所以我声称这不是我的功劳,而是 Brian Diggs 的功劳。

fancy_scientific <- function(l) {
# turn in to character string in scientific notation
l <- format(l, scientific = TRUE)
# quote the part before the exponent to keep all the digits
l <- gsub("^(.*)e", "'\\1'e", l)
# turn the 'e+' into plotmath format
l <- gsub("e", "%*%10^", l)
# return this as an expression
parse(text=l)
}

然后你可以把它当做

ggplot(data=df, aes(x=x, y=y)) +
geom_point() +
scale_y_continuous(labels=fancy_scientific)

我觉得 Jack Aidley 的建议很有用。

我想放弃另一个选择。假设你有一个很多小数的序列,你想确保轴标签写出完整的小数点(例如5e-05-> 0.0005) ,然后:

NotFancy <- function(l) {
l <- format(l, scientific = FALSE)
parse(text=l)
}


ggplot(data = data.frame(x = 1:100,
y = seq(from=0.00005,to = 0.0000000000001,length.out=100) + runif(n=100,-0.0000005,0.0000005)),
aes(x=x, y=y)) +
geom_point() +
scale_y_continuous(labels=NotFancy)

我在这里的游戏已经迟到了,但为了以防其他人想要一个简单的解决方案,我创建了一组函数,可以这样调用:

 ggplot + scale_x_continuous(labels = human_gbp)

它为 x 轴或 y 轴(或任何一般数字)提供了人类可读的数字。

你可以在这里找到函数: < a href = “ https://Github.com/1R151-1/R/blob/master/ggplot2 _ format ter.r”rel = “ norefrer”> Github Repo 只要将函数复制到脚本中,就可以调用它们了。