Plotar várias linhas em um gráfico

Tentando usar o ggplot para plotar várias linhas em um gráfico, mas não tenho certeza de como fazer isso com o meu dataset. Não tenho certeza se preciso alterar a estrutura de dados ou não (transpor?)

Os dados são assim:

Company 2011 2013 Company1 300 350 Company2 320 430 Company3 310 420 

Eu também tentei transposto:

 Year Company1 Company2 Company3 2011 300 320 310 2013 350 430 420 

E para isso eu posso traçar 1 dos valores usando;

 ggplot(data=df, aes(x=Year, y=Company1)) + geom_line(colour="red") + geom_point(colour="red", size=4, shape=21, fill="white") 

Mas eu não sei como combinar todas as empresas, pois não tenho mais um object ‘Company’ para agrupar. Alguma sugestão?

Você deve trazer seus dados para um formato longo (ou seja, fundido) para usá-lo com o ggplot2 :

 library("reshape2") mdf <- melt(mdf, id.vars="Company", value.name="value", variable.name="Year") 

E então você tem que usar aes( ... , group = Company ) para agrupá-los:

 ggplot(data=mdf, aes(x=Year, y=value, group = Company, colour = Company)) + geom_line() + geom_point( size=4, shape=21, fill="white") 

insira a descrição da imagem aqui

Em vez de usar as estruturas de dados escandalosamente complicadas exigidas pelo ggplot2, você pode usar as funções R nativas:

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

R plotagem de várias linhas

A resposta de @Federico Giorgi foi uma resposta muito boa. Isso me ajuda. Portanto, fiz o seguinte, para produzir várias linhas no mesmo gráfico a partir dos dados de um único dataset, usei um loop for. Legenda pode ser adicionada também.

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