Уведомления

Группа в Telegram: @pythonsu

#1 Март 30, 2015 14:19:07

pupsik
Зарегистрирован: 2015-03-30
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

как сделать ссылки внутри графика.

День добрый!
Народ, подскажите пожалуйста, моя прога будет строить обыкновенный график использования ресурсов ОСью, график построен из точек(простая кривая), мне необходимо чтобы при нажатии мышкой на одной из точек на графике, питон диномически строил awr отчёт с БД и переносил на этот awr-отчёт.
Как строить awr отчёт на питоне я знаю, я не могу сделать линки(или как это назвать ?) на самом графике.
Ежели кто имеет сакральные знания как это сделать - поделитесь пожалуйста, буду премного благодарен.

Заранее вас благодарю!

P.S.: Обычно юзал библиотеку matplotlib.

Офлайн

#2 Март 30, 2015 14:59:08

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

как сделать ссылки внутри графика.

я так понимаю вы делаете график, а потом вызываете show метод? в результате через Tk бекграунд строится график - и вот на нем нужно что бы при нажатии мышкой производились нужные действия, так?



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Март 30, 2015 16:01:39

pupsik
Зарегистрирован: 2015-03-30
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

как сделать ссылки внутри графика.

да, именно так :-)

Офлайн

#4 Март 30, 2015 21:56:04

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

как сделать ссылки внутри графика.

вот пример с оф документации

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()



————————————————
-*- Simple is better than complex -*-

Офлайн

#5 Март 31, 2015 12:29:06

pupsik
Зарегистрирован: 2015-03-30
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

как сделать ссылки внутри графика.

спасибо огромное!
изучаю…

Офлайн

#6 Март 31, 2015 12:36:11

pupsik
Зарегистрирован: 2015-03-30
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

как сделать ссылки внутри графика.

эмм, а запихнуть такой график в xml документ можно ?
хотя понимаю, что можно, просто не совсем понимаю как это будет работать.
Как я вижу по примеру, при открытии xml документа график и документ будут жить “своей жизнью”, верно ?
То есть, отдельное окно - график, отдельное окно документ.

Офлайн

#7 Март 31, 2015 17:23:27

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

как сделать ссылки внутри графика.

не совсем понятно…
вы хотите чтобы в одном окне был и 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()



————————————————
-*- Simple is better than complex -*-

Офлайн

#8 Апрель 1, 2015 10:39:45

pupsik
Зарегистрирован: 2015-03-30
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

как сделать ссылки внутри графика.

простите если я ввёл вас в заблуждение.
За пример отдельное спасибо!
Дело в том, что я никогда не писал отчёты xml формата.
Что такое xml я понимаю, но не совсем понимаю как туда можно запихать например график.
Я хочу сделать что-то вроде подобия AWR отчёта(фишка оракла) в html формате, но в xml формате.
То есть мы имеем один документ в котором вся информация, допустим есть график, на нём есть отрезки/точки(например точки показывающие места максимальной загрузки) при тыкании на этой точке мышкой вас перебрасывает внутри этого же документа в другое место, где более подробно описывается эта точка, на которую вы кликнули(типа что именно ело ресурсы сервера).

Может у меня не совсем правильных подход к xml документу ? :-)

Отредактировано pupsik (Апрель 1, 2015 10:40:49)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version