Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
仅在geom_bar中绘制变量的最常见级别_R_Ggplot2_Geom Bar - Fatal编程技术网

仅在geom_bar中绘制变量的最常见级别

仅在geom_bar中绘制变量的最常见级别,r,ggplot2,geom-bar,R,Ggplot2,Geom Bar,在我的数据集中,我有一个专栏“化疗”,它有800多个不同的水平。我想画出最常见的,比如说,每年10种化疗患者 我不知道的是如何让geom_bar只显示选定频率的级别 这可以在diamonds数据集中表示,在这里我只想显示cut的3个最常见级别 库(“ggplot2”) 图书馆(“dplyr”) 图书馆(“forcats”) 钻石%>% ggplot(aes(x=fct_informeq(因子(切割)))+ geom_bar(aes(y=(…计数)/总和(…计数))*100) 图表显示了每个级别

在我的数据集中,我有一个专栏“化疗”,它有800多个不同的水平。我想画出最常见的,比如说,每年10种化疗患者

我不知道的是如何让geom_bar只显示选定频率的级别

这可以在
diamonds
数据集中表示,在这里我只想显示
cut
的3个最常见级别

库(“ggplot2”)
图书馆(“dplyr”)
图书馆(“forcats”)
钻石%>%
ggplot(aes(x=fct_informeq(因子(切割)))+
geom_bar(aes(y=(…计数)/总和(…计数))*100)

图表显示了每个级别的频率,但我想只显示前3个级别

这里有一个选项,在运行
ggplot
调用并使用
geom\u col
之前汇总和过滤数据帧:

diamonds %>% 
  group_by(cut) %>% 
  count(sort = TRUE) %>% 
  ungroup() %>% 
  slice(1:3) %>% 
  mutate(pct = n / sum(n)) %>% 
  ggplot(aes(x = cut, y = pct)) +
  geom_col()

对cardinal40答案的修改,以添加有关颜色的信息

库(“ggplot2”)
图书馆(“dplyr”)
图书馆(“forcats”)
钻石%>%
分组依据(切割、颜色)%>%
计数(排序=真)%>%
切片(1:3)%>%
解组()%>%
突变(pct=n/和(n))%>%
ggplot(aes(x=切割,y=pct,填充=颜色))+
geom_col()

谢谢您的回复。问题是,如果我按照你的方式来做,我不知道如何给情节增加额外的美感,因为数据已经被修改了。在我的数据中,我想使用facet_wrap(~year),但您的方法不允许我这样做。以钻石为例,如何将aes(填充=颜色)添加到您制作的图形中?如果您想将年份信息添加到绘图中,您需要更改过滤
diamonds
的dplyr代码。不确定@alanocalaghan是什么意思?在本例中,
ggplot
之前的所有内容都是
dplyr
用于汇总
diamonds
的代码。如果你想包含年份信息,你必须在分组阶段包含它。请参见我的答案以获取示例。这可能不是你想要完成的,但是这个想法应该会有帮助。谢谢你的回复。然而,这种方式我无法只绘制切割的前3个因素,这是我的另一个要求。看起来这两种方法是互斥的?不,您只需要更改代码,以您想要的方式过滤数据。你试过修改dplyr代码吗?
diamonds%%>%groupby(cut,color)%%>%count(sort=TRUE)%%>%ungroup()%%>%groupby(color)%%>%slice(1:3)%%>%ungroup()%%>%mutate(pct=n/sum(n))%%>%ggplot(aes(x=cut,y=pct,fill=color))+geom\u col()