Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R ggplot2恒定因子轴变换_R_Ggplot2 - Fatal编程技术网

R ggplot2恒定因子轴变换

R ggplot2恒定因子轴变换,r,ggplot2,R,Ggplot2,在ggplot2密度图(geom_密度)中,我有以下y轴标签 0.000 0.005 0.010 0.015 0.020 正确的方法是什么 0 五, 十, 十五 二十 可能需要在标签上自动添加“10^3 x密度”。在过去,我只是将数据相乘并手动更改标签,但在本例中,y轴数据是由密度图为我生成的 我知道我可以写一些东西,比如scale\u y\u continuous(trans=“log10”),但是没有找到任何方法来做简单的乘法常量,或者定义自定义转换。您可以使用前面定义的以下函数添加

在ggplot2密度图(geom_密度)中,我有以下y轴标签

  • 0.000
  • 0.005
  • 0.010
  • 0.015
  • 0.020
正确的方法是什么

  • 0
  • 五,
  • 十,
  • 十五
  • 二十
可能需要在标签上自动添加“10^3 x密度”。在过去,我只是将数据相乘并手动更改标签,但在本例中,y轴数据是由密度图为我生成的


我知道我可以写一些东西,比如
scale\u y\u continuous(trans=“log10”)
,但是没有找到任何方法来做简单的乘法常量,或者定义自定义转换。

您可以使用前面定义的以下函数添加
scale\u y\u continuous(formatter='formatter1000')

formatter1000 <- function(x){ 
    x*1000 
}

formatter1000对于ggplot2版本0.90,此答案已过时。现在,同样的格式将通过以下方式指定(更加简洁):

scale_y_continuous(labels=function(x)x*1000)
或者,如果要多次使用相同的标签方案:

formatter1000 <- function(){
  function(x)x*1000
}

scale_y_continuous(labels=formatter1000())

formatter1000太完美了。你有没有遇到过关于格式化程序的好文档?@Pengin:不幸的是,我没有。ggplot中有一些硬编码的格式化程序,例如:逗号、科学、百分比、美元,但是你可以用上面的简单函数编写任何东西。基本上这就是它们的全部,但在下一个版本中,它们将被拆分成自己的包,希望有更多的文档。警告:这在
ggplot 0.9
中不起作用。更新版本见下面我的答案。
scale\u y\u continuous(labels=formatter1000)
注释对我有效。请注意,
labels'参数接受函数,而
formatter`选项显然将函数名作为文本字符串。谢谢。scales软件包的文档只是细节。scales软件包的作用是在本文中提供大量格式化函数,如
formatter1000
,要选择其中一个函数,您可以从函数名猜出它的作用。