Trazar múltiples líneas en un gráfico

Tratando de usar ggplot para trazar varias líneas en un gráfico, pero no estoy seguro de cómo hacerlo con mi conjunto de datos. ¿No estoy seguro de si necesito cambiar la estructura de datos o no (transponer?)

Los datos se ven así:

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

También lo intenté transpuesto:

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

Y para esto puedo trazar 1 de los valores usando;

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

Pero no sé cómo combinar todas las compañías ya que no tengo un objeto ‘Compañía’ para agrupar. ¿Alguna sugerencia?

Debe traer sus datos en formato largo (es decir, fundido) para usarlo con ggplot2 :

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

Y luego debe usar aes( ... , group = Company ) para agruparlos:

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

enter image description here

En lugar de usar las escandalosas estructuras de datos requeridas por ggplot2, puede usar las funciones 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 trazado de múltiples líneas

La respuesta de @Federico Giorgi fue una muy buena respuesta. Me ayudó. Por lo tanto, hice lo siguiente, para producir varias líneas en la misma gráfica a partir de los datos de un solo conjunto de datos, utilicé un ciclo for. La leyenda se puede agregar también.

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