r - ggplot2 - geom_histogram 来自计数

r - ggplot2 - geom_histogram from count

我有一个数据集,其中包含不同组中的组,如下所示

    Year    Status     Group  N
    1992    Pre        Blue   7
    1993    Pre        Blue   2
    1995    Pre        Blue   11
    2002    Pre        Blue   10
    2003    Pre        Blue   8
    2006    Post       Green  7
    2007    Post       Green  14
    2008    Post       Green  13
    2009    Post       Green  9
    2010    Post       Green  7
    2011    Pre        Blue   3
    2011    Post       Green  2
    2012    Pre        Blue   2
    2012    Post       Green  4
    2013    Pre        Blue   5
    2013    Post       Green  2
    2014    Pre        Blue   4
    2014    Post       Green  10
    2015    Current    Blue   12
    2015    Post       Green  8
    2016    Current    Blue   3
    2016    Post       Green  5
    2017    Current    Blue   13
    2017    Post       Green  6
    2018    Pre        Blue   2
    2018    Post       Green  7
    2019    Pre        Blue   9
    2019    Post       Green  7

我想做的是按组在 Y 轴上绘制计数(N 列),在 x 轴上绘制年份。

类似下面的内容[请注意以下示例中的颜色与上述附加要求不符]。

我可以使用 geom_bar 绘制此图,但不确定如何将这些不同的计数按组绘制为直方图,非常感谢任何帮助。

ggplot(df, aes(Year, N)) +
  geom_bar(aes(fill=Group), position="dodge", stat="identity", width=.5)+
  geom_text(aes(label=N, group=Group), position=position_dodge(width=0.5), vadjust=-0.5)+
theme_bw(base_size=18)+
ylab('Bedbugs') + xlab('Year')

使用您的数据(我们称之为 df)和颜色定义,似乎只有蓝色和黄色,但据推测您的数据比这更多 您可以这样处理它:

df <- df %>%
  mutate(color=case_when(
    Group=="Blue"~"Blue",
    Group=="Green" & Status=="Pre" ~ "Green/Pre",
    Group=="Green" & Status=="Current"~ "Green/Curent",
    Group=="Green" & Status=="Post"~ "Yellow"))

colors = c("Blue"="blue","Green/Pre" = "grey","Green/Current" = "green","Yellow" = "yellow")

ggplot(df, aes(Year, N, color=color, fill=color)) +
  geom_bar(position="dodge", stat="identity", width=.5)+
  geom_text(aes(label=N,group=Group), position=position_dodge(width=0.5), vjust=-0.5, color="black")+
  scale_color_manual(values=colors)+
  scale_fill_manual(values=colors)+
  theme_bw(base_size=18,)+
  ylab('Count') + xlab('BedBugs')

我认为主要问题是直方图重叠。使用 position="identitybins=10 你会得到这个:

library(ggplot2)

df %>% 
  ggplot(aes(x = N, fill = Status)) +
  geom_histogram(position = "identity", alpha = 0.3, bins = 10) +
  theme_bw()