Python Matplotlib:如何向散点图颜色添加图例?

Python Matplotlib:如何向散点图颜色添加图例?,python,pandas,matplotlib,Python,Pandas,Matplotlib,我的数据框有三列SKU、Save和label(分类变量)。当我调用plt.legend()时,它会添加“保存”的图例,但我想将图例添加到我的颜色中(a、b、c、d) plt.legend是可调用的。通过编写plt.legend={'a'、'b'、'c'、'd'},您将用集替换该可调用项,该集本身不起任何作用(除了使以后无法调用legend。您要做的是调用plt.legend()。请参阅。谢谢,但当我调用plt.legend时,它显示的是保存,而不是a、b、c、d组。不幸的是,从问题本身来看,几乎

我的数据框有三列SKU、Save和label(分类变量)。当我调用
plt.legend()
时,它会添加“保存”的图例,但我想将图例添加到我的颜色中(a、b、c、d)


plt.legend
是可调用的。通过编写
plt.legend={'a'、'b'、'c'、'd'}
,您将用
集替换该可调用项,该集本身不起任何作用(除了使以后无法调用
legend
。您要做的是调用
plt.legend()
。请参阅。

谢谢,但当我调用plt.legend时,它显示的是保存,而不是a、b、c、d组。不幸的是,从问题本身来看,几乎不可能知道要绘制什么,但根据您的评论,您似乎在寻找类似的内容。
from numpy import *
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
import matplotlib.pyplot as plt

df = pd.DataFrame(np.random.rand(100,1), columns=['Saving'])
df['SKU'] = np.arange(100)
df['label'] = np.random.choice(['a', 'b', 'c','d'], 100)

fig, ax = plt.subplots()
colors = {'a':'red', 'b':'blue', 'c':'green', 'd':'white'}
figSaving = ax.scatter(df['SKU'], df['Saving'], c=df['label'].apply(lambda x: colors[x]))

plt.show()
import pandas as pd
import numpy as np
import matplotlib.patches as mpatches
import matplotlib.pyplot as plt

df = pd.DataFrame(np.random.rand(100,1), columns=['Saving'])
df['SKU'] = np.arange(100)
df['label'] = np.random.choice(['a', 'b', 'c','d'], 100)

fig, ax = plt.subplots()
colors = {'a':'red', 'b':'blue', 'c':'green', 'd':'white'}
figSaving = ax.scatter(df['SKU'], df['Saving'], c=df['label'].apply(lambda x: colors[x]))


# build the legend
red_patch = mpatches.Patch(color='red', label='a')
blue_patch = mpatches.Patch(color='blue', label='b')
green_patch = mpatches.Patch(color='green', label='c')
white_patch = mpatches.Patch(color='white', label='d')

# set up for handles declaration
patches = [red_patch, blue_patch, green_patch, white_patch]

# define and place the legend
#legend = ax.legend(handles=patches,loc='upper right')

# alternative declaration for placing legend outside of plot
legend = ax.legend(handles=patches,bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.)

plt.show()