Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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
R 修复覆盖几何图形条的顺序,并在ggplot中定位几何图形标识()_R_Ggplot2_Geom Bar - Fatal编程技术网

R 修复覆盖几何图形条的顺序,并在ggplot中定位几何图形标识()

R 修复覆盖几何图形条的顺序,并在ggplot中定位几何图形标识(),r,ggplot2,geom-bar,R,Ggplot2,Geom Bar,关于堆叠的geom_bar()图形的排序,有几个问题。然而,我有一个问题,我需要覆盖条形图,但出于某种原因,排序使其成为最底层被最顶层隐藏。考虑这个例子: df_example = data.frame(Month = rep(c(1:8),2), Type = c(rep("Email",8),rep("SMS",8)), Notifications = c(4,7,9,11,13,17,19,20,2,4,4,3

关于堆叠的
geom_bar()
图形的排序,有几个问题。然而,我有一个问题,我需要覆盖条形图,但出于某种原因,排序使其成为最底层被最顶层隐藏。考虑这个例子:

df_example = data.frame(Month = rep(c(1:8),2),
                    Type = c(rep("Email",8),rep("SMS",8)),
                    Notifications = c(4,7,9,11,13,17,19,20,2,4,4,3,3,3,4,4))
然后,我使用ggplot2和
geom_bar()

得到这个:

问题是覆盖层“隐藏”了较低的层。理想情况下,我希望每个部分都有明确的定义,并用黑色轮廓进行划分。我真的搞不懂,这让我很烦。我正在尝试重新创建这样的内容:

注意,这是在油漆中完成的,所以数字不会排成一行-但是视觉上的想法就在那里


如果您能在这个问题上提供帮助,我们将不胜感激

您可以尝试这样做:添加一个行号,按类型分组,然后使用该行号填充每种颜色并堆叠条形图。然后可以编辑颜色并删除图例

df%>%groupby(Type)%%>%mutate(r=因子(seq(1,n())))%%>%
ggplot(aes(x=类型,y=通知))+
几何图形条(aes(fill=r),stat=“identity”,position=“stack”,color=“black”)+
刻度填充手动(数值=c(代表('lightblue',8)))+
主题(legend.position='none')

更新

您的覆盖思想不会完美地工作,因为您有重复的通知值。请参见下文——首先通过通知排列数据,然后进行打印,实现了纯色覆盖,但隐藏了存在重复的事实(而堆叠条显示了这一点)

df%>%排列(类型,-通知)%>%
ggplot(,aes(x=类型,y=通知))+
几何图形栏(aes(fill='Type')、stat=“identity”、position=“identity”、color=“black”)+
刻度填充手动(数值=c(代表('lightblue',16)))

很公平,我可以这样做,但我希望颜色是纯色。理论上,我可以把alpha=0放入
alpha
,然后在不同的程序上编辑。但这看起来很麻烦,所以,不幸的是,这只起作用,因为您有
position='stack'
。我需要在哪里使用
position=“identity”
position='stack'
为通知提供了一个附加量。这将是不正确的,因为它使8个月后通过电子邮件收到100个通知。我不认为你的覆盖想法更合适,因为它隐藏了一些数据(即重复的通知值)。看更新,没关系。我不介意是否有重叠。你的更新有效。是否真的只是添加了一个
排列
,才产生了不同:/。但是,是的,我很高兴接受你的回答是的,加上
arrange
电话就够了。谢谢
ggplot(data=df_example,aes(x=Type, y=Notifications, fill=Type, color=Type))+
geom_bar(stat="identity",position ="identity", color= "black",alpha=0.5)+
coord_flip()