2017-02-10 71 views
0

在下面的代碼中,我可以爲兩個方面設置兩個不同的比例。現在,我想格式化大規模(例如,使用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

函數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

+0

很聰明,雖然定位於我的例子,其中的'big'和'small'值是分開的。我想這意味着沒有辦法告訴ggplot2我想要'labeller1'這個方面,'labeller2'這個方面? – Heisenberg

+0

不是我所知。 –