R - 在较小值范围内随时间观察的图形频率

tom*_*tom 7 plot visualization r

我试图绘制观察频率随时间变化的情况.我有一个数据集,其中数百个法则编码为0-3.我想知道结果2-3是否随着时间的推移更频繁地发生.以下是模拟数据的示例:

Data <- data.frame(
  year = sample(1998:2004, 200, replace = TRUE),
  score = sample(1:4, 200, replace = TRUE)
)
Run Code Online (Sandbox Code Playgroud)

如果我情节

plot(Data$year, Data$score)
Run Code Online (Sandbox Code Playgroud)

我得到一个格子矩阵,每个点填充,但我不知道哪些数字更频繁出现.有没有办法根据给定行/年的观察数量来着色或改变每个点的大小?

一些注释可能有助于回答这个问题:

1).我不知道如何对某些数字出现频率高于其他数字的数据进行抽样.我的样本程序从所有数字中均等地采样.如果有更好的方法我应该创建可重现的数据以反映后来的更多观察结果,我想知道如何.

2).这似乎最好是在散点图中可视化,但我可能是错的.我对其他可视化开放.

谢谢!

Dav*_*urg 5

这是我如何接近这个(希望这是你需要的)

创建数据(注意:sample在问题中使用时,请始终使用,set.seed以便重现)

set.seed(123)
Data <- data.frame(
  year = sample(1998:2004, 200, replace = TRUE),
  score = sample(1:4, 200, replace = TRUE)
)
Run Code Online (Sandbox Code Playgroud)

查找score每次year使用的频率table

Data2 <- as.data.frame.matrix(table(Data))
Data2$year <- row.names(Data2)
Run Code Online (Sandbox Code Playgroud)

使用melt将其转换回长格式

library(reshape2)
Data2 <- melt(Data2, "year")
Run Code Online (Sandbox Code Playgroud)

绘制数据,同时显示每组不同的颜色和预先频率的相对大小

library(ggplot2)
ggplot(Data2, aes(year, variable, size = value, color = variable)) +
  geom_point()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

或者,你可以同时使用fillsize描述的频率,像

ggplot(Data2, aes(year, variable, size = value, fill = value)) +
  geom_point(shape = 21)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


tal*_*lat 5

这是另一种方法:

ggplot(Data, aes(year)) + geom_histogram(aes(fill = ..count..)) + facet_wrap(~ score)
Run Code Online (Sandbox Code Playgroud)

图片

每个方面代表一个“分数”值,如每个方面的标题中所述。通过查看条形的高度+颜色(浅蓝色表示更多计数),您可以轻松了解计数。


当然,score %in% 2:3如果您不想包含分数 1 和 4,您也可以仅对 执行此操作。在这种情况下,你可以这样做:

ggplot(Data[Data$score %in% 2:3,], aes(year)) + 
     geom_histogram(aes(fill = ..count..)) + facet_wrap(~ score)
Run Code Online (Sandbox Code Playgroud)