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