ggplot2通过常数因子转换轴

时间:2011-01-10 10:53:36

标签: r ggplot2

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

  • 0.000
  • 0.005
  • 0.010
  • 0.015
  • 0.020

将它们更改为

之类的正确方法是什么
  • 0
  • 5
  • 10
  • 15
  • 20

可能会在标签上自动添加“10 ^ 3 x密度”。在过去,我只是将我的数据相乘并手动更改标签,但在这种情况下,密度图为我生成了y轴数据。

我知道我可以写scale_y_continuous(trans="log10")之类的东西,但是没有找到任何方法来做一个简单的乘法常量,或者定义一个自定义变换。

2 个答案:

答案 0 :(得分:25)

对于ggplot2版本0.90,此答案已过时。现在,以这种方式指定相同的格式(更加整齐):

scale_y_continuous(labels=function(x)x*1000)

或者如果您想多次使用相同的标签方案:

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

scale_y_continuous(labels=formatter1000())

请注意,如果使用xlimylim函数指定轴限制,则可能无效。相反,请使用scale_y_continuous(..., limits=c(0, 1))规范。

scales包中还有一堆内置格式,包括逗号格式,百分比格式,美元格式和科学记数法格式。有关详细信息,请参阅其documentation

希望帮助那里的人,因为这种变化肯定让我很困惑!

答案 1 :(得分:14)

您可以使用之前定义的以下函数添加scale_y_continuous(formatter='formatter1000')

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

请注意,上述答案是在一年半之前使用之前的ggplot版本。使用ggplot的最新版本(0.9),上面的示例无效,请尝试类似:scale_y_continuous(labels = formatter1000)