我在 R 中使用 2 个变量创建直方图时遇到问题。问题是我需要绘制一个包含 2 个变量(年份和收入)的直方图,这是我从数据集中获取的。我需要以某种方式绘制直方图,以便年份变量位于横轴上,收入变量位于 y 轴上。因此,直方图应显示每年的收入值。如何在 R 中编写代码来绘制这种直方图?
我无法编写脚本,因为绘制直方图的普通代码只需要一个变量,并且会自动显示该变量的频率。
新编辑 我专注于这篇文章的标签,后来才意识到,您对
ggplot
感兴趣。请看最后
作为您进一步学习的开始,我想创建一个人造 DF,我相信它与您可能想到的类似。
library(tidyverse)
set.seed(1)
df <- tibble(
year = sample(2000:2001, replace = T, 100),
income = rnorm(100, mean = 100000, sd=1000)
)
它是一个 DF,有 2 个变量 -
year
和 income
。
您可以轻松制作每年(只有 2 年)的 income
的 直方图。您将认识到
hist
将变量 income
分解为 bins
并计算每个 bin
中的条目数。这里是分别按年份进行的。
par(mfrow=c(1,2))
hist(df$income[df$year == 2000], main = "2000", xlab="", ylim = c(0,14))
hist(df$income[df$year == 2001], main = "2001", xlab="", ylim = c(0,14))
正如您希望在 x 轴上有
year
一样,我将每年的所有收入相加并制作了 barplot
。这不是直方图。
ddf <- df |>
group_by(year) |>
summarise(income = sum(income))
par(mfrow=c(1,1))
barplot(income~year, data = ddf)
GGPLOT
ggplot(df, aes(income, fill = factor(year))) +
geom_histogram(color = "white")+
facet_wrap(~year, nrow = 1)
ggplot(df, aes(factor(year), income,fill = factor(year))) +
geom_col()
您将在R这里找到有关图形的有用信息。