我有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
答案 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(...)
行的末尾,以生成黄土平滑曲线。