在一个图中绘制多条线

Chr*_*rge 19 r linegraph ggplot2

尝试使用ggplot将多行绘制成一个图形,但不确定如何使用我的数据集.不确定我是否需要更改数据结构(转置?)

数据如下所示:

Company   2011   2013
Company1  300    350
Company2  320    430
Company3  310    420
Run Code Online (Sandbox Code Playgroud)

我也试过它转置:

Year   Company1  Company2  Company3
2011   300       320       310 
2013   350       430       420
Run Code Online (Sandbox Code Playgroud)

为此我可以使用绘制1个值;

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

但我不知道如何将所有公司合并,因为我没有对象'公司'了.有什么建议?

Bea*_*eld 51

您应该将数据转换为长(即熔化)格式,以便将其用于ggplot2:

library("reshape2")
mdf <- melt(mdf, id.vars="Company", value.name="value", variable.name="Year")
Run Code Online (Sandbox Code Playgroud)

然后你必须使用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")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


Fed*_*rgi 11

您可以使用本机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))
Run Code Online (Sandbox Code Playgroud)

R多行图

  • "令人费解的数据结构"更加强大.我觉得使用这种形状的数据非常有帮助 (3认同)
  • 感谢您的“极其复杂的数据结构”声明!强烈赞赏! (2认同)