如何为不同的方面指定不同的比例格式?

时间:2017-02-10 21:03:27

标签: r ggplot2

在下面的代码中,我可以为两个方面设置两个不同的比例。现在,我想格式化大规模(例如将其转换为带scale_y_continuous(labels = dollar)的美元)。如何格式化单个方面的比例?

df <- data.frame(value = c(50000, 100000, 4, 3),
                 variable = c("big", "big", "small", "small"),    
                 x = c(2010, 2011, 2010, 2011))
ggplot(df) + geom_line(aes(x, value)) + facet_wrap(~ variable, scales = "free_y")

A similar question a long time ago about setting individual limit没有答案。我希望ggplot2 2.0能够做到这一点。

1 个答案:

答案 0 :(得分:1)

函数scale_y_continuous允许函数用于labels参数。我们可以创建一个使用最小big值(或任何其他值)作为阈值的自定义标签。

dollar <- function(x) {
  ifelse(x >= min(df$value[df$variable == "big"]),
    paste0("$", prettyNum(x, big.mark=",")), x)
}

ggplot(df) + geom_line(aes(x, value)) + facet_wrap(~ variable, scales = "free_y") +
  scale_y_continuous(labels = dollar)

enter image description here