在ggplot2密度图(geom_density)中,我有以下y轴标签
将它们更改为
之类的正确方法是什么可能会在标签上自动添加“10 ^ 3 x密度”。在过去,我只是将我的数据相乘并手动更改标签,但在这种情况下,密度图为我生成了y轴数据。
我知道我可以写scale_y_continuous(trans="log10")
之类的东西,但是没有找到任何方法来做一个简单的乘法常量,或者定义一个自定义变换。
答案 0 :(得分:25)
对于ggplot2版本0.90,此答案已过时。现在,以这种方式指定相同的格式(更加整齐):
scale_y_continuous(labels=function(x)x*1000)
或者如果您想多次使用相同的标签方案:
formatter1000 <- function(){
function(x)x*1000
}
scale_y_continuous(labels=formatter1000())
请注意,如果使用xlim
和ylim
函数指定轴限制,则可能无效。相反,请使用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)