ggplot2按常数因子进行轴变换

发布于 2024-10-11 12:48:28 字数 406 浏览 3 评论 0原文

在 ggplot2 密度图(geom_密度)中,我有以下 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") 之类的内容,但还没有找到任何方法来执行简单的乘法常量或定义自定义转换。

In a ggplot2 density plot (geom_density) I have the following y-axis labels

  • 0.000
  • 0.005
  • 0.010
  • 0.015
  • 0.020

What is the correct way to change them to something like

  • 0
  • 5
  • 10
  • 15
  • 20

possibly with the automatic adding of "10^3 x density" to the label. In the past I've just multiplied my data and manually changed the label, but in this case the y-axis data is generated for me by the density plot.

I'm aware that I can write things like scale_y_continuous(trans="log10"), but have not found any way to do a simple multiplicative constant, or define a custom transform.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

冰葑 2024-10-18 12:48:28

这个答案对于 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(..., limit=c(0, 1)) 规范。

scales 包中还有很多内置格式,包括逗号格式、百分比格式、美元格式和科学记数法格式。有关更多详细信息,请参阅其文档

希望对那里的人有所帮助,因为这种变化确实让我感到困惑!

This answer is out of date for ggplot2 version 0.90. Now, the same format would be specified (much more neatly) this way:

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

or if you want to use the same labelling scheme multiple times:

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

scale_y_continuous(labels=formatter1000())

Note that if you are specifying axis limits using the xlim and ylim functions, this might not work. Instead, use the scale_y_continuous(..., limits=c(0, 1)) specification.

There are also a bunch of built in formats in the scales package, including comma formatting, percentage formatting, dollar formatting and scientific notation formatting. See its documentation for more details.

Hope that helps someone out there, as this change certainly confused me!

心碎的声音 2024-10-18 12:48:28

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

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

请注意,上述答案是在一年半前使用先前的 ggplot 版本给出的。使用 ggplot 的最新版本 (0.9),上面的示例无法正常工作,请尝试以下操作:scale_y_continuous(labels = formatter1000)

You could add the scale_y_continuous(formatter='formatter1000') with the following function defined before:

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

Please note, that the above answer was given one and a half year ago with a prior ggplot version. With the latest release (0.9) of ggplot the above example is not working, please try something like: scale_y_continuous(labels = formatter1000)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文