varias superponer lineas graficos grafico graficas ggplot dispersion r ggplot2 linegraph

superponer - Trazar varias líneas en un gráfico



varias graficas en r (3)

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

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

Y luego tienes que 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")

Intento 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 he intentado transponer:

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 ya no tengo un objeto ''Compañía'' para agrupar. ¿Alguna sugerencia?


En lugar de utilizar las estructuras de datos exageradamente complicadas 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))


La respuesta de @Federico Giorgi fue una muy buena respuesta. Me ayudo 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, usé un bucle for. La leyenda también se puede agregar.

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