反转离散数据的 y 轴

Reversing the y axis on discrete data

我有一个用 ggridges 构建的图表,如下所示,我想反转日期顺序:

为此,我添加了 c_trans() 函数,定义为 ,但它需要 posixct 格式的日期,这似乎将日期转换为连续刻度,即使我将组定义为一个因素:

  ggplot( lengthCounts2 %>% filter(rwi == rwiFilter), 
        aes( x = len, 
             fill = date,
             group= factor(date)
             )
        ) +
  stat_density( aes( weight = normalised, 
                     y = date, # time_trans works with objects of class POSIXct only
                     height = after_stat(density)
                     ), 
                geom = 'density_ridges', 
                position = 'identity',
                adjust = 0.1
                ) +
  scale_y_continuous(trans  = rev_date) +
  theme_minimal() +
  theme( plot.title = element_text(hjust=0.5)
         ) +
  # scale_fill_brewer(palette = "Pastel1") +
  labs( title = glue("Sampled/normalised packet size distribution for rwi={rwiFilter} ({rwiText})\n"),
        x ="Length (bytes)", 
        y = "Date"
        )

所以我最终得到 ,这显然不是我想要的。有什么方法可以反转 y 轴但保持离散?

Input data:

> lengthCounts2
# A tibble: 8,724 x 5
# Groups:   date, rwi [6]
   date                rwi     len       n normalised
   <dttm>              <chr> <dbl>   <int>      <dbl>
 1 2022-04-13 00:00:00 01       35     677  0.0000319
 2 2022-04-13 00:00:00 01       40 3113138  0.147    
 3 2022-04-13 00:00:00 01       41   15078  0.000710 
 4 2022-04-13 00:00:00 01       42    2077  0.0000978
 5 2022-04-13 00:00:00 01       43    2554  0.000120 
 6 2022-04-13 00:00:00 01       44   29190  0.00137  
 7 2022-04-13 00:00:00 01       45    2065  0.0000972
 8 2022-04-13 00:00:00 01       46    2054  0.0000967
 9 2022-04-13 00:00:00 01       47    2625  0.000124 
10 2022-04-13 00:00:00 01       48  146334  0.00689  
# ... with 8,714 more rows

使用:

ylim("20220427", "20220420", "20220413")