Ggplotを使用して複数の線を1つのグラフにプロットしようとしていますが、データセットでどのように行うかはわかりません。データ構造を変更する必要があるかどうかわからない(転置?)
データは次のようになります。
Company 2011 2013
Company1 300 350
Company2 320 430
Company3 310 420
私はそれを転置してみました:
Year Company1 Company2 Company3
2011 300 320 310
2013 350 430 420
このために、次の値を使用して1つの値をプロットできます。
ggplot(data=df, aes(x=Year, y=Company1)) + geom_line(colour="red") + geom_point(colour="red", size=4, shape=21, fill="white")
しかし、グループ化するオブジェクト 'Company'がもうないので、すべての企業を結合する方法がわかりません。助言がありますか?
_ggplot2
_でデータを使用するには、データを長い(つまり、溶融した)形式にする必要があります。
_library("reshape2")
mdf <- melt(mdf, id.vars="Company", value.name="value", variable.name="Year")
_
そして、aes( ... , group = Company )
を使用してそれらをグループ化する必要があります。
_ggplot(data=mdf, aes(x=Year, y=value, group = Company, colour = Company)) +
geom_line() +
geom_point( size=4, shape=21, fill="white")
_
Ggplot2に必要な非常に複雑なデータ構造を使用する代わりに、ネイティブR関数を使用できます。
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))
@Federico Giorgiの答えは非常に良い答えでした。助けてくれました。したがって、1つのデータセットのデータから同じプロットに複数のラインを生成するために、次のことを行い、forループを使用しました。凡例も追加できます。
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))