我有一个 LaTeX 文件(使用 编译pdflatex
),其中有一些通过\includegraphics
命令添加的 pdf 图像。问题是图像非常大(最多 10MB),输出文件太大(超过 30MB)。
图像是通过splot
命令获得的,gnuplot
但图中有很多点。
我尝试获取其他格式(基本上是)的图像,.jpg
因为.png
文件大小要小得多,因此最终结果的大小.pdf
也较小。但是当我将这些文件包含到我的 LaTeX 文档中时,图像的质量会下降很多(即使单独查看时它们的质量还可以)。
我怎样才能获得一个小型 pdf 文件,而pdflatex
不会牺牲太多图像质量?我猜想问题在于从 pdf-latex 调整图像大小,但无法解决。或者换句话说,我怎样才能获得较小的.pdf
图像(或其他可接受的格式pdflatex
),而不会在添加到 pdf 文件时损失太多质量?
LaTeX 命令是\includegraphics[width=7cm]{file.pdf}
。请注意,我必须调整它们的大小以适合 7 厘米的宽度。
编辑:
我添加了 4 个文件(中的原始图像.pdf
,.png
以及用 编译的.jpeg
结果pdf
文件pdflatex
。这也是乳胶代码。
\documentclass[a4paper,10pt]{article}
\usepackage[utf8x]{inputenc}
\usepackage[pdftex]{graphicx}
\begin{document}
\begin{figure}
\centering
\includegraphics[width=7cm]{numeric.pdf}
\caption{Pdf file.}
\end{figure}
\begin{figure}
\centering
\includegraphics[width=7cm]{numeric.png}
\caption{Png file.}
\end{figure}
\begin{figure}
\centering
\includegraphics[width=7cm]{numeric.jpeg}
\caption{Jpeg file.}
\end{figure}
\end{document}
答案1
我在 Python 中将 dpi 设置为 1000 后,保存文件的质量非常好eps
。使用此设置,我可以以最高级别放大,并且线条质量不会有任何损失。
我不知道您是否有办法在 gnuplot 中设置 dpi。如果不能,请使用 Python 绘制图表或在 tikz/pgf-plots 中绘制图表。
如果您想检查质量,请查看我关于代码审查的这篇文章并运行代码。
编辑:
这是下载文件的链接,它们看起来比谷歌文档输出更好(这不是相同的图像,代码链接只生成我能找到的最快的前两个)。
编辑2:
这是用 latex 编译的 PDF 中的数据(至少是它的图像)。我从数据网格文件中删除了第一行 x、t、u。
代码:使用别名打开 ipythonipython --pylab=qt
from mpl_toolkits.mplot3d import axes3d
import numpy as np
import pylab
x, t, u = np.loadtxt('/home/dustin/Documents/RandomPythonCode/datagrid.txt',
unpack = True)
x = x.reshape(-1, 701)
t = t.reshape(-1, 701)
u = u.reshape(-1, 701)
fig = pylab.figure()
ax = fig.add_subplot(111, projection = '3d')
cmap = pylab.get_cmap('selection')
ax.plot_surface(x, t, u, cmap = cmap, linewidth = 0)
pylab.savefig('name.eps', format = 'eps')
pylab.show()
以下是我喜欢的选择选项:Accent、gist_rainbow、jet 和 Paired。
要以旋转形式保存它,您需要:ax.view_init(elev=elevation_angle, azim=azimuthal_angle)
并添加旋转时图表将在底部显示的角度变化。
编辑3:
gnuplot
根据我阅读手册的理解set hidden3d
,set hidden3d
隐藏了从某些角度无法看到的部分图,因为在现实生活中我们无法看透物体。默认情况下,这是在 Python 中查看图的方式。您无法看到所有内容,并且可以通过旋转图获得不同的视图。因此,我认为不需要设置任何东西来实现此目标。