我刚刚开始学习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):街道比较多,但为了格式化,我只发布了前三条街道的数据。
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
答案 0 :(得分:0)
因为我没有您使用的实际数据,所以我只生成了一个随机数据集。
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