我正在尝试使用R生成一种特定的图表。
)
这是我想要获得的图表的描述: x轴上的变量(“日期”)是一个因子。其水平在x轴上报告。 此外,y轴上的变量(“主题”)是一个因子,绘制的是每个“日期”级别的计数比例。
例如,让我们考虑一下这个数据库:
data <- data.frame(ID = 1:20, Date = as.factor(c(1,1,1,1, 1, 1,1, 2,2,2,2, 2, 2, 2, 2, 3,3,3, 3, 3)), Theme = as.factor(c("a","b", "b", "c", "c", "c", "c","a","a","a", "a", "b","c", "c","a","a","b","b", "b", "c")))
在R中,我设法生成一个堆积条形图,计算每个日期的主题值的比例:
ggplot(data, aes(x = Date)) + geom_bar(aes(fill = Theme), position = 'fill')
我的目标是生成三个水平连接的线,对于每个x轴级别(“日期”),y轴变量的计数比例(“主题”)。
我在网上发现了一种可行的方式,但我没有设法让它们发挥作用。
ggplot(Theme, aes(Date)) + geom_freqpoly(aes(group = Theme, colour = Theme))
(我在这里找到了这个公式:http://docs.ggplot2.org/0.9.3.1/geom_bar.html第13个图基本上就是我要找的。)
感谢您的帮助!
答案 0 :(得分:1)
对于您的数据,最接近的近似值如下所示:
ggplot(data, aes(x=Date, y=ID, group=Theme, col=Theme)) + geom_line() + geom_point()
至于日期,更好的方法是使用标准的POSIXct或Date类,它们可以通过相同的ggplot表达式可视化,并且可以通过添加scale_x_date()或scale_x_datetime函数来进一步自定义轴。
答案 1 :(得分:0)
感谢Simon O'Hanlon和df239。
最后,我设法通过这个公式获得了我想要的东西:
ggplot(data, aes(Date)) + geom_freqpoly(aes(group = Theme, colour = Theme))
我正在为可能登陆此页面的其他人分享。
考虑一下,如果你为y轴声明一个变量,比如aes(Date,Theme),那就不行了!