2013-08-07 2 views
1

я нашел следующий пример выбора данных с помощью мыши, но когда я использую onpick функцию с полярным сюжетом я получаю следующее сообщение об ошибке:В Matplotlib, что такое полярный эквивалент get_xdata?

xdata = thisline.get_xdata() 
AttributeError: 'PolarAxesSubplot' object has no attribute 'get_xdata' 

Что такое полярный метод, чтобы получить тету и г с помощью мыши ?

import numpy as np 
import matplotlib.pyplot as plt 

fig = plt.figure() 
ax = fig.add_subplot(111) 
ax.set_title('click on points') 

line, = ax.plot(np.random.rand(100), 'o', picker=5) # 5 points tolerance 

def onpick(event): 
    thisline = event.artist 
    xdata = thisline.get_xdata() 
    ydata = thisline.get_ydata() 
    ind = event.ind 
    print 'onpick points:', zip(xdata[ind], ydata[ind]) 

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

plt.show() 
+0

Вы используете стандартный сюжет и хотите извлечь полярные координаты от него? Это действительно странно ... Обычно вы сначала определяете экземпляр осей как полярное представление: ax = fig.add_subplot (111, polar = True) и начертите точки, используя случайный угол и случайный радиус. – bserra

+2

Я не могу воспроизвести эту ошибку с помощью IPython 0.13.2 и matplotlib 1.3.0, даже с полярным подзаголовком. Вы не должны включать код для найденного вами _example_ (ссылка для этой цели лучше), вы должны ** включить код, используемый для создания графика, дающего вам ошибку **. Все, что мы можем сделать сейчас, это _guess_, как вы определили событие onpick, что не является оптимальным. – hooy

+0

Кроме того, код, который вы отправили, не генерирует полярный график, что заставляет меня думать, что это не тот код, который вы на самом деле используете. – tacaswell

ответ

0

Настройки коды для печати полярного графика, он работал для меня:

import numpy as np 
import matplotlib.pyplot as plt 

line = plt.polar(2*np.pi*np.random.rand(100), np.random.rand(100), 
        'o', picker=5)[0] # 5 points tolerance 
plt.gca().set_title('click on points') 

def onpick(event): 
    thisline = event.artist 
    xdata = thisline.get_xdata() 
    ydata = thisline.get_ydata() 
    ind = event.ind 
    print 'onpick points:', zip(xdata[ind], ydata[ind]) 

plt.gcf().canvas.mpl_connect('pick_event', onpick) 

plt.show()