【问题标题】:How to plot multiple lines between two factor variables如何在两个因子变量之间绘制多条线
【发布时间】:2023-04-09 11:25:01
【问题描述】:

我正在尝试使用 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张图基本上就是我要找的。)

感谢您的帮助!

【问题讨论】:

  • 我认为您的示例数据不能充分代表您想要绘制的内容,但可以尝试一个可重复的示例。这是你想要做的......ggplot( aes(Date, Theme) , data=data) + geom_freqpoly( aes( group = Theme , colour = Theme ) )
  • 感谢您的回答,但我还没到:我获得了平行于 x 轴的三条线...

标签: r plot ggplot2


【解决方案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 函数来进一步自定义轴。

【讨论】:

  • 感谢您的回答!但是我还没有:它似乎显示了一个累积计数(所有线条都“爬上”到右上角),而不是遵循每个 x 轴因子水平的计数分布 - 如图我试图获得。请告诉我是否可以添加更多信息...
  • 对不起,我错过了你的问题。您可以使用table 函数来有效地计算计数,然后使用类似的命令绘制它。如果您需要进一步的帮助,请告诉我。
【解决方案2】:

感谢 Simon O'Hanlon 和 df239。

最后我设法用这个公式得到了我想要的:

ggplot(data, aes(Date)) + geom_freqpoly(aes(group = Theme, colour = Theme))

我将它分享给可能登陆此页面的其他人。

考虑一下,如果为y轴声明了一个变量,比如aes(Date, Theme),那就不行了!

【讨论】:

    猜你喜欢
    • 2011-10-15
    • 1970-01-01
    • 1970-01-01
    • 2020-06-04
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 2021-12-30
    相关资源
    最近更新 更多