【问题标题】:Scatter plot labels in one line - Matplotlib一行中的散点图标签 - Matplotlib
【发布时间】:2016-03-04 23:27:28
【问题描述】:

可以在 Matplolib 中一次设置所有标签吗?

例如,我有这段代码来绘制散点图:

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 = 7coords 是一个形状为 (7, 2) 的 numpy.array。

这给了我这样的情节:

如果我将最后一行更改为:

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

我明白了:

我想知道我是否必须做一个循环来进行分散并设置每个标签是否有某种方法可以一次完成所有操作。

谢谢。

【问题讨论】:

    标签: python matplotlib plot legend


    【解决方案1】:

    我不确定如何使用散点图来做到这一点。但我不确定如果你想要不同的标签,使用scatter 而不是plot 是否有优势。

    这个怎么样?

    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()
    

    【讨论】:

      猜你喜欢
      • 2017-08-24
      • 1970-01-01
      • 2018-07-25
      • 1970-01-01
      • 2021-10-06
      • 2015-05-09
      • 2014-10-20
      • 2017-12-13
      相关资源
      最近更新 更多