2011-12-06 48 views
9

我想調整下面的ggplot中的線型。因此,我在data.frame df中引入了另一列來表示行類型,但是一旦將其轉換爲一個因子,圖例中將顯示linetype而不是「method」(請參見試用版3)。ggplot2:如何調整線條類型和圖例順序?

如何在圖例中獲得「方法」?最後,我想能夠

  1. 自由選擇的線型,
  2. 自由選擇在這些線型顯示在圖例中的順序,
  3. 已示出爲圖例中的相應的「方法」文本。

這裏是我的嘗試:

require(ggplot2) 
set.seed(1) 
df <- data.frame(x=c(1:4, 2:5), 
       method=rep(c("a", "b"), each=4), 
       lt=rep(c(5,3), each=4), 
       value=rep(c(0,1), each=4)+runif(8)) 

## trial 1: 
ggplot(df, aes(x=x, y=value)) + 
    geom_point() + 
    geom_line(aes(group=method, linetype=method)) 
# fine, but not the linetypes I would like to have 

## trial 2: 
ggplot(df, aes(x=x, y=value)) + 
    geom_point() + 
    geom_line(aes(group=method, linetype=lt)) 
# correct linetypes, but no legend 

## trial 3: 
ggplot(df, aes(x=x, y=value)) + 
    geom_point() + 
    geom_line(aes(group=method, linetype=as.factor(lt))) 
# legend, but not the correct one (I would like to have the "group"ing 
# variable "method" in the legend as in trial 1) 
+0

'+ scale_linetype(NAME = 「方法」)'似乎與審判工作3 – Chase

+0

這給了我圖例標題 「方法」,但我仍然得到 「3」 和「5 「作爲傳說文本,而不是在審判1中的」a「和」b「 –

回答

16

使用methodlinetype,但然後手動將它映射到你想要的類型的線條。你不需要通過這種方式引入另一個變量。

ggplot(df, aes(x=x, y=value)) + 
    geom_point() + 
    geom_line(aes(linetype=method)) + 
    scale_linetype_manual(breaks=c("a","b"), values=c(5,3)) 

enter image description here