【问题标题】:How do I reorder plot by multiple variables?如何按多个变量重新排序图?
【发布时间】:2021-09-13 10:17:37
【问题描述】:

我正在尝试先按am 重新排序绘图,然后再按mpg。使用 ggplot2 附加在 R 中的结果中。

我尝试使用 siuba 和 plotnine 获得相同的结果。以下是我目前的代码。

(
mtcars 
    >> arrange(_.am, _.mpg)
    >> mutate(model = fct_reorder(_.model, _.am))
    >> ggplot(aes(y="mpg", x="model", fill='factor(am)'))
    + geom_col()
    + labs(fill = "Automatic/Manual Transmission")
    + coord_flip()
)

【问题讨论】:

标签: plotnine


【解决方案1】:

如果我应该在 R 中复制你的情节,我会使用 dplyr::arrange + forcats::fct_inorder。由于siuba 不提供与fct_inorder 等效的功能,您可以通过首先按所需顺序排列、添加行号的索引列并按此索引列重新排序来实现所需的结果:

from plotnine import *
from siuba import _, arrange, mutate
from siuba.dply.forcats import fct_reorder
(
mtcars 
    >> arrange(-_.am, _.mpg)
    >> mutate(model = fct_reorder(_.model, _.reset_index().index))
    >> ggplot(aes(y="mpg", x="model", fill='factor(am)'))
    + geom_col()
    + labs(fill = "Automatic/Manual Transmission")
    + coord_flip()
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-20
    • 2015-09-09
    • 1970-01-01
    • 2018-03-30
    • 2023-03-15
    • 1970-01-01
    • 2022-11-23
    • 1970-01-01
    相关资源
    最近更新 更多