我想将不同模型和方法的验证结果散点图。 “Train”和“Validation”数据点都将以不同的颜色绘制(已经完成)。除此之外,我想为不同的模型使用不同的标记,如下所示:
我有以下函数体
k=1
label=['Train', 'Validation']
drop_learners=[]
drop_cols=[]
train_summary = self_summary_train.drop(drop_learners).drop(drop_cols, axis=1)
validation_summary = self_summary_validation.drop(drop_learners).drop(drop_cols, axis=1)
plot_data = pd.concat([self_summary_train, self_summary_validation])
plot_data['label'] = [i.replace('Train', '') for i in plot_data.index]
plot_data['label'] = [i.replace('Validation', '') for i in plot_data.label]
fig, ax = plt.subplots()
fig.set_size_inches(12, 8)
xs = plot_data['Abs % Error of ATE']
ys = plot_data['MSE']
group = np.array([label[0]] * self_summary_train.shape[0] + [label[1]] * self_summary_validation.shape[0])
cdict = {label[0]: 'red', label[1]: 'blue'}
for g in np.unique(group):
ix = np.where(group == g)[0].tolist()
ax.scatter(xs[ix], ys[ix], c=cdict[g], label=g, s=100)
for i, txt in enumerate(plot_data.label[:]):
ax.annotate(txt, (xs[i] + 0.005, ys[i]))
ax.set_xlabel('Abs % Error of ATE')
ax.set_ylabel('MSE')
ax.set_title('Learner Performance (averaged over k={} simulations)'.format(k))
ax.legend(loc='center left', bbox_to_anchor=(1.1, 0.5))
plt.show()
我已经尝试在 for 循环中将 scatter-function 中的标记设置为
markerdict = {learners[0]: ".", learners[1]: 'v', learners[2]: "^", learners[3]: "1", learners[4]: "2", learners[5]: "8", learners[6]: "p",learners[7]:"*", learners[8]:"d"}
markers=['^', 's', 'p', 'h', '8']
也许有人可以在这里帮助我,提前致谢!
答案 0 :(得分:0)
看看这是否可行:
markers=['^', 's', 'p', 'h', '8']
for idx, g in enumerate(np.unique(group)):
ix = np.where(group == g)[0].tolist()
ax.scatter(xs[ix], ys[ix], c=cdict[g], label=g, s=100, marker = markers[idx])