1

我一直在尝试使用 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)
4

2 回答 2

2

免责声明,我为 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)

这对你现在有用吗?我将在评论中说明我在下面尝试过的内容。

于 2015-05-23T23:17:57.243 回答
0

你也可以直接使用widthheightkwargs py.iplot

这是我们的用户指南中的一个示例

于 2015-05-25T14:37:20.217 回答