繁体   English   中英

如何在单个绘图ggplot2中绘制多条线?

[英]How to graph multiple lines in a single plot ggplot2?

我正在开发一个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变量实际上是输入$ 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)
})

这将绘制其中一条线,但我不知道如何在同一条线上绘制其他线。 我已经读过有关在es函数中使用“组”的信息,但这取决于在数据集中有一个分类器,而该分类器目前还没有。

我还从reshape2包中研究了melt()函数,但不确定如何解决(这对于多行问题和项目意义更大,因此用户不必遵守严格的规范)。 csv上传格式的规则)。

任何帮助将非常感激!

假设您将xaxis变量(Date)放在selectedxaxis ,则将所选产品放入selectedproducts ,并且data包含已加载的数据:

selectedxaxis = "Date"
selectedproducts = c("Sodas", "Salads")
widedata = subset(data, select = c(selectedxaxis, selectedcolumns))

longdata = melt(widedata, id.vars=selectedxaxis, variable.name='Product', value.name='Count')
ggplot(longdata) + geom_line(aes(Date, Count, color=Product))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM