在ggplot R中强制使用1e3而不是1000格式

Phi*_*son 3 r ggplot2

我对y格式化范围有些麻烦.当我scale_y_log10()在我的情节中使用时,它决定使用比例为0.1,10,1000的方法.我真的需要它显示为1e-1,1e1,1e3. math_format没有我需要知道的格式,帮助页面没有帮助.

我会回答任何问题.

Sim*_*lon 8

问题是R使用一种不太了解的惩罚机制来决定是否以正常或科学记数法打印.这是由决定的options( scipen ).

该值表示惩罚R适用于以科学计数法与固定点打印所需的字符数,因此options(scipen = 3)意味着R将打印所需的字符数加3表示1e2并将其与字符数进行比较需要打印等值的固定点并打印具有较少字符数的数字(因此在这种情况下1e2= 3个字符,+ 3惩罚= 6,而100等于3个字符因此100被打印.要修复你的例子,只需设置options(scipen = -10)为总是有利于打印固定点上的科学记数法.所以(使用@ PeterB的例子)你可以使用scipen哪个应该让你不用担心手动中断设置......

options(scipen = -10)
ggplot(data=subset(movies, votes > 1000)) +
  aes(x = rating, y = votes / 10000) +
  geom_point()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述