ggplot:当按刻面_包裹中的数值对两个因子重新排序时,正确的标签(而不是如其他问题中所示的刻面_网格)

ggplot:当按刻面_包裹中的数值对两个因子重新排序时,正确的标签(而不是如其他问题中所示的刻面_网格),plot,ggplot2,factors,geom-bar,Plot,Ggplot2,Factors,Geom Bar,我一直在尝试做一些看起来应该很简单的事情,但我不能正确地做,用一个数值对分组的几何图形进行重新排序。阅读这里的其他问题,有人建议对因子使用重新排序,但在这里似乎被忽略了。如果可能的话,我想避免使用grid.arrange,因为我喜欢facets,但我不知道还有什么可以尝试,欢迎您提出任何建议 在阅读了建议的帖子之后,所有的工作都是重新排列数据,这些例子都是用facet_grid,但是我想我的“a”组在两个不同的行中,所以我需要使用facte_wrap,我想没有什么能正确标记facet_wrap中

我一直在尝试做一些看起来应该很简单的事情,但我不能正确地做,用一个数值对分组的几何图形进行重新排序。阅读这里的其他问题,有人建议对因子使用重新排序,但在这里似乎被忽略了。如果可能的话,我想避免使用grid.arrange,因为我喜欢facets,但我不知道还有什么可以尝试,欢迎您提出任何建议

在阅读了建议的帖子之后,所有的工作都是重新排列数据,这些例子都是用facet_grid,但是我想我的“a”组在两个不同的行中,所以我需要使用facte_wrap,我想没有什么能正确标记facet_wrap中的x轴。。。我已经走了这么远:

df <- data.frame(a = factor(c(1,1,2,1,2,2,1,2)), 
         b = factor(c(1,2,3,4,5,6,7,2)), 
         colb = as.character(c("#00AF4F", "#000FEF", "#004FAF", "#003FBF", "#008F6F", "#00DF1F", "#002FCF", "#000FEF")),
         c = factor(c(1,2,1,2,1,2,1,2)),
         value= 1:8)
感谢下面的帮助,这是工作

df <- transform(df, category2 = factor(paste(a, b)))
df <- transform(df, category2 = reorder(category2, rank(value)))

ggplot(df, aes(category2, value, fill=colb)) +
  geom_bar(stat = "identity") +
 facet_grid(. ~ a, scales = "free_x") +
 scale_x_discrete(labels=df$b, breaks=df$category2)
现在有了正确的标签!谢谢你,史密斯

ggplot(df, aes(category2, value, fill=colb)) +
geom_bar(stat = "identity") + scale_x_discrete(labels=df$b, breaks=df$category2) + facet_wrap( ~ a, nrow=2, scales = "free_x")

我做错了什么?如果没有使用facet_wrap的解决方案,是否有其他方法可以将组放置在单独的网格中?这几天来我一直在忙这个…非常感谢您的帮助。。。非常感谢……

谢谢你,史密斯!是的,虽然我不能让ti正常工作:嗯,是的,但它不工作…库(dplyr)df=df%>%group\u by(c)%%>%mutate(position=rank(-value))ggplot(df,aes(c,value,fill=colb,group=position))+geom\u条(position=“dodge”,stat=“identity”)+scale\u fill\u手册(values=df$b)+facet\u wrap(~a)看到另一个选择。好的,这几乎让我达到了我需要的地方,但不完全。。。我正在努力重新定义x轴标签:df=ddply(df,.(c),transform,hrank=rank(value));ggplot(df,aes(-hrank,value,fill=colb))+geom_bar(position=“dodge”,stat=“identity”)+facet_wrap(~c,nrow=3)+scale_x_离散(labels=df$variable,breaks=df$hrank)scale_x_离散不起作用……我已经尝试了所有我没有资源的方法。。。任何想法都会很有帮助……你忘了
scales=“free\u x”
?没有理由我知道这个答案不适用于
facet\u wrap
…请准确地尝试以下内容。请注意前两个步骤,其中创建一个由x变量和facet变量组合而成的变量,然后对该变量进行排序。然后遵循算法的其余部分,除了使用
facet\u wrap
。如果这个情节不是你想要的,你可能需要澄清你是如何描绘最终产品的。谢谢你,史密斯!是的,虽然我不能让ti正常工作:嗯,是的,但它不工作…库(dplyr)df=df%>%group\u by(c)%%>%mutate(position=rank(-value))ggplot(df,aes(c,value,fill=colb,group=position))+geom\u条(position=“dodge”,stat=“identity”)+scale\u fill\u手册(values=df$b)+facet\u wrap(~a)看到另一个选择。好的,这几乎让我达到了我需要的地方,但不完全。。。我正在努力重新定义x轴标签:df=ddply(df,.(c),transform,hrank=rank(value));ggplot(df,aes(-hrank,value,fill=colb))+geom_bar(position=“dodge”,stat=“identity”)+facet_wrap(~c,nrow=3)+scale_x_离散(labels=df$variable,breaks=df$hrank)scale_x_离散不起作用……我已经尝试了所有我没有资源的方法。。。任何想法都会很有帮助……你忘了
scales=“free\u x”
?没有理由我知道这个答案不适用于
facet\u wrap
…请准确地尝试以下内容。请注意前两个步骤,其中创建一个由x变量和facet变量组合而成的变量,然后对该变量进行排序。然后遵循算法的其余部分,除了使用
facet\u wrap
。如果这个图不是你想要的,你可能需要明确你是如何描绘最终产品的。
ggplot(df, aes(category2, value, fill=colb)) +
 geom_bar(stat = "identity") +
 facet_wrap( ~ a, nrow=2, scales = "free_x")
ggplot(df, aes(category2, value, fill=colb)) +
geom_bar(stat = "identity") + scale_x_discrete(labels=df$b, breaks=df$category2) + facet_wrap( ~ a, nrow=2, scales = "free_x")