我用以下方式制作了散点图:
f, ax1 = plt.subplots(3,2)
cmap = matplotlib.cm.get_cmap('coolwarm')
ax1[0,1].scatter(data[:,0], data[:,1], c=y, s=20, marker='o', alpha=.5, cmap=cmap)
data
保存数据,y
保存标签(1,2,3)。现在我想添加一个传奇。
ax1[0,1].legend(('label1', 'label2', 'label3'),
scatterpoints=1,
loc='lower left',
fontsize=10)
这不起作用,它只打印label1。怎么可以这样做呢?
答案 0 :(得分:1)
我们的想法是将数据集划分为由相同颜色表示的单独数据集。之后,图例显示正确。
import matplotlib.pyplot as plt
import matplotlib
import numpy as np
data = np.zeros(shape=(10,2))
data[:,0] = np.linspace(0,1,10)
data[:,1] = np.linspace(0,1,10)
y = ['red', 'green', 'blue']
f, ax1 = plt.subplots(3,2)
cmap = matplotlib.cm.get_cmap('coolwarm')
ny = len(y)
for i, itm in enumerate(y):
datac = data[i::ny,:]
ax1[0,1].scatter(datac[:,0], datac[:,1], c=itm,
s=20, marker='o', alpha=.5, cmap=cmap)
ax1[0,1].legend(['label1', 'label2', 'label3'],
scatterpoints=1,
loc='lower left',
fontsize=10)
plt.show()