我正在开发一个 R Shiny 程序,它可以获取任何 csv 文件并输出它的图形。上传 csv 的用户对数据的外观有一些指导,但我不希望它太严格。
我目前正在尝试使用 ggplot2 在一个图上绘制同一数据集的多条线以进行比较。
我目前正在上传的数据看起来像这样(简化,因为数据有超过 1000 行):
Date Hamburgers Salads Sodas Fries
12-01 4 4 3 2
12-02 1 7 3 9
12-03 22 24 45 34
12-04 23 44 46 22
我正在尝试输出一个在 X 轴上具有时间的图形(用户通过侧边栏选择它,因为他可以选择任何轴,但时间在这里最有意义)。对于 Y 轴,我想要 4 条线,颜色不同,随时间绘制每个变量。
我已经实现了所有“用户接受输入并选择要绘制图形的列”,但为了简单起见,我们可以假设在大多数情况下,这已经被硬编码(所以 Y 变量实际上是 input$y 等在我的实现中)
我尝试绘制数据的代码部分是:
output$plotLine <- renderPlot({
p <- ggplot(data, aes_string(x=X, y=Y), environment = environment())
p <- p + geom_point(size = 3)
p <- p + geom_line(aes(group=1))
print(p)
})
这绘制了其中一条线,但我不知道如何在同一图上绘制其他线。我已经阅读了有关在 aes 函数中使用“组”的信息,但这取决于数据集中有一个分类器,而这个分类器目前没有。
我还研究了 reshape2 包中的 melt() 函数,但不确定它对我有什么帮助(对于多行问题和这个项目的更大意义,这样用户就不必严格遵守csv 的上传格式规则)。
任何帮助将非常感激!