【问题标题】:Change the thousands separator in a ggplot更改 ggplot 中的千位分隔符
【发布时间】:2014-04-24 08:19:10
【问题描述】:

在使用 ggplot 制作条形图时,我在获取首选千位分隔符时遇到了麻烦。我希望数千用点而不是逗号分隔。像这样它没有分隔符:

require(ggplot2)
require(scales) 
options(scipen=10)
D = data.frame(x=c(1,2),y=c(1000001,500000))
p = ggplot(D,aes(x,y)) + geom_bar(stat="identity") 
p

并且像这样给出一个逗号:

p + scale_y_continuous(labels=comma)

你如何得到一个点作为千位分隔符?除了http://docs.ggplot2.org/0.9.3.1/scale_continuous.html 上的一些示例之外,我找不到关于存在哪些类型的其他标签的文档。

提前致谢,

极限竞速

【问题讨论】:

  • labels=comma 中的 comma 是什么?它是一个未定义的变量,就是这样......
  • @Spacedman 它有效并且定义明确。您还可以在官方文档中看到使用它的示例。你有最新版本的ggplot吗?您需要使用库(刻度),顺便说一句。
  • 它来自scales 包。我现在看到你的编辑了。

标签: r ggplot2 decimal scale separator


【解决方案1】:
p + scale_y_continuous(labels=function(x) format(x, big.mark = ".", scientific = FALSE))

【讨论】:

  • 像魅力一样工作,谢谢!不知道你也可以将函数传递给标签,这很有用。
  • 如果您输入comma,您会看到它是一个与给出的答案非常相似的函数。也许向scales 包作者建议dottedThousands 函数?
  • 找到 github repo for scales(如果存在),添加新问题。否则电子邮件维护者。
  • 我想补充一点,通常需要在 x 轴上的函数中添加修剪选项(参见此处:stackoverflow.com/questions/14665461/…),因为格式可能会将轴值移动到正确的。因此它们不再对齐。
【解决方案2】:

这也有效:

p + scale_y_continuous(labels = scales::comma)

【讨论】:

    【解决方案3】:

    很好的答案。当您定义千位分隔符时,最好也将小数分隔符定义为逗号,以避免错误。

    p + scale_y_continuous(labels=function(x) format(x, big.mark = ".", decimal.mark = ",", scientific = FALSE))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-06
      • 1970-01-01
      • 2012-03-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多