【问题标题】:Python, Matplotlib, Scatter plot, Change color on the clicked pointPython,Matplotlib,散点图,改变点击点的颜色
【发布时间】:2015-10-05 10:07:13
【问题描述】:

我有一个带有选择器事件的简单散点图。
我想更改用鼠标单击的数据点的颜色。
我拥有的代码将改变整个数组的颜色。
我怎样才能只改变一个特定的点?

import sys
import numpy as np
import matplotlib.pyplot as plt    
testData = np.array([[0,0], [0.1, 0], [0, 0.3], [-0.4, 0], [0, -0.5]])
    fig, ax = plt.subplots()
    sctPlot, = ax.plot(testData[:,0], testData[:,1], "o", picker = 5)
    plt.grid(True)
    plt.axis([-0.5, 0.5, -0.5, 0.5])

def on_pick(event):
    artist = event.artist
    artist.set_color(np.random.random(3))
    print "click!"
    fig.canvas.draw()

fig.canvas.mpl_connect('pick_event', on_pick)

【问题讨论】:

    标签: python matplotlib plot


    【解决方案1】:
    import sys
    import numpy as np
    import matplotlib.pyplot as plt
    
    testData = np.array([[0,0], [0.1, 0], [0, 0.3], [-0.4, 0], [0, -0.5]])
    fig, ax = plt.subplots()
    coll = ax.scatter(testData[:,0], testData[:,1], color=["blue"]*len(testData), picker = 5, s=[50]*len(testData))
    plt.grid(True)
    plt.axis([-0.5, 0.5, -0.5, 0.5])
    
    def on_pick(event):
        print testData[event.ind], "clicked"
        coll._facecolors[event.ind,:] = (1, 0, 0, 1)
        coll._edgecolors[event.ind,:] = (1, 0, 0, 1)
        fig.canvas.draw()
    
    fig.canvas.mpl_connect('pick_event', on_pick)
    plt.show()
    

    【讨论】:

    • 是否可以同时选择多个标记来检索它们后面的数据?就像在散点图上绘制矩形并对矩形内的所有标记做一些事情。
    • user337 有一个套索功能:matplotlib.org/3.2.1/gallery/widgets/…
    猜你喜欢
    • 2017-07-19
    • 1970-01-01
    • 2021-04-15
    • 1970-01-01
    • 1970-01-01
    • 2018-08-23
    • 2013-10-08
    • 2014-09-10
    相关资源
    最近更新 更多