pandas-highcharts의 display_charts를 jupyter 이외의 환경에서 실행
배경
데이터 해석 등을 하는 사람은 자주 jupyter를 사용하는 것 같네요.
아마 데이터를 즉각적으로 그래프로 하여 그리는, 같은 것은 Python 단체로는 서투르기 때문에, 브라우저상에서 하고 있다고 생각합니다.
그러나, display 등의 표시(html 드로잉) 관계의 메소드는, jupyter 특유의 것이며, 다른 환경에서는 실행할 수 없습니다.
Qiita의 데이터 해석 기사등을 참고로 해도, jupyter의 환경의 기사라면, 묘화 주위가 자신의 환경이라고 잘 되지 않거나 합니다.
이번에는 pandas-highcharts로 표시하는 그래프를 pycharm 환경에서 볼 필요가 있었기 때문에 기사화했습니다.
*2020/06/19 실수로 움직이지 않는 것을 공개하고 있었습니다. 수정하겠습니다.
방법
pandas-highcharts의 소스 코드를 참고로 다음과 같은 함수를 만들었습니다.
pandas-highcharts의 display_charts는 return에서 display로 되어 있기 때문에 반환값은 None이 됩니다. 그 한 걸음 앞에서 html 템플릿에 묻혀 리턴하고있는 느낌입니다.
(참고)
htps : // 기주 b. 이 m/gtx/panda s-high rts/bぉb/마s r/panda s_high rts/ぢspぁy. py
def my_display_charts(df, chart_type="default", render_to=None, **kwargs):
from pandas_highcharts.core import serialize
if chart_type not in ("default", "stock"):
raise ValueError("Wrong chart_type: accept 'default' or 'stock'.")
chart_id = render_to if render_to is not None else "chart_idXXXXXXXX"
json_data = serialize(df, render_to=chart_id, chart_type=chart_type, **kwargs)
content = """
<div id="{chart_id}"</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highcharts/8.1.1/highstock.min.js"></script>
<script type="text/javascript">{data}</script>
"""
html = """
<!DOCTYPE html>
<html lang="ja">
<head>
<title>My Result</title>
</head>
<body>
{content}
</body>
</html>
"""
return html.format(content=content.format(chart_id=chart_id, data=json_data))
사용법은 이런 느낌입니다.
import pandas as pd
import webbrowser
import os
def my_display_charts(df, chart_type="default", render_to=None, **kwargs):
from pandas_highcharts.core import serialize
from pandas_highcharts.display import _generate_div_id_chart
if chart_type not in ("default", "stock"):
raise ValueError("Wrong chart_type: accept 'default' or 'stock'.")
chart_id = render_to if render_to is not None else _generate_div_id_chart()
json_data = serialize(df, render_to=chart_id, chart_type=chart_type, **kwargs)
content = """
<div id="{chart_id}"</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highcharts/8.1.1/highstock.min.js"></script>
<script type="text/javascript">{data}</script>
"""
html = """
<!DOCTYPE html>
<html lang="ja">
<head>
<title>My Result</title>
</head>
<body>
{content}
</body>
</html>
"""
return html.format(content=content.format(chart_id=chart_id, data=json_data))
df = pd.DataFrame([1, 2, 3, 5, 4], index=[list('abcde')])
html_data = my_display_charts(df, chart_type="stock", title="Mt Result", figsize=(640, 480), grid=True)
path = 'index.html'
with open(path, mode='w') as f:
f.write(html_data)
webbrowser.open_new_tab('file:///' + os.getcwd() + '/' + path_w)
잘하면 자신의 PC의 기본 브라우저에서 이런 식으로 그려집니다.
매번 브라우저가 열리는 것이 대단하지만, 우선 볼 수 있습니다.
적당하게 생성한 Dataframe이므로 그래프가 까다롭군요.
고찰
가로축이 디폴트로 타임 스탬프인 것은 왜일까.
webbrowser에 문자열 그대로 html 요소를 전달할 수 있으면 최고이지만, 아무래도 경로를 전달하는 방법밖에 없는 것 같기 때문에 이번에는 한 번 index.html로 내보내고 있다.
같은 요령으로, IPython.display나 python-higchart등도, html 요소마저 빼낼 수 있으면(듯이) 브라우저 표시할 수 있다.
이번에는 highstock.min.js만 읽어야 했지만, 경우에 따라서는 highchart.js라든지 필요할지도 모른다.
highstock.min.js에 관해서는 공식이 어디에 있는지 모르기 때문에 아래에서 가져왔다.
htps // cd js. 코 m / ぃ b 라리 s / 히 gh rts
공식 페이지는 이쪽
htps //w w. 히 gh rts. 코m/
Reference
이 문제에 관하여(pandas-highcharts의 display_charts를 jupyter 이외의 환경에서 실행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hatt_takumi/items/b2f333cf22375367c186
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
pandas-highcharts의 소스 코드를 참고로 다음과 같은 함수를 만들었습니다.
pandas-highcharts의 display_charts는 return에서 display로 되어 있기 때문에 반환값은 None이 됩니다. 그 한 걸음 앞에서 html 템플릿에 묻혀 리턴하고있는 느낌입니다.
(참고)
htps : // 기주 b. 이 m/gtx/panda s-high rts/bぉb/마s r/panda s_high rts/ぢspぁy. py
def my_display_charts(df, chart_type="default", render_to=None, **kwargs):
from pandas_highcharts.core import serialize
if chart_type not in ("default", "stock"):
raise ValueError("Wrong chart_type: accept 'default' or 'stock'.")
chart_id = render_to if render_to is not None else "chart_idXXXXXXXX"
json_data = serialize(df, render_to=chart_id, chart_type=chart_type, **kwargs)
content = """
<div id="{chart_id}"</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highcharts/8.1.1/highstock.min.js"></script>
<script type="text/javascript">{data}</script>
"""
html = """
<!DOCTYPE html>
<html lang="ja">
<head>
<title>My Result</title>
</head>
<body>
{content}
</body>
</html>
"""
return html.format(content=content.format(chart_id=chart_id, data=json_data))
사용법은 이런 느낌입니다.
import pandas as pd
import webbrowser
import os
def my_display_charts(df, chart_type="default", render_to=None, **kwargs):
from pandas_highcharts.core import serialize
from pandas_highcharts.display import _generate_div_id_chart
if chart_type not in ("default", "stock"):
raise ValueError("Wrong chart_type: accept 'default' or 'stock'.")
chart_id = render_to if render_to is not None else _generate_div_id_chart()
json_data = serialize(df, render_to=chart_id, chart_type=chart_type, **kwargs)
content = """
<div id="{chart_id}"</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highcharts/8.1.1/highstock.min.js"></script>
<script type="text/javascript">{data}</script>
"""
html = """
<!DOCTYPE html>
<html lang="ja">
<head>
<title>My Result</title>
</head>
<body>
{content}
</body>
</html>
"""
return html.format(content=content.format(chart_id=chart_id, data=json_data))
df = pd.DataFrame([1, 2, 3, 5, 4], index=[list('abcde')])
html_data = my_display_charts(df, chart_type="stock", title="Mt Result", figsize=(640, 480), grid=True)
path = 'index.html'
with open(path, mode='w') as f:
f.write(html_data)
webbrowser.open_new_tab('file:///' + os.getcwd() + '/' + path_w)
잘하면 자신의 PC의 기본 브라우저에서 이런 식으로 그려집니다.
매번 브라우저가 열리는 것이 대단하지만, 우선 볼 수 있습니다.
적당하게 생성한 Dataframe이므로 그래프가 까다롭군요.
고찰
가로축이 디폴트로 타임 스탬프인 것은 왜일까.
webbrowser에 문자열 그대로 html 요소를 전달할 수 있으면 최고이지만, 아무래도 경로를 전달하는 방법밖에 없는 것 같기 때문에 이번에는 한 번 index.html로 내보내고 있다.
같은 요령으로, IPython.display나 python-higchart등도, html 요소마저 빼낼 수 있으면(듯이) 브라우저 표시할 수 있다.
이번에는 highstock.min.js만 읽어야 했지만, 경우에 따라서는 highchart.js라든지 필요할지도 모른다.
highstock.min.js에 관해서는 공식이 어디에 있는지 모르기 때문에 아래에서 가져왔다.
htps // cd js. 코 m / ぃ b 라리 s / 히 gh rts
공식 페이지는 이쪽
htps //w w. 히 gh rts. 코m/
Reference
이 문제에 관하여(pandas-highcharts의 display_charts를 jupyter 이외의 환경에서 실행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hatt_takumi/items/b2f333cf22375367c186
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(pandas-highcharts의 display_charts를 jupyter 이외의 환경에서 실행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hatt_takumi/items/b2f333cf22375367c186텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)