2015-01-22 3 views
1

나의 요구 사항은 cherrypy와 matplotlib가있는 웹 페이지에 막대 그래프 하나를 그려 보는 것입니다. 그래프를로드 할 수 있지만 위의 좌표는 onmouseover 입니다. 아무도 내가 어떻게 좌표를 얻을 수 제안 할 수 있습니다. 내가 자바 스크립트를 사용하거나 Matplotlib 요구 사항을 수행 할 수 있습니다. 코드는이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

내 요구 사항에 simialr 보이는 cherrypy 및 하기 matplotlib와 웹 페이지에 하나의 막대 그래프를 그릴 것입니다.

그래서 유일한 요구 사항 인 경우 솔루션에 가까이 있습니다. 플롯 파일 서버 측을 만들어 클라이언트에 전달하십시오.

플롯

의 좌표 onMouseover와를 얻을 캔트 :

그러나,이 유일한 요구 사항은 (당신이 정말로 더 나은 당신이 도움을 다른 사람에게 물어 때 달성하고자하는 것을 표현하기 위해 필요)없는 것 같다

이것은 클라이언트 측, 즉 브라우저 내에서 발생해야하는 작업입니다. 따라서 이것은 웹 사이트 컨텍스트에서 브라우저가 실행하는 JavaScript 코드 작업입니다.

어쨌든 JavaScript를 사용해야하는 경우 클라이언트 (브라우저)에 데이터 만 제공하고 많은 JavaScript 플로팅 프레임 워크 중 하나에서 플로팅을 처리하도록하는 것이 더 나을 것입니다. 그렇게하면 서버에 부하를 덜어줍니다 (matplotlib 플로팅은 실제로 CPU 강도가 매우 큽니다). 또한 대역폭을 절약 할 수 있습니다.

http://www.chartjs.org을 참조하십시오.

+0

당신의 도움을 많이 주셔서 감사합니다 – user3872389

+0

하지만 Matplotlib을 사용하면 웹 페이지에 플롯을로드 할 수 있습니다 (정적 파일에 이미지를 저장하고 사용자가 플롯을보고 그래프 버튼을 클릭하고 싶을 때 표시 함, 그래프 표시는 버튼입니다) 웹 사이트)하지만 사용자가 플롯의 어느 지점을 가리키면 좌표를 얻을 수 없으므로 어떻게해야합니까? – user3872389

0

쉬운 통합을위한 좋은 모듈은 BokeJS입니다. 이 모듈은 JS API와 통합 된 파이썬 모듈로서 브라우저의 파이썬 플롯에 이상적입니다. official page에 bokehJS를 통합 한 예로서, 마우스 오버시 좌표를 얻습니다.