我试图根据列中的字符串对散点图进行颜色编码。我不知道该怎么设置传奇。
可重复示例
%matplotlib inline
import matplotlib.pyplot as plt
import pandas as pd
## Dummy Data
x = [0, 0.03, 0.075, 0.108, 0.16, 0.26, 0.37, 0.49, 0.76, 1.05, 1.64,
0.015, 0.04, 0.085, 0.11, 0.165, 0.29, 0.37, 0.6, 0.78, 1.1]
y = [16.13, 0.62, 2.15, 41.083, 59.97, 13.30, 7.36, 6.80, 4.97, 3.53, 11.77,
30.21, 64.47, 57.64, 56.83, 46.69, 4.22, 30.35, 35.12, 5.22, 25.32]
label = ['a', 'a', 'c', 'a', 'c', 'b', 'c', 'c', 'c', 'b', 'c',
'c', 'c', 'a', 'b', 'a', 'a', 'a', 'b', 'c', 'c', 'c']
df = pd.DataFrame(
list(zip(x, y, label)),
columns =['x', 'y', 'label']
)
## Set up colors dictionary
mydict = {'a': 'darkviolet',
'b': 'darkgoldenrod',
'c': 'olive'}
## Plotting
plt.scatter(df.x, df.y, c=df['label'].map(mydict))
plt.legend(loc="upper right", frameon=True)
电流输出
期望输出
与上面的图相同,我只想定义图例句柄。
3条答案
按热度按时间62o28rlo1#
可以使用
matplotlib.patches.mpatches
只需将这几行代码添加到脚本中即可
你会得到
w6mmgewl2#
您将创建一个图例手柄列表,如下所示。
legendhandle
将取行列表的第一个元素。du7egjpx3#
您是否对
seaborn
开放:输出:
只使用pandas/matplotlib,你可以执行一个循环:
输出: