如何防止 Plotly 在导出为 PDF 时减少一行中的点数?

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

我正在使用 pythonplotly 包来生成论文的绘图。我使用 Fig.write_image() 命令导出图形。但是,导出为 pdf(或 svg 或 eps)时,用于描述线散点图的点数会减少。在我的jupyter笔记本中,曲线看起来很平滑,导出为pdf,我清楚地看到“点”。

在矢量图形软件中打开的PDF图片

这是一个最小的例子:

import plotly.graph_objects as go
import numpy as np

xvalues=np.linspace(0,10,10000)

fig=go.Figure()
fig.add_trace(go.Scatter(x=xvalues, y=np.sin(xvalues), name="sin(x) marker", mode='markers', marker=dict(size=1)))
fig.add_trace(go.Scatter(x=xvalues, y=np.cos(xvalues), name="cos(x) line", ))

fig.show()
fig.write_image("cos.pdf")

我使用了不同的格式,例如 svg 或 eps,但结果相同。此外,打开文件的软件不会影响绘图。导出为 png 时,曲线看起来很平滑。

这是一个错误还是一个功能?我认为这是某种压缩?

解决方法是从线条类型切换为标记,并相应地增加点数。但是,我不确定这在文件大小方面是否是一个好的解决方案。此外,这需要对图例进行一些修改才能得到一条线而不是点。

我想将这些图包含在 Latex 文档中。只要它仍然是矢量图形,我就可以根据需要更改文件格式。

python pdf plot plotly
1个回答
0
投票

您需要将线形状设置为“样条线”。默认为“线性”(点通过直线连接)。

shape
- 确定线条形状。使用“样条线”时,线条是 使用样条插值绘制。其他可用值 对应于逐步的线条形状。

fig.add_trace(go.Scatter(
   x=xvalues, y=np.cos(xvalues), name="cos(x) line", line=dict(shape='spline')
))
© www.soinside.com 2019 - 2024. All rights reserved.