xticks
åŒæ°ã䜿çšããŠãããšãã«ããã³ããããããããã£ãŠãããšãã«ããã®ãšã©ãŒã«ééããŸããã
æŠå¿µå®èšŒã¯ããã«ãããŸãïŒ
http://nbviewer.ipython.org/gist/edvakf/a47a41ace10afbd891ff
ïŒhttp://pandas.pydata.org/pandas-docs/stable/visualization.htmlã®å€æŽïŒ
ãã- mplexporter
ã¯xticksããªã¹ãã§ãããšèª€ã£ãŠæ³å®ããŠããããã§ãã ããã¯ãã°ã§ãã
ãããŸã§ã®éãxticksãæåã§ãªã¹ãã«å€æãããšãæ©èœããã¯ãã§ãã
å®éã«ã¯ããã§ã¯ãããŸããã ã€ãŸãã以äžã¯åé¡ãªãæ©èœããŸãã
fig = plt.figure()
ax = fig.add_subplot(111, xticks=np.arange(11))
ax.plot([0, 10], [0, 10], '-k')
mpld3.show()
ãã³ãã¯ããã§ãã®ããã§å¥åŠãªããšãããŠããŸãïŒãšã©ãŒã¯2000
ãã·ãªã¢ã«åã§ããªãããšã瀺ããŠããŸããããã¯ã¯ã¬ã€ãžãŒã§ãã ãã³ãã«ã¯ãããçš®ã®çµã¿èŸŒã¿ã®ã·ãªã¢ã«åã§ããªãæµ®åå°æ°ç¹åããããŸããïŒ
ããã¯2000幎ã§ã¯ãªãã幎ã§ãã datetime
å°çãžããããã
ïŒ2014幎6æ19æ¥ç·šéïŒ datetime
ãåé¡ã§ãããšããã®ã¯ééã£ãŠããããã§ã...ïŒ
ããŒã...ã©ãããã°ããã®ãããããªãã äœããæèŠã¯ïŒ
to_json
ã§pandas
to_json
ã䜿çšããã®ã«åœ¹ç«ã¡ãŸããïŒ
http://pandas.pydata.org/pandas-docs/dev/io.html#date -handling
ãã³ãã§to_jsonã䜿çšããã®ã«åœ¹ç«ã¡ãŸããïŒ
ãããããããããã®åŸãã³ãŒãå
ã®å€ãã®ããšã«å¯ŸããŠtry
... except
ã¹ããŒãã¡ã³ããå®è¡ããå¿
èŠããããŸãïŒã€ãŸããå€ãPandaså€æ°ã®å Žåã¯ãäžæ¹åã«å®è¡ããŸãããã以å€ã®å Žåã¯å¥ã®æ¹æ³ã§ïŒãjavascriptåŽã®è»žã©ãã«ãPandasãåºåããããšã決å®ããJSONæ§é ãåŠçã§ããããšã確èªããŸãã éåžžã«å£ãããããœãªã¥ãŒã·ã§ã³ã§ãããã¡ã³ããã³ã¹ã®æªå€¢ã®ããã«èãããã®ã§ããã®ã¬ãã«ã®è€éããè¿œå ããããããŸããã
ããã§ããã ããã¯ãPythonããŠãŒã¶ãŒå®çŸ©ã¯ã©ã¹ã®jsonã·ãªã¢ã«åã¡ãœãããå ¬éã§ããªãããšã«èŠçŽãããŸãã ãã®åé¡ã解決ã§ããŸãã
éãããŸãŸã«ããŠããå¿ èŠããããŸã...ãããåŠçããããã®ããè¯ãæ¹æ³ããããããããŸããã èããŠããã
ã¡ãã£ãšåŸ ã£ãŠãã ãããããã¯Python2.7ã§ããŸãæ©èœããŠããããã§ãã Python3ã®åé¡ã ãã§ããããïŒ
In [56]: matplotlib.__version__
Out[56]: '1.3.1'
In [57]: pandas.__version__
Out[57]: '0.13.1'
çããããã«ã¡ã¯ã
é¢é£ãããã©ããã¯ããããŸãããããã®æµ·ã®ã°ã©ããããããããããšãããšãåæ§ã®åé¡ãçºçããŸãïŒ http ïŒ//www.stanford.edu/~mwaskom/software/seaborn/examples/many_facets.html
mpld3.fig_to_html(grid.fig, 'test.html')
/home/vagrant/graph/local/lib/python2.7/site-packages/mpld3/mplexporter/exporter.py:82: UserWarni ng: Blended transforms not yet supported. Zoom behavior may not work as expected.
warnings.warn("Blended transforms not yet supported. "
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/vagrant/graph/local/lib/python2.7/site-packages/mpld3/_display.py", line 236, in fig_to_html
figure_json=json.dumps(figure_json),
File "/usr/lib/python2.7/json/__init__.py", line 231, in dumps
return _default_encoder.encode(obj)
File "/usr/lib/python2.7/json/encoder.py", line 201, in encode
chunks = self.iterencode(o, _one_shot=True)
File "/usr/lib/python2.7/json/encoder.py", line 264, in iterencode
return _iterencode(o, 0)
File "/usr/lib/python2.7/json/encoder.py", line 178, in default
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: 0 is not JSON serializable
åé¡ã¯ãnumpy.int64çªå·ãå
éšã§äœ¿çšãããŠããããããã¯ããã©ã«ãã§jsonã·ãªã¢ã«åã§ããªãããšã§ãã
ãããåŠçããããã®json.JSONEncoderãæäŸããããã«ãã©ã€ãã©ãªã«ããã¯ãå¿
èŠã§ãã
ã¢ã€ãã¢ã®äœå°ãæäŸããããã ãã«ïŒ
åãåé¡ãçºçããŸãããmpld3ã䜿çšãããããžã§ã¯ãã§äœ¿çšããŠãããããžã§ã¯ãã®ããã¯ãšã³ããšããŠäœ¿çšããŠããDjangoã«æ¥ç¶ããŠããŸãã
numpyé åãã·ãªã¢ã«åããããšããŸããããdjango 1.6ã䜿çšãããšããã®ãšã©ãŒãçºçããŸããã 1.5ã«ããŠã³ã°ã¬ãŒãããŸããããåäœããŸãã ãã®çç±ã¯ã1.6以éã§ã¯jsonã§ã1.5以äžã§ã¯Pickleçµç±ã§ã·ãªã¢ã«åãè¡ãããããã§ãã
ãããåé¡ã®å¯èœæ§ãèŠã€ããã®ã«åœ¹ç«ã€ããšãé¡ã£ãŠããŸãã
Med vennlig hilsenã
ãžã§ã©ã«ããã©ãªãŽã¡ãšã¹ãããµ
HÞgskolelektor
HÞgskoleniGjÞvik
é»åã¡ãŒã«ïŒãžã§ã©ã«ãã [email protected]
ã¢ãŒãã«ïŒ+47950 13322
2014幎6æ19æ¥ã«ã¯ãååŸ04æ56åã§ãlvasseur [email protected]æžããŸããïŒ
çããããã«ã¡ã¯ã
é¢é£ãããã©ããã¯ããããŸãããããã®æµ·ã®ã°ã©ããããããããããšãããšãåæ§ã®åé¡ãçºçããŸãïŒ http ïŒ//www.stanford.edu/~mwaskom/software/seaborn/examples/many_facets.htmlmpld3.fig_to_htmlïŒgrid.figã 'test.html'ïŒ
/home/vagrant/graph/local/lib/python2.7/site-packages/mpld3/mplexporter/exporter.py:82ïŒUserWarni ngïŒæ··åå€æã¯ãŸã ãµããŒããããŠããŸããã ãºãŒã åäœãæåŸ ã©ããã«æ©èœããªãå ŽåããããŸãã
warnings.warnïŒ "ãã¬ã³ããããå€æã¯ãŸã ãµããŒããããŠããŸããã"
ãã¬ãŒã¹ããã¯ïŒæåŸã®æåŸã®åŒã³åºãïŒïŒ
ãã¡ã€ã« ""ã1è¡ç®ã
ãã¡ã€ã« "/home/vagrant/graph/local/lib/python2.7/site-packages/mpld3/_display.py"ã236è¡ç®ãfig_to_html
figure_json = json.dumpsïŒfigure_jsonïŒã
ãã¡ã€ã«ã/usr/lib/python2.7/json/__init__.pyãã231è¡ç®ããã³ã
return _default_encoder.encodeïŒobjïŒ
ãã¡ã€ã« "/usr/lib/python2.7/json/encoder.py"ãè¡201ããšã³ã³ãŒã
ãã£ã³ã¯= self.iterencodeïŒoã_one_shot = TrueïŒ
iterencodeã®ãã¡ã€ã« "/usr/lib/python2.7/json/encoder.py"ãè¡264
return _iterencodeïŒoã0ïŒ
ãã¡ã€ã« "/usr/lib/python2.7/json/encoder.py"ãè¡178ãããã©ã«ã
TypeErrorïŒreprïŒoïŒ+ "ã¯JSONã·ãªã¢ã«åå¯èœã§ã¯ãããŸãã"ïŒãçºçãããŸã
TypeErrorïŒ0ã¯JSONã·ãªã¢ã«åå¯èœã§ã¯ãããŸãã
åé¡ã¯ãnumpy.int64çªå·ãå éšã§äœ¿çšãããŠããããããã¯ããã©ã«ãã§jsonã·ãªã¢ã«åã§ããªãããšã§ãã
ãããåŠçããããã®json.JSONEncoderãæäŸããããã«ãã©ã€ãã©ãªã«ããã¯ãå¿ èŠã§ããâ
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããããGitHubã§è¡šç€ºããŠãã ããã
ãåèãŸã§ã«ã
from json import JSONEncoder
class MyEncoder(JSONEncoder):
def default(self, obj):
if isinstance(obj, numpy.int64):
return int(obj)
return JSONEncoder.default(self, obj)
return template.render(figid=json.dumps(figid),
d3_url=d3_url,
mpld3_url=mpld3_url,
figure_json=json.dumps(figure_json, cls=MyEncoder),
extra_css=extra_css,
extra_js=extra_js)
/mpld3/_display.pyã®åé¡ã解決ããŸãïŒfig_to_html
ä»ã¯è©ŠãæéããããŸããããããã¯åé¡ã§ããã解決çã®æ£ããæ¹åæ§ã§ããããã«æãããŸãã json.dump
ããã¥ã¡ã³ãã§ã¯ã default
ãªãã·ã§ã³ã䜿çšãããšããããã«è»œéãªãœãªã¥ãŒã·ã§ã³ããããšæããŸãããæçµçã«ã¯1è¡çããªãå¯èœæ§ããããŸãã ãã«ãªã¯ãšã¹ããå®è¡ããæºåã¯ã§ããŠããŸããïŒ
ããã¯PRïŒ213ã§ä¿®æ£ããããšæã£ãŠããŸããããå ã®æçš¿ã®ipythonããŒãããã¯ããŸã æ©èœããŠããŸããã ä»ã®èª°ãããããè©Šãããšãã§ããŸããïŒ
ãã€ãè©ŠããŠã¿ãŸã
ãŸã ããã§æ··ä¹±ããŠããŸã...ïŒ213ãå®éã«ããã§äœããä¿®æ£ãããã©ããã¯ããããŸããã ãããªãã§int64ãªããžã§ã¯ããã·ãªã¢ã«åããããšãã§ããŸã...
ããã¯è§£æ±ºãããŸãããïŒ
ç§ã¯fig_to_htmlãã³ããçæããå³ãèŠãããšãã§ããŸããïŒç§ã¯TypeError: 0 is not JSON serializable
ãååŸããŸãïŒã å³ã¯ããŸãçæãããŸãã
plt.barã䜿çšããŠåè©Šè¡ãããšãã«ãã«ã¹ã¿ã æååã§yticksã䜿çšããå Žåã«ããšã©ãŒãçºçããŸãã
ã®è§£ãæ¹ïŒ
ããããªãã 軞ã©ãã«ãæŽæ°ã®ã·ãªã¢ã«åã§ããªãããŒãžã§ã³ã§ããããšã«åé¡ãããããã§ãã ããªããäœããç解ããå Žåã¯ãç§ãã¡ã«ç¥ãããŠãã ããã
䜿çšãããšãã®ãšã©ãŒãçºçããããšãææãããã£ãã ãã§ã
dates = df.Date.apply(lambda dt: dt.strftime('%B')[:3] + dt.strftime(' %d')).values
plt.xticks(x, dates, rotation='vertical')
ããããã§ã¯ãããŸãã
ax.set_xticklabels(dates, rotation='vertical')
ã圹ã«ç«ãŠãã°ã
ç·šéïŒããã«è©³ãã調ã¹ããšãåŸè ã®ããŒãžã§ã³ã§ã¯ãšã©ãŒã¯çºçããŸããããçµæã®å³åœ¢ã®xticksã¯å®éã«ã¯èšå®ãããŸããã
ç·šé2ïŒç§ã®æªããã¡ããã©èŠã€ããããã¯ãµããŒããããŠããŸããïŒïŒ22ïŒã
FWIWãç®±ã²ãå³ã䜿çšãããšãåé¡ãåçŸãããå¯èœæ§ããããŸãã
import numpy as np, mpld3
np.random.seed(937)
data = np.random.lognormal(size=(37, 4), mean=1.5, sigma=1.75)
labels = list('ABCD')
fs = 10 # fontsize
fig, axes = plt.subplots(1, 1, figsize=(6, 6))
axes.boxplot(data, labels=labels)
axes.set_title('Default', fontsize=fs)
html_fig = mppld3.fig_to_html(fig)
å ·äœçã«ã¯ãããã«pipfreezeã®ããŒãžã§ã³ããããŸã
cycler==0.10.0
Jinja2==2.8
MarkupSafe==0.23
matplotlib==1.5.1
mpld3==0.2
numpy==1.10.4
pandas==0.17.1
ptyprocess==0.5.1
pyparsing==2.1.0
python-dateutil==2.5.0
pytz==2015.7
six==1.10.0
wheel==0.29.0
Python3.4.3ã®å Žåã
@lvasseurã«ãã£ãŠææ¡ããããããã¯åé¡ãä¿®æ£ããŠããããã§ãããããã解決çã§ãããã©ããã¯ããããŸããã
å ã®äŸãæ©èœãããã«ã¯ãnp.arangeïŒ2000,2002,1ïŒã®ä»£ããã«[floatïŒxïŒfor x in rangeïŒ2000,2002ïŒ]ã䜿çšããŸãã
é¢é£ãããã©ããã¯ããããŸãããããã®æµ·ã®ã°ã©ããããããããããšãããšãåæ§ã®åé¡ãçºçããŸãïŒ http ïŒ//www.stanford.edu/~mwaskom/software/seaborn/examples/many_facets.html
æµ·ã®æ£ã°ã©ãã®å³ã«mtld3.display(fig)
ãè©ŠããŠãããšãã«ãåããšã©ãŒãçºçããŸãã
TypeErrorïŒ0ã¯JSONã·ãªã¢ã«åå¯èœã§ã¯ãããŸãã
誰ã§ãmpld3ã§æµ·ã®ãããããã¬ã³ããªã³ã°ã§ããŸããïŒ
ããã¯ãããŒã¿å€ã«nan
ãããããã«çºçããããã§ãã _display.py:243ã§å£ãã
figure_json
dictã§nan
ãNone
ã«çœ®ãæãããšãæåŸ
ã©ããã®åºåãåŸãããŸãã
ç·šéïŒäžèšã¯åé¡ã解決ããŠããªãããã§ãïŒç§ã¯ãããã°ã€ã³ã¿ãŒããªã¿ãŒã§ãã¹ãããŠããŸããããmpld3ã䜿çšããå Žåã¯æ©èœããŸããã§ããïŒã
ãããã£ãŠã sns.barplot()
ã¬ã³ããªã³ã°ã¯æ©èœããŸãããã plt.bar()
ã¬ã³ããªã³ã°
è¡ãè¿œå ããŠãããä¿®æ£ããŸãã
elif isinstance(obj, (numpy.ndarray,)):
return obj.tolist()
/mpld3/_display.pyãžïŒNumpyEncoder
ããããšã@jaklingerããã¯
@jaklinger ãããã«ã¡ã¯ãããªãã®ææ¡ã«æè¬ããŸããããã¯å®ç§ã«æ©èœããŸãïŒ 1ã€ã ãæ確ã«ãããã£ãã®ã§ãããnumpyé
åãèŸæžã«å€æããŠè¿ãããšããŸããããèŸæžã«åé¡ã¯ãããŸããã§ãããããfloat 32ã¯jsonã·ãªã¢ã«åã§ããŸããããšãããšã©ãŒãã¹ããŒãããå°å·ããŠç¢ºèªããŸããã tolistïŒïŒã¡ãœããã䜿çšããã ãã§ãé
åãPythonãªã¹ãã«å€æãããŸããã
åïŒ[100ã 0ã0ã0ã0ã]
tolistä»ãïŒ[100.0ã0.0ã0.0ã0.0ã0.0]ãããŠããã¯å®å
šã«æ»ããŸããã
ã§ã¯ãåé¡ã¯æ£ç¢ºã«ã¯äœã§ãããïŒ ãããããé¡ãããŸãã
@ padmaksha18ããªããäœãæå³ããã®ã100ïŒ
numpyé åãèŸæžã«å€æããŸãã
ãããïŒèŠããã«ïŒ numpy
ãšpython
ã¿ã€ãã¯åãã§ã¯ãããŸããïŒ float32
ã¯float
ãšåãã§ã¯ãããŸãã; array
ã¯list
ãªã©ãšåãã§ã¯ãªãã JSONEncoderã¯ã©ã¹ã¯ 'ãã€ãã£ãã®python
ã¿ã€ãã®ã¿ãèš±å¯ããŸãã ãããã£ãŠ...ãã®é¢æ°ïŒæ°ããä¿®æ£ãå«ãïŒã®ãã€ã³ãã¯ãå
¥åobj
ããã€ãã£ãã®python
çžåœãããã®ã«å€æããããšã§ãã
@jaklinger ïŒããã«ã¡ã¯ãžã§ãšã«ãã©ããããããšã
pip install "git + https://github.com/javadba/mpld3@display_fix "
æãåèã«ãªãã³ã¡ã³ã
è¡ãè¿œå ããŠãããä¿®æ£ããŸãã
/mpld3/_display.pyãžïŒNumpyEncoder