2024-09-30 18:12:48 发布
网友
我最近发现了plotly,发现它非常适合作图,现在我有一个问题,我想把多个plot保存到一个html中,请怎么做
*我想保存多个绘图,即图、图1、图2等,而不是一个子绘图中有多个绘图,因为我发现子绘图中的绘图太小
这取决于如何构建html页面。如果使用from plotly.offline.plot(图,filename='name.html'),则不可能。 正如您所提到的,子地块太小,您可以在布局中使用高度和重量变量:
关于布局:
from plotly.offline import plot from plotly.subplots import make_subplots import plotly.graph_objects as go fig = make_subplots( rows=3, cols=1, shared_xaxes=True, vertical_spacing=0.02) fig.add_trace(go.Scatter(x=[0, 1, 2], y=[10, 11, 12]), row=3, col=1) fig.add_trace(go.Scatter(x=[2, 3, 4], y=[100, 110, 120]), row=2, col=1) fig.add_trace(go.Scatter(x=[3, 4, 5], y=[1000, 1100, 1200]), row=1, col=1) fig.update_layout(height=1200, width=600, title_text="Stacked Subplots with Shared X-Axes") fig['layout']['yaxis1'].update(domain=[0, 0.2]) fig['layout']['yaxis2'].update(domain=[0.3, 0.7]) fig['layout']['yaxis3'].update(domain=[0.8, 1]) plotly.offline.plot(fig, filename='name.html')
如果您自己构建html页面,您可以将html div呈现为http://www.codingwithricky.com/2019/08/28/easy-django-plotly/,并使用布局的高度和宽度变量使其变大或变小
在Plotly API中有一个函数to_html,它返回图形的HTML。此外,您可以设置选项paramfull_html=False,它将为您提供仅包含图形的DIV
to_html
full_html=False
通过添加包含数字的div,可以将多个数字写入一个HTML:
with open('p_graph.html', 'a') as f: f.write(fig1.to_html(full_html=False, include_plotlyjs='cdn')) f.write(fig2.to_html(full_html=False, include_plotlyjs='cdn')) f.write(fig3.to_html(full_html=False, include_plotlyjs='cdn'))
https://plot.ly/python-api-reference/generated/plotly.io.to_html.html
您还可以使用BeautifulSoup来进行DOM操作,并在HTML中需要的地方插入DIV
https://beautiful-soup-4.readthedocs.io/en/latest/#append
下面是一个看起来不错的例子:
import plotly.graph_objects as go from plotly.subplots import make_subplots import plotly.figure_factory as ff import numpy as np import plotly y1 = np.random.randn(200) - 1 y2 = np.random.randn(200) y3 = np.random.randn(200) + 1 x = np.linspace(0, 1, 200) colors = ['#3f3f3f', '#00bfff', '#ff7f00'] fig = make_subplots( rows=3, cols=2, column_widths=[0.55, 0.45], row_heights=[1., 1., 1.], specs=[[{"type": "scatter"}, {"type": "xy"}], [{"type": "scatter"}, {"type": "xy", "rowspan": 2}], [{"type": "scatter"}, None ]]) fig.add_trace( go.Scatter(x = x, y = y1, hoverinfo = 'x+y', mode='lines', line=dict(color='#3f3f3f', width=1), showlegend=False, ), row=1, col=1 ) fig.add_trace( go.Scatter(x = x, y = y2, hoverinfo = 'x+y', mode='lines', line=dict(color='#00bfff', width=1), showlegend=False, ), row=2, col=1 ) fig.add_trace( go.Scatter(x = x, y = y3, hoverinfo = 'x+y', mode='lines', line=dict(color='#ff7f00', width=1), showlegend=False, ), row=3, col=1 ) boxfig= go.Figure(data=[go.Box(x=y1, showlegend=False, notched=True, marker_color="#3f3f3f", name='3'), go.Box(x=y2, showlegend=False, notched=True, marker_color="#00bfff", name='2'), go.Box(x=y3, showlegend=False, notched=True, marker_color="#ff7f00", name='1')]) for k in range(len(boxfig.data)): fig.add_trace(boxfig.data[k], row=1, col=2) group_labels = ['Group 1', 'Group 2', 'Group 3'] hist_data = [y1, y2, y3] distplfig = ff.create_distplot(hist_data, group_labels, colors=colors, bin_size=.2, show_rug=False) for k in range(len(distplfig.data)): fig.add_trace(distplfig.data[k], row=2, col=2 ) fig.update_layout(barmode='overlay') plotly.offline.plot(fig, filename='test.html') #fig.show()
这取决于如何构建html页面。如果使用from plotly.offline.plot(图,filename='name.html'),则不可能。 正如您所提到的,子地块太小,您可以在布局中使用高度和重量变量:
关于布局:
如果您自己构建html页面,您可以将html div呈现为http://www.codingwithricky.com/2019/08/28/easy-django-plotly/,并使用布局的高度和宽度变量使其变大或变小
在Plotly API中有一个函数
to_html
,它返回图形的HTML。此外,您可以设置选项paramfull_html=False
,它将为您提供仅包含图形的DIV通过添加包含数字的div,可以将多个数字写入一个HTML:
https://plot.ly/python-api-reference/generated/plotly.io.to_html.html
您还可以使用BeautifulSoup来进行DOM操作,并在HTML中需要的地方插入DIV
https://beautiful-soup-4.readthedocs.io/en/latest/#append
下面是一个看起来不错的例子:
相关问题 更多 >
编程相关推荐