Mehr als sechs Formen in ggplot
Ich würde gerne Handlungsstränge mit den verschiedenen Formen mit mehr als sechs Sätze von Daten, die Verwendung von diskreten Farben. Die Probleme sind 1) eine andere Legende ist, generiert Linie, Farbe und Form, sondern sollte nur eine Legende mit Linie, Farbe und Form, 2) bei der Korrektur der Titel für die Farbe der Linie legend, die Farbe verschwinden.
t=seq(0,360,20)
for (ip in seq(0,10)) {
if (ip==0) {
df<-data.frame(t=t,y=sin(t*pi/180)+ip/2,sn=ip+100)
} else {
tdf<-data.frame(t=t,y=sin(t*pi/180)+ip/2,sn=ip+100)
df<-rbind(df,tdf)
}
}
head(df)
# No plot
# Error: A continuous variable can not be mapped to shape
gp <- ggplot(df,aes(x=t,y=y,group=sn,color=sn,shape=sn))
gp <- gp + labs(title = "Demo more than 6 shapes", x="Theat (deg)", y="Magnitude")
gp <- gp + geom_line() + geom_point()
print(gp)
# No plot
# Error: A continuous variable can not be mapped to shape (doesn't like integers)
gp <- ggplot(df,aes(x=t,y=y,group=sn,color=sn,shape=as.integer(sn)))
gp <- gp + labs(title = "Demo more than 6 shapes", x="Theat (deg)", y="Magnitude")
gp <- gp + geom_line() + geom_point()
print(gp)
# Gives warning about 6 shapes, and only shows 6 shapes, continous sn colors
gp <- ggplot(df,aes(x=t,y=y,group=sn,color=sn,shape=as.factor(sn)))
gp <- gp + labs(title = "Only shows six shapes, and two legends, need discrete colors",
x="Theat (deg)", y="Magnitude")
gp <- gp + geom_line() + geom_point()
print(gp)
# This is close to what is desired, but correct legend title and combine legends
gp <- ggplot(df,aes(x=t,y=y,group=sn,color=as.factor(sn),shape=as.factor(sn %% 6)))
gp <- gp + labs(title = "Need to combine legends and correct legend title", x="Theat (deg)", y="Magnitude")
gp <- gp + geom_line() + geom_point()
print(gp)
# Correct legend title, but now the line color disappears
gp <- ggplot(df,aes(x=t,y=y,group=sn,color=as.factor(sn),shape=as.factor(sn %% 6)))
gp <- gp + labs(title = "Color disappeard, but legend title changed", x="Theat (deg)", y="Magnitude")
gp <- gp + geom_line() + geom_point()
gp <- gp + scale_color_manual("SN",values=as.factor(df$sn))
print(gp)
# Add color and shape in geom_line /geom_point commands,
gp <- ggplot(df,aes(x=t,y=y,group=sn))
gp <- gp + labs(title = "This is close, but legend symbols are wrong", x="Theat (deg)", y="Magnitude")
gp <- gp + geom_line(aes(color=as.factor(df$sn)))
gp <- gp + geom_point(color=as.factor(df$sn),shape=as.factor(df$sn %% 6))
gp <- gp + scale_color_manual("SN",values=as.factor(df$sn))
print(gp)
InformationsquelleAutor der Frage user3969377 | 2014-10-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zuerst, es wäre einfacher zu konvertieren
sn
zu einem Faktor.Dann müssen Sie
scale_shape_manual
angeben, Ihre Formen zu verwenden.Dies sollte Ihnen geben, was Sie wollen. Sie benötigen
scale_shape_manual
da, sogar mitsn
als ein Faktor, derggplot
wird nur hinzufügen, bis zu 6 verschiedene Symbole automatisch. Danach müssen Sie diese manuell festlegen. Sie können Ihre Symbole in einer Reihe von Möglichkeiten. Haben Sie einen Blick auf diese Seiten für weitere Informationen: http://sape.inf.usi.ch/quick-reference/ggplot2/shapehttp://www.cookbook-r.com/Graphs/Shapes_and_line_types/
InformationsquelleAutor der Antwort Cotton.Rockwood
Für mich der Schlüssel, um die Fehlermeldung über die 6 Formen ist der Teil, der sagt
Consider specifying shapes manually.
.Wenn Sie hinzufügen, in der
values
imscale_shape_manual
ich glaube, du wirst bekommen, was Sie wollen. Ich machtesn
ein Faktor in der dataset-ersten.Gehe ich auf die Kochbuch für R sitewenn ich brauche zu erinnern, die zahlen entsprechen, die Formen.
Bearbeiten Das obige Beispiel zeigt das hinzufügen 11 Symbole, die gleiche Anzahl von Symbolen in deinem Beispiel-dataset. Ihre Kommentare zeigen, dass Sie noch viele weitere einzigartige Werte für die
sn
variabler als in deinem Beispiel. Seien Sie vorsichtig mit der Verwendung, eine lange Reihe von zahlen invalues
da nicht alle zahlen werden als Symbole bezeichnet.Ignorieren, ob es eine gute Idee zu haben, so viele Formen in einer einzigen Grafik oder nicht, können Sie Buchstaben und zahlen sowie Symbole als Formen. Also, wenn Sie wollten, sagen wir, 73 einzigartigen Formen, basierend auf einem Faktor mit 73 Stufen, die Sie verwenden konnten 19 Symbole, alle groß-und Kleinbuchstaben und den zahlen 0 und 1 wie Ihre
values
.InformationsquelleAutor der Antwort aosmith