我一直在尝试使用ipython笔记本中的plot.ly库替换我的matplotlib图。基本上我遇到的问题是自动化的plot.ly情节看起来不太好,我试图手动调整它们但是它们总是在笔记本的垂直方向上被切断。
我经常做的是排成N行x 2或3列的图。这些图的数据通常来自具有多个密钥的多索引的pandas数据框。这些图通常是数据与索引位置,其中刻度标签与索引键匹配。因此,刻度标签通常是长字符串,并且永远不会在图中共享(共享轴不行)。 ipython笔记本中的Matplotlib输出将渲染这样的东西,使得它们通常在垂直方向上需要缩放。一点点手动调整,看起来不错。
笔记本中的Plot.ly输出似乎在这方面受到限制。我修改了一些plot.ly演示代码,在笔记本中,刻度标签被切掉,或者侵占了剧情顶部的情节行。以下示例。
如果在布局对象中设置了autosize=False
,则开始调整宽度和高度,并设置每个YAxis对象的域,以便对事物进行改进。但是很难让一切都适合,并且仍然有一个体积适中的情节区域。似乎事情总是从底部切断,这只是2行的情节。我现在无法看到如何将事物扩展到更多行。
import plotly.plotly as py
from plotly.graph_objs import *
trace1 = Scatter(
x=["A,4.0,AS-15-8045,830,lot45", "A,5.0,AS-15-8045,830,lot45", "A,6.0,AS-15-`8045,830,lot45"],
y=[4, 5, 6],xaxis='x1',yaxis='y1',name='A series set'
)
trace3 = Scatter(
x=["B,4.0,AS-15-8045,830,lot03", "B,5.0,AS-15-8045,830,lot04", "B,6.0,AS-15-8045,830,lot05"],
y=[600, 700, 800],xaxis='x3',yaxis='y3',name='B series dataset'
)
trace2 = Scatter(x=[20, 30, 40],y=[50, 60, 70],xaxis='x2',yaxis='y2')
trace4 = Scatter(x=[4000, 5000, 6000],y=[7000, 8000, 9000],xaxis='x4',yaxis='y4')
data = Data([trace1, trace2, trace3, trace4])
layout = Layout(
xaxis1 = XAxis(domain=[0, 0.45],anchor='y1',title='x1'),
yaxis1 = YAxis(domain=[0, 0.45],anchor='x1',title='y1'),
xaxis2 = XAxis(domain=[0.55, 1],anchor='y2',title='x2'),
yaxis2 = YAxis(domain=[0, 0.45],anchor='x2',title='y2'),
xaxis3 = XAxis(domain=[0, 0.45],anchor='y3',title='x3'),
yaxis3 = YAxis(domain=[0.55, 1],anchor='x3',title='y3'),
xaxis4 = XAxis(domain=[0.55, 1],anchor='y4',title='x4'),
yaxis4 = YAxis(domain=[0.55, 1],anchor='x4',title='y4')
)
fig = Figure(data=data, layout=layout)
py.iplot(fig)
答案 0 :(得分:1)
免责声明,我为Plotly工作。
我刚在GitHub页面上为它创建了一个问题:https://github.com/plotly/python-api/issues/218
目前,我能够from IPython.display import IFrame
并使用IFrame(src=your_url, width=your_width, height=your_height)
在 new 单元格中显示该情节。
这对你现在有用吗?我将在评论中放下一个要点,显示我在下面尝试过的内容。
答案 1 :(得分:0)
您也可以直接使用width
中的height
和py.iplot
kwargs。