为图例 matplotlib 使用不同的数据

use different data for legend matplotlib

我正在尝试创建一个对应于数据框中其他数据的图例,而不是用于创建条形图的列。 我的理解是 matplotlib 图例使用数据输入来分配图例,因为我输入一列 (x) 和一列 (y) 我只得到一个图例。 我正在尝试使用“位置”列作为我的图例输入,这样我将有 3 个图例输入 ['bot'、'mid'、'top'] 并分配了各自的条形图。不知道如何。

import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt

df = pd.DataFrame({'wins': [8,6,2],
                   'player': ['x','y','z'],
                   'position' : ['bot', 'mid', 'top'],
                   'color': ['red', 'blue', 'green']})

bar = plt.bar(df["player"], df["wins"], color = (df["color"]))
bar = plt.legend(labels =df['position'])

results of code

使用 seaborn,可以这样写:

import seaborn as sns

sns.barplot(data=df, x='player', y='wins', hue='position', dodge=False,
            palette=dict(zip(df['position'], df['color'])))