Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.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中的ggplot2,根据方框大小对方框图重新排序_R_Ggplot2 - Fatal编程技术网

使用R中的ggplot2,根据方框大小对方框图重新排序

使用R中的ggplot2,根据方框大小对方框图重新排序,r,ggplot2,R,Ggplot2,我使用箱线图来显示5个不同数据集之间的分布 我知道可以根据它们的中值来排列它们 我想要的是根据第一个四分位数和第三个四分位数之间的差异来排列它们 显然,我不想通过重新排列级别来手动排列它们 我已经用tidyverse group_by解决了这个问题,总结并计算了所需四分位数之间的差异,并用它来排列方框 如果有人需要代码或有更好的解决方案,请告诉我 谢谢。以下是我如何根据第一个四分位数和第三个四分位数之间的差异排列箱线图。“df”是您的data.frame,“column1”是您要根据其进行分组的

我使用箱线图来显示5个不同数据集之间的分布

我知道可以根据它们的中值来排列它们

我想要的是根据第一个四分位数和第三个四分位数之间的差异来排列它们

显然,我不想通过重新排列级别来手动排列它们

我已经用tidyverse group_by解决了这个问题,总结并计算了所需四分位数之间的差异,并用它来排列方框

如果有人需要代码或有更好的解决方案,请告诉我


谢谢。

以下是我如何根据第一个四分位数和第三个四分位数之间的差异排列箱线图。“df”是您的data.frame,“column1”是您要根据其进行分组的列,“column2”包含您试图查看其分布的值

DisTable <- df %>%
        group_by(column1) %>%
        summarise(Min=quantile(column2,probs=0.0),
                  Q1=quantile(column2, probs=0.25),
                  Median=quantile(column2, probs=0.5),
                  Q3=quantile(column2, probs=0.75),
                  Max=quantile(column2,probs=1),
                  DiffQ3Q1=Q3-Q1) %>%
        arrange(desc(DiffQ3Q1))

bporder <- as.character(DisTable$column1)

ggplot(df,aes(x=factor(df$column1,levels=bporder),y=column2,fill=column1))+
        geom_boxplot()
DisTable%
分组依据(第1列)%>%
总结(最小值=分位数(第2列,概率=0.0),
Q1=分位数(第2列,probs=0.25),
中位数=分位数(第2列,概率=0.5),
Q3=分位数(第2列,probs=0.75),
最大值=分位数(第2列,probs=1),
DiffQ3Q1=Q3-Q1)%>%
排列(描述(DiffQ3Q1))

bporder下面是我如何根据第1个四分位数和第3个四分位数之间的差异对箱线图进行排序的。“df”是您的data.frame,“column1”是您要根据其进行分组的列,“column2”包含您试图查看其分布的值

DisTable <- df %>%
        group_by(column1) %>%
        summarise(Min=quantile(column2,probs=0.0),
                  Q1=quantile(column2, probs=0.25),
                  Median=quantile(column2, probs=0.5),
                  Q3=quantile(column2, probs=0.75),
                  Max=quantile(column2,probs=1),
                  DiffQ3Q1=Q3-Q1) %>%
        arrange(desc(DiffQ3Q1))

bporder <- as.character(DisTable$column1)

ggplot(df,aes(x=factor(df$column1,levels=bporder),y=column2,fill=column1))+
        geom_boxplot()
DisTable%
分组依据(第1列)%>%
总结(最小值=分位数(第2列,概率=0.0),
Q1=分位数(第2列,probs=0.25),
中位数=分位数(第2列,概率=0.5),
Q3=分位数(第2列,probs=0.75),
最大值=分位数(第2列,probs=1),
DiffQ3Q1=Q3-Q1)%>%
排列(描述(DiffQ3Q1))

bporder您是指四分位间距(
IQR()
)?如果是这样的话,你可以这样做

diamonds %>% 
  as.tibble() %>% 
  ggplot(aes(reorder(cut, price, IQR), price)) + 
   geom_boxplot() 

您是指四分位范围(
IQR()
)吗?如果是这样的话,你可以这样做

diamonds %>% 
  as.tibble() %>% 
  ggplot(aes(reorder(cut, price, IQR), price)) + 
   geom_boxplot() 

问题很有趣,但不清楚,请根据以下内容阅读并编辑您的问题:。添加示例数据、您获得的输出和预期输出。还有,盒子的大小是多少?也许可以尝试这个链接,但将函数改为表示范围的函数:例如,我想这是许多类似问题的重复,你可以在这里找到这些问题;e、 g.以及其中的其他链接。这些帖子中提供的答案演示了如何根据各种指标在箱线图中重新排序方框。除非你能用一个可复制的代码示例(见@PoGibas comment)演示这些答案如何不能解决你的问题,否则我投票以重复的形式结束这个问题。我不认为这个问题是重复的,因为我找不到我想要的东西。可能我没有完全解释。问题很有趣,但不清楚,请根据以下内容阅读并编辑您的问题:。添加示例数据、您获得的输出和预期输出。还有,盒子的大小是多少?也许可以尝试这个链接,但将函数改为表示范围的函数:例如,我想这是许多类似问题的重复,你可以在这里找到这些问题;e、 g.以及其中的其他链接。这些帖子中提供的答案演示了如何根据各种指标在箱线图中重新排序方框。除非你能用一个可复制的代码示例(见@PoGibas comment)演示这些答案如何不能解决你的问题,否则我投票以重复的形式结束这个问题。我不认为这个问题是重复的,因为我找不到我想要的东西。也许我没有充分解释。