Mar*_*nMM 6 formatting r ggplot2 axis-labels
制作图表时,ggplot2有很多合理的比例默认值,在尝试使用 来实现相同结果时需要额外的工作scales。
一个例子:
library("ggplot2")
ggplot(mtcars, aes(drat, mpg)) + geom_point()
Run Code Online (Sandbox Code Playgroud)
请注意,该图的小数点后面有一位数字。
但是,我住在荷兰,我们习惯使用逗号作为小数点。这很容易在以下时间内完成scale_x_continuous:
ggplot(mtcars, aes(drat, mpg)) +
geom_point() +
scale_x_continuous(labels = scales::label_number(big.mark = ".", decimal.mark = ","))
Run Code Online (Sandbox Code Playgroud)
这个解决方案让我烦恼的是,这也增加了位数:每个标签末尾有一个额外的、相当不必要的 0。当然,这也可以在scales::label_number(), 通过设置来解决,accuracy = 0.1但这需要迭代(绘图和重新绘图以设置更合理的位数)。
是否有一个选项可以修复 ggplot 使用的默认小数点?我正在寻找一个解决方案
ggplot(mtcars, aes(drat, mpg)) +
geom_point()
Run Code Online (Sandbox Code Playgroud)
返回相同的图
ggplot(mtcars, aes(drat, mpg)) +
geom_point() +
scale_x_continuous(labels = scales::label_number(
big.mark = ".",
decimal.mark = ",",
accuracy = 0.1
))
Run Code Online (Sandbox Code Playgroud)
关键似乎是format(从基础 R 开始)并scales::number使用不同的规则。我们可以恢复使用format...
myf <- function(x, ...) format(x, big.mark = ".", decimal.mark = ",", ...)
ggplot(mtcars, aes(drat, mpg)) +
geom_point() +
scale_x_continuous(labels = myf)
Run Code Online (Sandbox Code Playgroud)
如果你想让这些标签成为全局默认标签,我认为你可以这样做:
scale_x_continuous <- function(..., labels = myf) {
do.call(ggplot2::scale_x_continuous, c(list(...), labels = labels))
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
751 次 |
| 最近记录: |