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