如何在 pdf 中保存使用 for 循环创建的所有绘图表达图表

问题描述 投票:0回答:1

我试图将通过 for 循环生成的所有图表保存在单个 PDF 文件中。 我的样本数据:

import pandas as pd
import numpy as np
import plotly.io as pio
import plotly.express as px
import plotly.graph_objects as go

np.random.seed(0)
df = pd.DataFrame({'State' : np.repeat(['NY', 'TX', 'FL', 'PA'], 12),
                   'Month' : np.tile(pd.date_range('2023-09-01', '2024-08-01', freq = 'MS'), 4),
                   'Actual' : np.random.randint(1000, 1500, size = 48),
                   'Forecast' : np.random.randint(1000, 1500, size = 48)})

df['Month'] = pd.to_datetime(df['Month'])
df.set_index('Month', inplace = True)

我可以使用以下方法在 jupyter 笔记本中生成图表:

for s in df['State'].unique():
    d = df.loc[df['State'] == s, ['Actual', 'Forecast']]
    fig = px.line(d, x = d.index, y = d.columns)
    fig.update_layout(title = 'Actuals vs Forecast for ' + s, template = 'plotly_dark', xaxis_title = 'Month')
    fig.update_xaxes(tickformat = '%Y-%B', dtick = 'M1')
    fig.show()

有人可以告诉我如何在一个 pdf 文件中获取所有图表吗?

我尝试使用

fig_trace
make_subplots
方法,使用图形对象
go.Scatter
代替
px.line
,但它不起作用。

python pandas plotly
1个回答
0
投票

核心是,您需要安装 Kaleido 将 Plotly Express 图形/绘图保存为图像。有关更多信息,请参阅此处

然后您可以拍摄图像并制作合成图像并另存为 PDF。我使用了 Pillow,但还有其他方法详细说明here

您没有说您想要单页还是多页 PDF。

单页输出示例这里

多页输出示例这里

在每个标题中都有一个链接,您可以在其中获取 MyBinder 提供的会话,在该会话中这些笔记本将按所示方式工作。

这是单页示例的基本代码:

© www.soinside.com 2019 - 2024. All rights reserved.