R:ggplot2在一个图上得到两列

时间:2014-08-14 20:55:12

标签: r ggplot2

我有csv文件有许多列csv的第一列是user_id。其他列适用于用户采取的不同操作。我想在一个ggplot上用行显示这个csv文件中的两列。

userid    Action1TakenTimes Action2TakenTimes
1                    0             4
2                    6             4
3                    0             1
4                    8            23
5                    4             3
6                    1             1

我已经将csv文件转换为R数据表并完成了简单的绘图,但我想做一个连接点的平滑线条的ggplot。

plot(log(mytable.data$Action1TakenTimes))
plot(log(mytable.data$Action2TakenTimes))

我接下来的教程但是找不到类似的例子: http://www.ceb-institute.org/bbs/wp-content/uploads/2011/09/handout_ggplot2.pdf

1 个答案:

答案 0 :(得分:2)

喜欢这个吗?

library(ggplot2)
library(reshape2)
gg <- melt(mytable.data,id="userid")
ggplot(gg,aes(x=userid,y=log(value),color=variable))+geom_line()

ggplot期望所谓的“长”格式的数据,其中所有值都在一列中,第二列用于区分不同的组。您的数据采用“宽”格式,不同的列中包含不同的组。要进行转换,请在melt(...)包中使用reshape2

ggplot这是一种非常常见的模式。

您的数据存在的一个问题是您正在使用log(0),这会生成-Inf。在那种情况下,平滑是没有意义的。如果没有无穷大,您可以将+stat_smooth()添加到ggplot(...)行的末尾,以生成黄土平滑曲线。