2014-09-11 20 views
9

Es gibt 6 Linientypen für Grundstücke in R definiert als „gestrichelte“, „LongDash“ ... LinkWie definiert man mehr Linientypen für Graphen in R?

Wie kann ich mehr Typen definieren, wenn ich mehr als 6 Serie habe zu zeichnen? Die Diagrammlinien können basierend auf der Farbe in der Soft-Copy unterschieden werden, sind jedoch nicht für Schwarz-Weiß-Drucken geeignet.

Gibt es mehr Optionen verfügbar oder muss ich sie basierend auf der Kombination von Linien und Punkten wie in der Referenzverbindung definieren?

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

Einige Such Google vorgeschlagen, dass Muster von Ein/Aus auch mit Ketten von 2 angegeben werden kann, 4, 6 oder 8 Zeichen (non-zero Hexadezimalzeichen, 1-9 und A-F) und die voreingestellte Stile sind "gestrichelt" = "44", "gepunktete" = "13", "dotdash" = "1343", "longdash" = "73", "twodash" = "2262".

Aber Es scheint, es wird eine Menge von Treffer und Versuch sein, dies zu verwenden, um neue Linientypen zu definieren, die unter B & W Drucken zu unterscheiden sind.

Edit:

Wenn Punkte und Linienstile kombiniert werden, wie kann ich den Satz von Linientypen so zu definieren, dass sie Eingang als

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

Vielen Dank sein können.

+0

Eine Alternative, die ich in s/w-Diagramme sehen oft verschiedene Marker wie Dreiecke zu verwenden, Quadrate, Kreise, plusses, Sternchen, offene Kreise entlang mit dem Dotdash oder gepunktetem Stil. –

+0

Ja, ich habe hinzugefügt, dass in dem Code, wo PCH ist der Stil der Punkte verwendet. Ich frage mich, ob es eine Alternative gibt, die in der genannten Weise sowohl farblich als auch s/w funktioniert. – Anusha

Antwort

11

Wie Sie in Ihrem Link erwähnt haben, sind die legalen Werte die Zeichenfolgen "leer", "fest", "gestrichelt", "gepunktete", "dotdash", "longdash" und "twodash". Alternativ können die Ziffern 0 bis 6 verwendet werden (0 für "blank", 1 für "solid", ...).

Außerdem, kann man auch Saiten verwenden, die den Linientyp mit bis zu 8 Hexadezimalziffern (jede Ziffer Spezifizieren der Länge von verschachtelten Zeilen und Spalten) definieren.

Hier ein Beispiel mit linetype aes in ggplot2 entspricht lty in Basis R. Auf diese Weise können Sie mehr als die 6 vordefinierten Typen erhalten.

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

Erläuterung:

"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: die Lösung aus diesem link angenommen wird.

+0

Danke für die Antwort. Werden die Zeilen twodash und 12345678 beim Drucken anders sein? Theoretisch gibt es viele Kombinationen von 8 Ziffern, aber werden sie sich visuell unterscheiden? Wenn ich Punkte definieren muss, gibt es eine Möglichkeit, einen Vektor von Linientypen und Farben zu erstellen? – Anusha

+0

Wenn Sie 'Punkte' besser verwenden möchten' PCH' Parameter Sie haben 0:18 Symbole und Sie können auch ein Zeichen verwenden, um Punkte wie pch = "a" zu spezifizieren. – agstudy

+0

Kann ich einen Vektor von Linientypen erstellen, den ich dann als lty = 1: N verwenden kann? Wie definiere ich diesen Vektor mit PCH? – Anusha

0

Dies funktioniert 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)