2014-09-11 12 views
9

Ci sono 6 tipi di linea definiti per i grafici in R definiti, "longdash" "tratteggiata" ... LinkCome definire più tipi di linea per i grafici in R?

Come posso definire più tipi se ho più che 6 serie per tracciare? Le linee del grafico possono essere distinte in base al colore nella copia soft, ma non sono adatte per la stampa in bianco e nero.

Sono disponibili più opzioni o è necessario definirle in base alla combinazione di linee e punti come nel collegamento di riferimento?

plot(x, type = "b", pch = 0, lty = "dotted") 

Alcuni google ricerca ha suggerito che i modelli di on/off possono essere specificati anche con le stringhe di 2, 4, 6 o 8 caratteri (zero non-caratteri esadecimali, 1-9 e A-F) e la gli stili preimpostati sono "dashed" = "44", "punteggiato" = "13", "dotdash" = "1343", "longdash" = "73", "twodash" = "2262".

Ma Sembra che ci sarà un sacco di successo e prova per utilizzare questo per definire nuovi tipi di linee che saranno distinguibili sulla stampa B &.

Modifica:

Se i punti e gli stili di linea sono combinati, come posso definire l'insieme dei tipi di linea in modo tale che essi possono essere inseriti come

plot(DF, ..., col = 1:ncol(DF), lty = 1:ncol(DF)) 
# where DF is the set of data to be plotted. 

Grazie mille.

+0

Un'alternativa vedo spesso in b grafici/w è usare marcatori differenti come triangoli, quadrati, cerchi, plus, asterischi, cerchi aperti lungo con lo stile dotdash o punteggiato. –

+0

Sì, ho aggiunto quello nel codice in cui pch è lo stile dei punti utilizzati. Mi chiedo se c'è un'alternativa che funziona sia a colori che in bianco e nero nel modo menzionato. – Anusha

risposta

11

Come indicato nel collegamento, i valori legali sono le stringhe "vuoto", "solido", "tratteggiato", "punteggiato", "dotdash", "longdash" e "twodash". In alternativa, è possibile utilizzare i numeri da 0 a 6 (0 per "vuoto", 1 per "solido", ...).

Inoltre, si può anche utilizzare stringhe che definiscono il tipo di linea fino a 8 cifre esadecimali (ogni cifra che specifica la lunghezza delle linee intercalati e lacune).

Ecco un esempio, utilizzando linetype aes in ggplot2 equivalente a lty in base R. In questo modo è possibile ottenere più dei 6 tipi predefiniti.

library(ggplot2) 
d=data.frame(lt=c("blank", "solid", "dashed", "dotted", 
        "dotdash", "longdash", "twodash", "1F", 
        "F1", "4C88C488", "12345678")) 
ggplot() + 
    scale_x_continuous(name="", limits=c(0,1), breaks=NULL) + 
    scale_y_discrete(name="linetype") + 
    scale_linetype_identity() + 
    geom_segment(data=d, mapping=aes(x=0, xend=1, y=lt, yend=lt, linetype=lt)) 

enter image description here

Spiegazione:

"1F": dash length 1, gap length F (15) 
"F1": dash length F (15), gap length 1 
"4C88C488": dash (4), gap (C=12), dash (8), gap (8), dash (C=12), ... 
"12345678": dash (1), gap (2), dash (3), gap (4), ... 

PS: la soluzione è adottata da questo link.

+0

Grazie per la risposta. Le linee saranno twodash e 12345678 saranno diverse sulla stampa? Teoricamente, ci sono molte combinazioni di 8 cifre, ma saranno visivamente diverse? Se devo definire l'uso dei punti, c'è un modo per creare anche un vettore di tipi di linee e colori? – Anusha

+0

se vuoi usare 'punti' meglio per usare il parametro' pch' hai 0:18 symbole ed inoltre puoi usare qualche carattere per specificare punti come pch = "a". – agstudy

+0

Posso creare un vettore di tipi di linee che posso usare come lty = 1: N? Come definisco questo vettore usando pch? – Anusha

0

Questo funziona utilizzando PCH = 1: ncol (DF)

# sample data 
dat <- matrix(runif(40,1,20),ncol=10) 
matplot(dat, type = "b", lty = "longdash", pch = 1:10, col = 1:10, lwd = 2) 
Problemi correlati