Versuch, ggplot zu verwenden, um mehrere Linien in ein Diagramm zu zeichnen, aber nicht sicher, wie dies mit meinem Datensatz geschieht. Nicht sicher, ob ich die Datenstruktur ändern muss oder nicht (transponieren?)
Daten sehen so aus:
Company 2011 2013
Company1 300 350
Company2 320 430
Company3 310 420
Ich habe es auch ausprobiert:
Year Company1 Company2 Company3
2011 300 320 310
2013 350 430 420
Und dazu kann ich 1 der Werte mit darstellen;
ggplot(data=df, aes(x=Year, y=Company1)) + geom_line(colour="red") + geom_point(colour="red", size=4, shape=21, fill="white")
Aber ich weiß nicht, wie ich alle Unternehmen zusammenfassen soll, da ich nicht mehr das Objekt "Unternehmen" zum Gruppieren habe. Irgendwelche Vorschläge?
Sie sollten Ihre Daten in ein langes (d. H. Geschmolzenes) Format bringen, um sie mit ggplot2
zu verwenden:
library("reshape2")
mdf <- melt(mdf, id.vars="Company", value.name="value", variable.name="Year")
Und dann müssen Sie aes( ... , group = Company )
verwenden, um sie zu gruppieren:
ggplot(data=mdf, aes(x=Year, y=value, group = Company, colour = Company)) +
geom_line() +
geom_point( size=4, shape=21, fill="white")
Anstelle der von ggplot2 geforderten verworrenen Datenstrukturen können Sie die systemeigenen R-Funktionen verwenden:
tab<-read.delim(text="
Company 2011 2013
Company1 300 350
Company2 320 430
Company3 310 420
",as.is=TRUE,sep=" ",row.names=1)
tab<-t(tab)
plot(tab[,1],type="b",ylim=c(min(tab),max(tab)),col="red",lty=1,ylab="Value",lwd=2,xlab="Year",xaxt="n")
lines(tab[,2],type="b",col="black",lty=2,lwd=2)
lines(tab[,3],type="b",col="blue",lty=3,lwd=2)
grid()
legend("topleft",legend=colnames(tab),lty=c(1,2,3),col=c("red","black","blue"),bg="white",lwd=2)
axis(1,at=c(1:nrow(tab)),labels=rownames(tab))
Die Antwort von @Federico Giorgi war eine sehr gute Antwort. Es hat mir geholfen. Daher habe ich Folgendes ausgeführt, um aus den Daten eines einzigen Datensatzes mehrere Zeilen in derselben Zeichnung zu erzeugen, habe ich eine for-Schleife verwendet. Legende kann auch hinzugefügt werden.
plot(tab[,1],type="b",col="red",lty=1,lwd=2, ylim=c( min( tab, na.rm=T ),max( tab, na.rm=T ) ) )
for( i in 1:length( tab )) { [enter image description here][1]
lines(tab[,i],type="b",col=i,lty=1,lwd=2)
}
axis(1,at=c(1:nrow(tab)),labels=rownames(tab))