使用 glue::glue 粘贴会更改 facet 中值的顺序

pasting with glue::glue changes order of values in facet

基于此响应 ,我成功创建了一个在 facet 标签中包含希腊字母的 ggplot。

但是胶水库改变了我标签FacetX的顺序,我该如何处理?

这是我的问题示例,我想要 500 - 1000 - 5000 而不是 1000 - 500 - 5000。

library(ggplot2)
library(glue)

df <- expand.grid(1:3, 1:3)
df$FacetX <- c(500,1000,5000)[df$Var1]
df$FacetY <- c(0.1, 1, 10)[df$Var2]

ggplot(df, aes(Var1, Var2)) +
  geom_point() +
  facet_grid(glue('sigma[E]^2*" = {FacetY}"') ~ glue("'p = {FacetX}'"), 
             labeller = label_parsed)

最佳,

这与希腊字母无关,但 glue::glue 的使用会扰乱您的关卡。 (它根据递增的值分配等级顺序,这里1<5)

您可以使用 forcats::fct_inorder 来防止这种情况

library(ggplot2)
library(glue)

df <- expand.grid(1:3, 1:3)
df$FacetX <- c(500,1000,5000)[df$Var1]
df$FacetY <- c(0.1, 1, 10)[df$Var2]

ggplot(df, aes(Var1, Var2)) +
  geom_point() +
  facet_grid(glue('sigma[E]^2*" = {FacetY}"') ~ forcats::fct_inorder(glue("'p = {FacetX}'")), 
             labeller = label_parsed)

reprex package (v2.0.1)

于 2022-04-06 创建