gpt4 book ai didi

Matlab无缘无故将图形保存到一个非常大的eps文件

转载 作者:太空宇宙 更新时间:2023-11-03 20:34:30 38 4
gpt4 key购买 nike

我的大部分作品都使用 LaTeX,并且总是使用 eps 文件——Matlab 可以创建。没有任何问题,但是,对于一个新案例,我开始研究 Matlab 生成了一个 95MB 的文件(而 eps2pdf 无法用它生成 pdf)

这个问题可能很难回答。这似乎是一种意外的 Matlab 行为,但不幸的是我无法共享原始代码(加上代码很长并且依赖于如此多的变量和函数......)。我尝试使用内置函数构建一个最小工作示例,但当然它不会重现问题。不过,我可以给出代码的结构和创建的对象类型(见文章结尾):曲线、曲面、透明度,没有什么疯狂的事情。

这段代码在许多不同的情况下都没有任何问题地运行,并且给了我几 MB 的文件。表面之一中存在的点数、近似形状、曲线中的点数等。没有变化或变化很小。我无法解释文件大小的差异。

我欢迎对行为的解释或将此图片转换为 eps 的替代方法。或者两者兼而有之。现在我将它输出为 png,但我非常喜欢矢量文件。有没有人遇到过eps很大的问题?

colordef white;
figure('Color','White','Name','STUFF')
hold all

% Show a curve
lpot = plot3(//STUFF\\, '-',...
'Color', [0 0 1], 'LineWidth', 2);

% Show a curve
ph = plot3(//STUFF\\,'-',...
'Color', [1 0 0], 'LineWidth', 2);

% Show a curve
plot3(//STUFF\\, '-',...
'Color', [0 1 0], 'LineWidth', 2);

% Show a point
plot3(//STUFF\\, ...
'k', 'MarkerSize', 10, 'Marker', '^', ...
'MarkerFaceColor', [1 1 0]);

% Show a surface
surf(//STUFF\\);
colormap(jet);
shading interp;

% Show a surface in transparency
surf_1 = trisurf(//STUFF\\);
set(surf_1,'FaceColor', [1 1 1], 'EdgeAlpha', 0, 'FaceAlpha', 0.5);

% Axis adjustements
axis equal tight
xlabel('stuff');
ylabel('stuff');
zlabel('stuff');
view(2);
grid on;
h_cbar = colorbar;
ylabel(h_cbar, //STUFF\\);
legend(//STUFF\\,...
{//STUFF\\});
set(gcf,'units','normalized','outerposition',[0.10 0.10 0.80 0.80])

hold off

hgexport(gcf, ['mytoobigfigure.eps'],...
hgexport('factorystyle'), 'Format', 'eps');

代码在 matlab r2014b,windows 7 上运行。

谢谢大家!

最佳答案

是的,感谢 Peter 的评论,我解决了这个问题!修复:

myfig = gcf;                   % or define myfig when the figure is created
myfig.RendererMode = 'manual' % use a set with older versions of Matlab

这并不意味着我理解为什么会发生这种情况,而且这很可能不是 Matlab 所期望的行为。我认为出于某种原因,渲染器会在保存图形时从 OpenGL 切换到画家。检查 eps,很明显透明度非常错误(在大多数地方关闭)并且多边形偏移(或允许在其补丁前面画线的属性)也非常差。无论是否涉及位图,检索此类信息都超出了我的技能范围。但显然保存的图形与显示的图形不一样。还应注意,将渲染器切换为手动不会以任何其他方式影响屏幕上的图片。我想知道默认情况下将渲染器设置为手动是不是一个好主意……一直强制使用 OpenGl 会有什么缺点吗?

如果有人对此主题有更详细的答案,我很乐意阅读。

关于Matlab无缘无故将图形保存到一个非常大的eps文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28589334/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com