如何在两个因子变量之间绘制多条线

时间:2014-01-23 15:21:19

标签: r plot ggplot2

我正在尝试使用R生成一种特定的图表。

graph

这是我想要获得的图表的描述: 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个图基本上就是我要找的。)

感谢您的帮助!

2 个答案:

答案 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),那就不行了!