日期箱内变量计数的堆积条形图
Posted
技术标签:
【中文标题】日期箱内变量计数的堆积条形图【英文标题】:Stacked Bar Graph of Count of Variables within date bins 【发布时间】:2018-08-15 22:52:13 【问题描述】:使用 R,我正在尝试按日期制作不同结算类型计数的简单堆叠条形图。我有 3 种计算日期的方法。下面是我的数据库示例
ID Settlement Start End Mid
01 Urban 200 400 300
02 Rural 450 850 650
03 Military 1300 1400 1350
04 Castle 2 1000 501
到目前为止我有
count(ratData, vars = "结算")
返回
Settlement freq
1 78
2 Castle 25
3 Cave 3
4 Fortification 5
5 Hill Fort 2
6 Industrial (quarry) 1
7 Manor 2
8 Military 4
9 Military camp 1
10 Military Camp 3
11 Military site 1
12 Mining 1
13 Monastic 15
14 Monastic/Rural? 1
15 Port 5
16 River-site 2
17 Roman fort 1
18 Roman Fort 1
19 Roman settlement 3
20 Rural 22
21 Settlement 2
22 urban 1
23 Urban 123
24 Villa 4
25 Wic 13
然后绘制
ggplot(v, aes(x=Settlement, y=freq)) + geom_bar(stat='identity', fill='lightblue', color='black')
但是,这会在 x 轴上显示定居类型,而不是堆叠定居类型。这是缺少日期数据。我想将它们从 1-1500 分到 100 年的箱子中,并制作每个箱子的定居类型堆积条形图,以说明随着时间的推移存在。
【问题讨论】:
我们需要更多信息。你想用来装箱的变量是什么?开始?结尾?中? Mid 最合适 【参考方案1】:这应该可以解决问题。 cut
函数在这种情况下非常有用,在这种情况下,您需要根据某个连续变量的范围创建分类变量。我已经选择了Tidyverse
路线,但也有基本的 R 选项。
library(dplyr)
library(ggplot2)
# Some dummy data that resembles your problem
s <- data.frame(ID = 1:100,
Settlement = c(rep('Urban', 50), rep('Rural', 20), rep('Military', 10), rep('Castle', 20)),
Start = signif(rnorm(100, 500, 100), 2),
End = signif(rnorm(100, 1000, 100), 2))
s$Mid <- s$Start + ((s$End - s$Start) / 2)
# Find the range of the mid variable to decide on cut locations
r <- range(s$Mid)
# Make a new factor variable based year bins - you will need to change to match your actual data
s$group <- cut(s$Mid, 5, labels = c('575-640', '641-705', '706-770', '771-835', '836-900'))
# Frequency count per factor level
grouped <- s %>%
group_by(group) %>%
count(Settlement)
# You'll need to clean up axis labels, etc.
ggplot(grouped, aes(x = group, y = n, fill = Settlement)) +
geom_bar(stat = 'identity')
【讨论】:
以上是关于日期箱内变量计数的堆积条形图的主要内容,如果未能解决你的问题,请参考以下文章