散点图标签在一行中显示 - Matplotlib

3

在Matplotlib中是否可以一次性设置所有标签?

例如,我有以下代码用于绘制散点图:

cmap = plt.get_cmap('Set1')
colors = [cmap(i) for i in numpy.linspace(0, 1, simulations+1)]

plt.figure(figsize=(7, 7))
plt.scatter(coords[:, 0], coords[:, 1], marker='o', c=colors, s=50, edgecolor='None')
plt.legend(loc='lower left',)

simulations = 7,而且coords是一个形状为(7, 2)的numpy.array时。

这会给我一个像这样的图:

enter image description here

如果我将最后一行改为:

plt.scatter(coords[:, 0], coords[:, 1], marker='o', c=colors, s=50, edgecolor='None', label=range(simulations))
plt.legend(loc='lower left')

我得到的是:

输入图片描述

我想知道是否需要循环来进行散点图并设置每个标签,或者是否有一种方法可以一次完成所有操作。

谢谢。

1个回答

3

我不确定怎样使用散点图来实现。但如果你需要不同的标签,使用散点图是否比使用折线图有优势仍不确定。

这样怎么样?

import numpy as np
import matplotlib.pyplot as plt

n = 10
coords = np.random.random((n,2))

cmap = plt.get_cmap('Set1')

for i, (x, y) in enumerate(coords):
    plt.plot(x, y, 'o', color=cmap(i/float(n)), label='%i'%i, ms=9, mec='none')

plt.axis((-0.5, 1.5, -0.5, 1.5))
plt.legend(loc='lower left', numpoints=1, frameon=False)
plt.show()

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接