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 轴上绘制年份。
- 将蓝色组中的直方图着色为蓝色,
- 要着色的绿色组直方图
- 当 Status=Pre 时为灰色,
- 当 Status=Current 时为绿色。
- 当状态 = Post
时为黄色
- 在直方图的每个条形顶部添加一个显示计数的标签。
类似下面的内容[请注意以下示例中的颜色与上述附加要求不符]。
我可以使用 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="identity
和 bins=10
你会得到这个:
library(ggplot2)
df %>%
ggplot(aes(x = N, fill = Status)) +
geom_histogram(position = "identity", alpha = 0.3, bins = 10) +
theme_bw()
我有一个数据集,其中包含不同组中的组,如下所示
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 轴上绘制年份。
- 将蓝色组中的直方图着色为蓝色,
- 要着色的绿色组直方图
- 当 Status=Pre 时为灰色,
- 当 Status=Current 时为绿色。
- 当状态 = Post 时为黄色
- 在直方图的每个条形顶部添加一个显示计数的标签。
类似下面的内容[请注意以下示例中的颜色与上述附加要求不符]。
我可以使用 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="identity
和 bins=10
你会得到这个:
library(ggplot2)
df %>%
ggplot(aes(x = N, fill = Status)) +
geom_histogram(position = "identity", alpha = 0.3, bins = 10) +
theme_bw()