我的绘图中的图例在图例中显示两次标记图标
产生此图的代码如下所示
import pandas as pd
import random
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import numpy as np
N = 15
colors = cm.rainbow(np.linspace(0, 1, N))
df = []
for i in range(N):
s = 'NAME %d' % i
df.append(dict(x=random.random(), y=random.random(), name=s))
df = pd.DataFrame(df)
c = 0
labels = []
fig, ax = plt.subplots(figsize=(12,12))
for name, group in df.groupby('name'):
x = group['x'].values[0]
y = group['y'].values[0]
color = colors[c]
c += 1
ax.plot(x, y, color=color, marker='o', linestyle='', label=name)
labels.append(name)
handels, _ = ax.get_legend_handles_labels()
ax.legend(handels, labels)
为什么会这样?
我的实际df
每个名称都有多个条目,这就是我groupby
的原因。这里有什么我想念的吗?
答案 0 :(得分:4)
您可以直接set plt.legend(loc=...,numpoints =1)
或创建style sheet并设置legend.numpoints : 1
如果您使用的是Linux系统:将样式表放在~/.config/matplotlib/stylelib/
中,您可以将它们与plt.style.use([your_style_sheet])
一起使用。此外,您可以例如为颜色等制作一张纸,为尺寸制作一张:plt.style.use([my_colors,half_column_latex])