簡體   English   中英

帶有ggplot2的條形圖/折線圖

[英]Barchart/line graph with ggplot2

我剛剛開始學習R,並且遇到了有關圖構造的問題。

我有一個df,其中str(df)給出了

Date : chr  
Hour : int  
Street 1: int  
Street 2: int  
..  
Street 15: int  

日期是一個月中的每一天,小時是一天中的每個小時,街道數據會顯示一天中該小時的街道流量。

我想在ggplot上制作條形圖,以顯示一個月內每條街道的總流量,以顯示流量最大的街道,但是當我嘗試使用ggplot繪制圖形時,還包括小時數據,這會破壞圖形。

我瀏覽了堆棧溢出時已經問過的各種問題,並嘗試融合數據,但是我做錯了或者它不適用於我的數據,因為它仍然無法正常工作。
通過執行以下操作,我可以達到一個非常簡單的解決方案:

df2 <- colSums(df[3:15], na.rm = TRUE)  
barplot(df2, las=2, xlab="Street", ylab="Amount of People", main="Pedestrian Traffic For January", cex.lab=0.75, ylim=c(0,1500000))  

但是此圖非常基礎,我無法修改x軸標簽。

我還想制作一條折線圖,顯示一條街道每小時的總流量,但我認為是因為存在多個小時數據值(例如1/1小時1的數據,然后2/1小時1的數據,等等)折線圖不顯示一條線。

編輯:
head(df):還有更多街道,但是為了格式化,我只發布了前3條街道的數據。

    Date       Hour     Street 1                Street 2            Street 3
1 01/01/2014    0          1544                   893                   404
2 01/01/2014    1          1401                   224                   179
3 01/01/2014    2           608                   127                    97
4 01/01/2014    3           360                   108                    74
5 01/01/2014    4           156                    75                    33
6 01/01/2014    5            69                    20                     8

因為我沒有您使用的實際數據,所以我只生成了一個隨機數據集。

require(tidyverse)

# Random Data
df <- data.frame(date = seq(31), hour = rep(seq(24), 31), Street1 = 
                                        rpois(24*31, 5), 
                                        Street2 = rpois(24*31, 10),
                                        Street3 = rpois(24*31, 15))

# Transform to long format
df %>%
  gather(key, value,-date, -hour) -> df

# Create bar chart
g <- ggplot(df, aes(x = as.factor(key), y = value))
g <- g + geom_bar(stat="identity")
g <- g + xlab("Street") + ylab("Pedestrian Traffic for January")
g

該代碼將輸出以下圖表: 在此處輸入圖片說明

您可以通過更改“鍵”列的因子標簽輕松更改x標簽。

折線圖可以通過以下代碼創建:

# Summarize the hourly data
df %>%
  group_by(date,key) %>%
  summarise(value = sum(value)) -> df

g <- ggplot(df, aes(x = date, y = value, color = key))
g <- g + geom_line()
g

這將輸出以下圖表: 在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM