2015-01-22 4 views
1

Мое требование состоит в том, чтобы построить одну гистограмму на веб-странице с помощью вишневого и matplotlib. Я могу загрузить график, но не могу получить координаты onmouseover участка. Может кто-нибудь предложить, как я могу получить координаты. Мне нужно использовать javascript, или matplotlib может выполнить это требование. Код выглядит simialr к этомуMatplotlib Python

import matplotlib 
matplotlib.use('Agg') 
import matplotlib.pyplot as plt 

class HelloWorld: 

    def index(self): 
     fig = plt.figure() 
     ax = fig.add_subplot(111) 
     ax.plot([1,2,3]) 
     fig.savefig('test.png') 
     return ''' <img src="test.png" width="640" height="480" border="0" /> ''' 

    index.exposed = True 

import os.path 
tutconf = os.path.join(os.path.dirname(__file__), 'tutorial.conf') 

if __name__ == '__main__': 
    cherrypy.quickstart(HelloWorld(), config=tutconf) 
else: 
    cherrypy.tree.mount(HelloWorld(), config=tutconf) 
+0

Если вы хотите остаться с кодом Python, имея интерактивные диаграммы, взгляните на ['plotly'] (https://plot.ly/matplotlib/) и его интеграцию' matplotlib'. – saaj

ответ

2

Мое требование построить один граф бар на веб-странице с CherryPy и Matplotlib.

Итак, если это ваше единственное требование, вы близки к своему решению: создайте файл графика на стороне сервера и доставьте его клиенту.

Тем не менее, кажется, что это не единственное требование (вам действительно нужно, чтобы лучше выразить то, что вы хотите достичь, когда вы просите помощи у других):

не могу получить координаты OnMouseOver сюжета

Это то, что должно произойти на стороне клиента, то есть в браузере. Следовательно, это задача для кода JavaScript, выполняемого браузером в контексте вашего сайта.

Итак, если вы все равно вынуждены использовать JavaScript, возможно, было бы лучше обслуживать клиента (браузера) только данные и разрешать обработку графика одним из многих фреймворков JavaScript. Таким образом, вы сохраняете некоторую нагрузку на сервер (matplotlib на самом деле довольно интенсивный процессор), а также экономит пропускную способность.

Возможно, вы захотите посмотреть http://www.chartjs.org.

+0

Большое спасибо за вашу помощь – user3872389

+0

Но с помощью matplotlib я могу загрузить сюжет на веб-странице (сохраняя изображение в статическом файле и показывая его, когда пользователь хочет увидеть сюжет и нажимает кнопку show graph, показать график - это кнопка на этой сайт), но если пользователь указывает на какую-либо точку на графике, он не может получить координаты, так как я могу это сделать? – user3872389

0

Хорошим модулем для простой интеграции является BokeJS. Это модуль python, интегрированный с JS API, идеально подходящий для графиков python в браузере. Пример интеграции bokehJS на official page, которые получают координаты над мышью.