簡體   English   中英

PyPlot - 使用選取器突出顯示的點

[英]PyPlot - Highlight point selected with picker

我正在使用pyplot繪制時間序列,並且一旦選中它就想要突出顯示一個點(使用pick_event )。 在這里發現了類似的問題,但是我無法理解它。 這是我做的基本例子:

import matplotlib.pyplot as plt

class MyPlot(object):
    def __init__(self, parent=None):
        super(self.__class__, self).__init__()

    def makePlot(self):
        fig = plt.figure('Test', figsize=(10, 8))
        ax = plt.subplot(111)
        x = range(0, 100, 10)
        y = (5,)*10
        ax.plot(x, y, '-', color='red')
        ax.plot(x, y, 'o', color='blue', picker=5)
        plt.connect('pick_event', self.onPick)
        plt.show()

    def onPick(self, event=None):
        this_point = event.artist
        x_value = this_point.get_xdata()
        y_value = this_point.get_ydata()
        ind = event.ind
        print 'x:{0}'.format(x_value[ind][0])
        print 'y:{0}'.format(y_value[ind][0])

if __name__ == '__main__':
    app = MyPlot()
    app.makePlot()

選定的點應該被標記(例如通過使其變黃),但是當我選擇另一個點時,它應該被重置為藍色,並且只有新選擇的點應該被突出顯示(沒有注釋,只有顏色變化)。 我怎樣才能做到這一點?

您可以定義一個新的圖(黃色),開頭是空的。 單擊一個點后,將該圖的數據更改為拾取點的數據並重繪畫布。

import matplotlib.pyplot as plt

class MyPlot(object):

    def makePlot(self):
        self.fig = plt.figure('Test', figsize=(10, 8))
        ax = plt.subplot(111)
        x = range(0, 100, 10)
        y = (5,)*10
        ax.plot(x, y, '-', color='red')
        ax.plot(x, y, 'o', color='blue', picker=5)
        self.highlight, = ax.plot([], [], 'o', color='yellow')
        self.cid = plt.connect('pick_event', self.onPick)
        plt.show()

    def onPick(self, event=None):
        this_point = event.artist
        x_value = this_point.get_xdata()
        y_value = this_point.get_ydata()
        ind = event.ind
        self.highlight.set_data(x_value[ind][0],y_value[ind][0])
        self.fig.canvas.draw_idle()

if __name__ == '__main__':
    app = MyPlot()
    app.makePlot()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM