pupsik
Март 30, 2015 14:19:07
День добрый!
Народ, подскажите пожалуйста, моя прога будет строить обыкновенный график использования ресурсов ОСью, график построен из точек(простая кривая), мне необходимо чтобы при нажатии мышкой на одной из точек на графике, питон диномически строил awr отчёт с БД и переносил на этот awr-отчёт.
Как строить awr отчёт на питоне я знаю, я не могу сделать линки(или как это назвать ?) на самом графике.
Ежели кто имеет сакральные знания как это сделать - поделитесь пожалуйста, буду премного благодарен.
Заранее вас благодарю!
P.S.: Обычно юзал библиотеку matplotlib.
JOHN_16
Март 30, 2015 14:59:08
я так понимаю вы делаете график, а потом вызываете show метод? в результате через Tk бекграунд строится график - и вот на нем нужно что бы при нажатии мышкой производились нужные действия, так?
pupsik
Март 30, 2015 16:01:39
да, именно так :-)
terabayt
Март 30, 2015 21:56:04
вот пример с оф документации
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()
pupsik
Март 31, 2015 12:29:06
спасибо огромное!
изучаю…
pupsik
Март 31, 2015 12:36:11
эмм, а запихнуть такой график в xml документ можно ?
хотя понимаю, что можно, просто не совсем понимаю как это будет работать.
Как я вижу по примеру, при открытии xml документа график и документ будут жить “своей жизнью”, верно ?
То есть, отдельное окно - график, отдельное окно документ.
terabayt
Март 31, 2015 17:23:27
не совсем понятно…
вы хотите чтобы в одном окне был и 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()
pupsik
Апрель 1, 2015 10:39:45
простите если я ввёл вас в заблуждение.
За пример отдельное спасибо!
Дело в том, что я никогда не писал отчёты xml формата.
Что такое xml я понимаю, но не совсем понимаю как туда можно запихать например график.
Я хочу сделать что-то вроде подобия AWR отчёта(фишка оракла) в html формате, но в xml формате.
То есть мы имеем один документ в котором вся информация, допустим есть график, на нём есть отрезки/точки(например точки показывающие места максимальной загрузки) при тыкании на этой точке мышкой вас перебрасывает внутри этого же документа в другое место, где более подробно описывается эта точка, на которую вы кликнули(типа что именно ело ресурсы сервера).
Может у меня не совсем правильных подход к xml документу ? :-)