Форум сайта python.su
0
День добрый!
Народ, подскажите пожалуйста, моя прога будет строить обыкновенный график использования ресурсов ОСью, график построен из точек(простая кривая), мне необходимо чтобы при нажатии мышкой на одной из точек на графике, питон диномически строил awr отчёт с БД и переносил на этот awr-отчёт.
Как строить awr отчёт на питоне я знаю, я не могу сделать линки(или как это назвать ?) на самом графике.
Ежели кто имеет сакральные знания как это сделать - поделитесь пожалуйста, буду премного благодарен.
Заранее вас благодарю!
P.S.: Обычно юзал библиотеку matplotlib.
Офлайн
221
я так понимаю вы делаете график, а потом вызываете show метод? в результате через Tk бекграунд строится график - и вот на нем нужно что бы при нажатии мышкой производились нужные действия, так?
Офлайн
0
да, именно так :-)
Офлайн
103
вот пример с оф документации
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
спасибо огромное!
изучаю…
Офлайн
0
эмм, а запихнуть такой график в xml документ можно ?
хотя понимаю, что можно, просто не совсем понимаю как это будет работать.
Как я вижу по примеру, при открытии xml документа график и документ будут жить “своей жизнью”, верно ?
То есть, отдельное окно - график, отдельное окно документ.
Офлайн
103
не совсем понятно…
вы хотите чтобы в одном окне был и xml документ и график?
если да, то нужно в gui, например tk, впихнуть график matplotlib
вот пример набросал
#-*- coding: utf-8 -*- import matplotlib matplotlib.use('TkAgg') import numpy as np from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg from matplotlib.backend_bases import key_press_handler from matplotlib.figure import Figure import Tkinter as Tk root = Tk.Tk() root.wm_title("pupsik") fig = Figure(figsize=(5,4), dpi=100) ax = fig.add_subplot(111) ax.set_title('click on points') line, = ax.plot(np.random.rand(100), 'o', picker=5) def onpick(event): thisline = event.artist xdata = thisline.get_xdata() ydata = thisline.get_ydata() ind = event.ind text.delete('1.0', Tk.END) text.insert(Tk.INSERT, '----\nonpick points: {} {}\nи отчет сюда!\n----'.format(xdata[ind], ydata[ind])) canvas = FigureCanvasTkAgg(fig, master=root) canvas.show() canvas.get_tk_widget().pack(side=Tk.TOP, fill=Tk.BOTH, expand=1) canvas.mpl_connect('pick_event', onpick) toolbar = NavigationToolbar2TkAgg( canvas, root ) toolbar.update() canvas._tkcanvas.pack(side=Tk.TOP, fill=Tk.BOTH, expand=1) text = Tk.Text(master=root) text.pack(side=Tk.BOTTOM) Tk.mainloop()
Офлайн
0
простите если я ввёл вас в заблуждение.
За пример отдельное спасибо!
Дело в том, что я никогда не писал отчёты xml формата.
Что такое xml я понимаю, но не совсем понимаю как туда можно запихать например график.
Я хочу сделать что-то вроде подобия AWR отчёта(фишка оракла) в html формате, но в xml формате.
То есть мы имеем один документ в котором вся информация, допустим есть график, на нём есть отрезки/точки(например точки показывающие места максимальной загрузки) при тыкании на этой точке мышкой вас перебрасывает внутри этого же документа в другое место, где более подробно описывается эта точка, на которую вы кликнули(типа что именно ело ресурсы сервера).
Может у меня не совсем правильных подход к xml документу ? :-)
Отредактировано pupsik (Апрель 1, 2015 10:40:49)
Офлайн