danvk 的解决方案比这更干净、更快速,但我也能够通过从 DataFrame 构建 Dygraph 字符串来使其工作。它似乎限制在大约 15K 点,但好处是一旦创建,页面可以保存为静态 html 页面,并且 Dygraphs 绘图保持原位。为那些没有设置笔记本的人提供了一个很好的便携式共享机制。
单元格:
%%html
<script type="text/javascript" src="http://dygraphs.com/1.0.1/dygraph-combined.js"></script>`
单元格:
import string
import numpy as np
import pandas as pd
from IPython.display import display,Javascript,HTML,display_html,display_javascript,JSON
df = pd.DataFrame(columns=['x','y','z'])x=np.arange(1200)
df.y=np.sin(x*2*np.pi/10) + np.random.rand(len(x))*5
df.z=np.cos(x)
df.x=df.y+df.z/3 + (df.y-df.z)**1.25
s=df.to_csv(index_label="Index",float_format="%5f",index=True)
ss=string.join(['"' + x +'\\n"' for x in s.split('\n')],'+\n')
dygraph_str="""
<html>
<head>
<script type="text/javascript" src="http://dygraphs.com/1.0.1/dygraph-combined.js"> </script>
</head>
<body>
<div id="graphdiv5" style="margin: 0 auto; width:auto;"></div>
<script type="text/javascript">
g = new Dygraph(
document.getElementById("graphdiv5"), // containing div
""" + ss[:-6] + """,
{
legend: 'always',
title: 'FOO vs. BAR',
rollPeriod: 1,
showRoller: true,
errorBars: false,
ylabel: 'Temperature (Stuff)'
}
);
</script>
"""
display(HTML(dygraph_str))
笔记本长这样: