我正在尝试创建我的课程计划的pdf导出,并且我使用plotly offline for the graphs。在下面的MWE中,绘图将显示在Jupyter Notebook中,但在导出为pdf时不会显示。我使用File-->Download as-->PDF via Latex (.pdf)
导出。
我想制作一个pdf而不是使用html。我理解将html导出转换为pdf可能需要额外的一步,但我只是想知道是否有更直接的路由(代码修改?),这将允许我直接通过File-->Download as-->PDF via Latex (.pdf)
from plotly.offline import download_plotlyjs, init_notebook_mode, iplot
init_notebook_mode(connected=True)
import plotly.graph_objs as go
data = [go.Scatter(
x=[1, 2, 3],
y=[3, 2, 1])
]
iplot(data)
答案 0 :(得分:1)
我认为因为情节图是svg对象并且是由javascript生成的,所以我没有导出到我的jupyter笔记本中工作的PDF,所以我无法检查并确认我的答案。
Plotly offline没有显示为图像,你可以在线使用plot来做到这一点,它可以自由生成图形,
您需要创建一个在线帐户,还需要从plotly网站粘贴用户名和API密钥(API密钥可以在设置中找到)。
注意:如果这些地块是公共或私人共享的,请以情节方式进行检查,我不负责您的地块公开。
无论如何,这将为您提供图表的图像输出,您可以将其导出为PDF
<强>代码:强>
import plotly
import plotly.graph_objs as go
plotly.plotly.sign_in('<<username goes here>>', '<<api key goes here>>')
trace = go.Bar(x=[2, 4, 6], y= [10, 12, 15])
data = [trace]
layout = go.Layout(title='A Simple Plot', width=800, height=640)
fig = go.Figure(data=data, layout=layout)
plotly.plotly.image.save_as(fig, filename='a-simple-plot.png')
from IPython.display import Image
Image('a-simple-plot.png')
答案 1 :(得分:1)
一个简单的解决方案是使用image_bytes = fig.to_image(format='png')
而不是使用Image(image_bytes)
进行显示,但是首先您应该安装orca
和
pip3 install psutil requests
示例:
fig = go.Figure()
""" here goes some code to draw """
image_bytes = fig.to_image(format='png', , width=1200, height=700, scale=1) # you can use other formats as well (like 'svg','jpeg','pdf')
#instead of using fig.show()
from IPython.display import Image
Image(img_bytes)
您可以阅读更多here
比起您可以使用File -> Download as -> PDF
或使用终端机jupyter nbconvert --to pdf <notebook_name>.ipynb
来进行转换
答案 2 :(得分:1)
我没有上述确切问题的解决方案。但是,如果您想考虑.html格式,这是一个对我有用的不错的解决方案。毕竟,我的目标仅仅是与没有安装jupyter
的人共享笔记本。
使用plotlyhtmlexporter执行到.html
的转换。
这是一段您可以复制粘贴的代码:
pip install plotlyhtmlexporter
jupyter nbconvert --to plotlyhtml mynotebook.ipynb
然后,您可能想尝试从浏览器中将.html保存为.pdf,但我认为这等同于将原始笔记本打印为.pdf。正如我所说,就我而言,拥有一个独立于jupyter的.html文件就足够了。
答案 3 :(得分:1)
您需要指定适当的Default Renderer(或渲染器,如果您想在Notebook中对其进行可视化,以及使用您提到的File-->Download as-->PDF via Latex (.pdf)
选项导出为PDF时)。
我自己也为此奋斗了几个小时,但最终为我工作的设置如下:
import plotly.io as pio
pio.renderers.default = "notebook+pdf" # Renderer for Notebook and HTML exports + Renderer for PDF exports
# init_notebook_mode(connected=True) # Do not include this line because it may not work
请注意,您可以使用+
符号连接任意数量的渲染器,何时使用它们,Plotly将magically know连接起来。