如何根据 python plotnine 中的另一个变量值对类别重新排序或排序?

How to reorder or sort categories based on another variable values in python plotnine?

我正在尝试在 python 中使用 plotnine,但无法在 python 中使用 rfct_reorder。基本上我想根据另一个变量的增加值绘制分类变量的类别以在 x 轴上排列,但我无法这样做。

import numpy as np
import pandas as pd
from plotnine import *
test_df = pd.DataFrame({'catg': ['a','b','c','d','e'],
                       'val': [3,1,7,2,5]})

test_df['catg'] = test_df['catg'].astype('category')

当我根据 .sort_values() 对它进行排序和绘制时,它不会重新排列 x axis 上的类别:

test_df = test_df.sort_values(by = ['val']).reset_index(drop=True)

(ggplot(data = test_df, 
           mapping = aes(x = test_df.iloc[:, 0], y = test_df['val']))
+ geom_line(linetype = 2) 
+ geom_point() 
+ labs(title = str('Weight of Evidence by ' + test_df.columns[0]),
            x = test_df.columns[0],
            y = 'Weight of Evidence') 
+ theme(axis_text_x= element_text(angle = 0))
)

期望的输出:

我在他们使用 reorder 的地方看到了这个 ,但我在 plotnine 中找不到任何重新排序的工作。

Plotnine 确实有 reorder。它是创建和美学映射时可用的内部函数,就像factor

在您的示例中,您可以这样使用它:

ggplot(data=test_df, mapping=aes(x='reorder(catg, val)', y='val'))