[英]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.