簡體   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