R 如何使刻面内的行根据另一个向量的级别显示?

R 如何使刻面内的行根据另一个向量的级别显示?,r,ggplot2,facet,R,Ggplot2,Facet,目标是在每个方面中从上到下显示“名称”,并增加“开始时间”。A面是错误的;面B是正确的 library(tidyverse) my_tribble <- tribble( ~name, ~order.x, ~startTime, ~endTime, ~order.y, ~endTime.y, ~diff, ~area, "unit1", "dump", 0, 1, "wait", 2, 2, "A",

目标是在每个方面中从上到下显示“名称”,并增加“开始时间”。A面是错误的;面B是正确的

library(tidyverse)
my_tribble <- tribble(
  ~name, ~order.x,  ~startTime, ~endTime, ~order.y, ~endTime.y, ~diff, ~area,
  "unit1", "dump", 0, 1, "wait", 2, 2, "A",
  "unit3", "dump", 5, 7, "wait", 9, 4, "A",
  "unit4", "dump", 8, 9, "wait", 10, 2, "B",
  "unit2", "dump", 17, 20, "wait", 23, 6, "B"
)

ggplot(my_tribble) +
  geom_linerange(aes(ymin = startTime, ymax = endTime.y, x = name),position = position_dodge(width = 0.2), size = 2) +
  facet_grid(area ~ ., scales = "free_y") +
  coord_flip() +
  scale_x_reordered() +
  scale_y_continuous(expand = c(0,0))
库(tidyverse)

my_tribble
my_tribble$name几乎所有问题,包括
ggplot2
和“顺序”都是通过使用
因子来解决的,并控制其中的
级别。我看到了您的解决方案。谢谢我看到了许多与您类似的示例,但没有一个以相同的方式使用order()函数。此外,我认为我误解了“levels”参数的含义。您使用“-my_tribble$startTime”会产生很大的不同。为什么要用“-”呢?看起来我应该可以把最小的开始时间作为最小的值。。。而不是颠倒顺序。y轴底部的值最低(排序第一)。由于您希望从顶部向下跟踪最低值,因此我们需要颠倒顺序。一种方法是使用R的
rev
功能;另一种方法是对值的负数进行排序。