R:在ggplot中禁用科学符号

thtygnil  于 2023-04-27  发布在  其他
关注(0)|答案(1)|浏览(151)

我正在使用R编程语言。

我正在尝试禁用使用ggplot库生成的所有图的科学记数法。

通常,我使用以下命令禁用科学记数法:

options(scipen=999)

然而,上面的代码似乎并没有禁用科学计数法,例如下面的图(例如图例中):

g1 = ggplot() +
    geom_sf(data = st_trans,
            aes(fill = cut_number(min_distance, 9)),
            alpha = 0.8,
            colour = 'white',
            size = 0.3) +
    scale_fill_brewer(palette = "PuBu",
                      name = "Minimum Distance") +
    labs(x = NULL, y = NULL,
         title = "Minimum Distance",
         subtitle = "Source: Your Data",
         caption = "Your Caption") +
    theme(panel.background = element_blank(),
          line = element_blank()) +
    coord_sf(datum = NA) +
    scale_x_continuous(labels = scales::comma) +
    scale_y_continuous(labels = scales::comma)

有没有人知道是否有一些“主命令”可以在使用ggplot生成的所有图中禁用科学计数法?

谢谢!

ojsjcaue

ojsjcaue1#

经过一点挖掘,看起来问题出在cut_number()上,而不是ggplot。cut_number()函数是base::cut.default的 Package 器,它有一个'default'科学计数法(即它忽略你设置的任何scipen)。幸运的是,cut_number()接受一个“dig.lab”参数,所以你可以修改它以适应。
例如,将dig.lab设置为50(最大值)应该可以解决这个问题:

library(ggplot2)

options(scipen = 999)

df <- data.frame(x = seq(1, 100000, 10000),
                 y = seq(5, 500000, 50000))

ggplot(df, aes(x = x, y = cut_number(y, 4))) +
  geom_point()

ggplot(df, aes(x = x, y = cut_number(y, 4, dig.lab = 50))) +
  geom_point()

创建于2023-04-24带有reprex v2.0.2

相关问题