R graph 仅针对指定级别按级别重新排序因子

标签 r sorting ggplot2 dplyr tidyverse

我正在尝试创建一个图表,其中 x 轴(一个因子)按 y 轴(数值)的降序重新排序,但一个另一个因素的两个水平。

最初,我尝试使用下面的代码:

重新排序(factor1,desc(value1))

但是,此代码仅通过每个 factor2 下的两个值的总和(我假设)重新组织图形(按降序排列);而我只对在 factor2 下的一个级别( “A”)重组数据感兴趣。

这里有一些示例数据可以更好地说明。

sampledata <- data.frame(factor1 = c("A", "A", "B", "B", "C", "C", "D", "D", "E", "E", 
                                     "F", "F", "G", "G", "H", "H", "I", "I", "J", "J"),
                         factor2 = c("A", "H", "A", "H", "A", "H", "A", "H", "A", "H",
                                     "A", "H", "A", "H", "A", "H", "A", "H", "A", "H"), 
                         value1 = c(1, 5, 6, 2, 6, 8, 10, 21, 30, 5, 
                                    3, 5, 4, 50, 4, 7, 15, 48, 20, 21))

这是我之前使用的:

sampledata %>%
   ggplot(aes(x=reorder(factor1, desc(value1)), y=value1, group=factor2, color=factor2)) + 
    geom_point()

我想按特定级别(比如 factor2=="A")重新排序 的原因是我可以查看 值的任何偏差code>factor2=="H" 远离 "A" 点。

我希望使用 tidyversedplyr 作为解决此问题的方法。

最佳答案

library(ggplto2)
library(dplyr)

sampledata %>% 
  mutate(value2 = +(factor2=="A")*value1) %>% 
  ggplot(aes(x=reorder(factor1, desc(value2 + value1/max(value1))), y=value1, 
             group=factor2, color=factor2)) + 
  geom_point() +
  xlab("factor1")

关于R graph 仅针对指定级别按级别重新排序因子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57859196/

相关文章:

python - 按 utf-8 的降序对字典进行排序

list - haskell列表和功能

r - ggplot2:在函数中表示时间

class - S3 类名称 : What's Allowed?

r - 在自定义函数中使用 mutate 以突变条件作为参数

r - GmailR 不断要求重新验证——还有更好的选择吗?

c++ - 组合相同的唯一 ID 项目

r 来自 Excel CSV 文件的分组条形图

r - 如何在 geom_box 图上自定义与框本身的线条不同的晶须线

r - 如何将点添加到堆叠条形图