2016-03-23 19 views
2

:Geom_vline için set linetype? Aşağıdaki arsa için

df.plot <-structure(list(color = structure(c(2L, 2L, 3L, 1L, 3L, 4L, 3L, 
    1L, 4L, 1L, 2L, 4L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 2L, 
    3L, 3L, 3L, 3L), .Label = c("54", "55", "61", "69"), class = "factor"), 
    date = structure(c(16687, 16687, 16687, 16687, 16687, 16687, 
    16688, 16688, 16688, 16689, 16689, 16690, 16693, 16693, 16693, 
    16694, 16694, 16695, 16695, 16695, 16695, 16696, 16696, 16696, 
    16696, 16696, 16696), class = "Date"), facet = c("A", 
    "A", "A", "A", "A", "B", 
    "B", "A", "B", "B", "B", "B", 
    "B", "B", "B", "B", "A", "B", 
    "A", "B", "A", "C", "B", "C", 
    "C", "B", "C")), class = "data.frame", row.names = c(NA, -27L), 
    .Names = c("color", "date", "facet")) 

vlines <- data.frame(date = as.Date(c("2015-09-10", "2015-09-13")), 
      LType=(c("AA", "AB"))) 
ggplot(df.plot, aes(x=date, fill=color)) + 
    geom_dotplot(binwidth=1, stackgroups=TRUE, binpositions="all") + 
    coord_fixed(ratio=1) + 
    ylim(0,7) + 
    geom_vline(data=vlines, aes(xintercept = as.numeric(date), linetype=LType)) + 
    facet_grid(facet ~ .) 

Ben "AB" ve "AA" "longdash" için "dotdash" olmak için hat türünü yapmak istiyorum. Bunu nasıl belirleyebilirim?

cevap

8

scale_linetype_manual'u kullanın. ?par itibaren

library("ggplot2") 
g0 <- ggplot(df.plot, aes(x=date, fill=color)) + 
    geom_dotplot(binwidth=1, stackgroups=TRUE, binpositions="all") + 
    coord_fixed(ratio=1) + 
    ylim(0,7) + 
    geom_vline(data=vlines, aes(xintercept = as.numeric(date), linetype=LType)) + 
    facet_grid(facet ~ .) 

:

‘lty’ satır türü. Çizgi türleri tam sayı olarak belirtilebilir (0 = boş, 1 = katı (varsayılan), 2 = kesikli, 3 = noktalı, 4 = dotdash, 5 = longdash, 6 = twodash) veya karakterlerinden biri olarak "boş", "katı", "kesik", "noktalı", " " "dotdash" "," longdash "" veya "" twodash ", burada" boş " ' ' görünmez çizgiler 'kullanır (yani çizmez).

Yani

g0 + scale_linetype_manual(values=c(5,4)) 

ya da (muhtemelen daha iyi!)

g0 + scale_linetype_manual(values=c("longdash","dotdash")) 
+2

bu yanlış bir şey yok olsa da bağımsız değişken olarak çizgi tipi ekleyebilir. (ör. geom_vline (xintercept = 0, renk = "gri", linetype = "kesikli", büyüklük = 0,5)). Geom_line() tarafından eklenen satırları belirtmek için scale_linetype_manual kullanıyorsanız daha kullanışlı olabilir. –

+0

ancak OP'nin çizmek istedikleri iki farklı vline var ('aes (linetype = Ltype)'). Sen * bir tutam iki ayrı 'geom_vline' çağrıları kullanabilirsiniz *, ama bu tür bir altgay ggplot paradigma ... –

+1

Sadece genel soruya bağlı bir potansiyel alternatif olarak, demek istedim:" geom_vline için set linetype? ". OP'nin kendi özel problemini şimdiye kadar çözdüğünü düşünüyorum. Belki de onu farklı bir şekilde söylemeliydim. –

İlgili konular