在一张图中绘制多条线
尝试使用ggplot将多行图表绘制成一个图表,但不知道如何使用我的数据集。 不确定是否需要更改数据结构(转置?)
数据看起来像这样:
Company 2011 2013 Company1 300 350 Company2 320 430 Company3 310 420
我也试过换位:
Year Company1 Company2 Company3 2011 300 320 310 2013 350 430 420
为此,我可以绘制一个值的使用;
ggplot(data=df, aes(x=Year, y=Company1)) + geom_line(colour="red") + geom_point(colour="red", size=4, shape=21, fill="white")
但是我不知道如何组合所有的公司,因为我再也没有一个对象“公司”了。 有什么build议么?
你应该把你的数据变成很长(即熔化)的格式来使用它与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")
您可以使用本机R函数,而不是使用ggplot2所需的令人生畏的数据结构:
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))