我的数据框具有以下名为dat的结构:
No. Action Title Replies PlusOnes Reshares Url
1 Share SomeTitle 2 3 1 http://plus.google.com
2 Post AnotherTitle 3 4 5 http://plus.google.com
以下是我的数据dput(dat)
:
structure(list(No. = 1:2, Action = c("Share", "Post"), Title = c("Some Title",
"Another Title"), Replies = 2:3, PlusOnes = 3:4, Reshares = c(1L,
5L), Url = c("http://plus.google.com", "http://plus.google.com"
)), .Names = c("No.", "Action", "Title", "Replies", "PlusOnes",
"Reshares", "Url"), class = "data.frame", row.names = c(NA, -2L
))
如何在图表中绘制列Replies
,PlusOnes
和Reshares
?
x轴应该是No.
,y轴应该是Replies / PlusOnes / Reshares的数量,这些列应该在图中各有一条单独的行。
此致
答案 0 :(得分:4)
你可以这两种方式:使用标准R图形或ggplot2(我更喜欢)。
由于另一个答案解释了如何使用matplot
,我会向您展示另一种方式来获得漂亮的图表。
require(ggplot2)
require(reshape2)
dat<-data.frame('No.'=1:2,replies=2:3,PlusOnes=3:4,Reshares=c(1,5))
melted=melt(dat,id.vars='No.')
ggplot(melted,aes(x=factor(No.),y=value,color=factor(variable),group=factor(variable)))+
geom_line()+xlab('No.')+guides(color=guide_legend("Series"))+
labs(title="Insert Title Here")
基本上发生的事情是reshape2包中的melt()
函数将为每个No.
级别的每个可能列值创建一个新的行条目。它还存储对应于的值的变量名称它在每一行中,因此很容易用ggplot绘制类似的东西。
答案 1 :(得分:2)
类似的东西:
with(dat,matplot(x=No.,y=cbind(Replies,PlusOnes,Reshares),type="l")
答案 2 :(得分:2)
使用lattice
(我编辑添加第三个变量)
xyplot(Replies+Reshares+PlusOnes~factor(No.),
data=dat,type='l',auto.key=T)