正确使用matplotlib set_pickradius
Using matplotlib set_pickradius correctly
我之前有一个关于如何使用 pick_event
() 在 matplotlib 中突出显示数据点的问题。在 matplotlib 更改关键字 picker
的用法之前,该解决方案运行良好。现在我不能让它工作了。这是之前工作的 MWE:
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()
现在我更改了这一行:
ax.plot(x, y, 'o', color='blue', picker=5)
对此:
ax.xaxis.set_pickradius(5.)
ax.yaxis.set_pickradius(5.)
根据文档,但突出显示不再起作用。我还需要更改什么?
好的,经过一些疯狂的随机测试后,我找到了解决方案。
而不是
ax.plot(x, y, 'o', color='blue', picker=5)
我必须使用
ax.plot(x, y, 'o', color='blue', picker=True)
ax.xaxis.set_pickradius(5.)
ax.yaxis.set_pickradius(5.)
看起来关键字 picker
只接受布尔值或函数,但不再接受浮点数。是的,它实际上在 documentation 中,只是看错了地方。
我之前有一个关于如何使用 pick_event
(picker
的用法之前,该解决方案运行良好。现在我不能让它工作了。这是之前工作的 MWE:
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()
现在我更改了这一行:
ax.plot(x, y, 'o', color='blue', picker=5)
对此:
ax.xaxis.set_pickradius(5.)
ax.yaxis.set_pickradius(5.)
根据文档,但突出显示不再起作用。我还需要更改什么?
好的,经过一些疯狂的随机测试后,我找到了解决方案。 而不是
ax.plot(x, y, 'o', color='blue', picker=5)
我必须使用
ax.plot(x, y, 'o', color='blue', picker=True)
ax.xaxis.set_pickradius(5.)
ax.yaxis.set_pickradius(5.)
看起来关键字 picker
只接受布尔值或函数,但不再接受浮点数。是的,它实际上在 documentation 中,只是看错了地方。