发布
社区首页 >问答首页 >Matlab似乎毫无理由地将图形保存到一个非常大的eps文件中。

Matlab似乎毫无理由地将图形保存到一个非常大的eps文件中。
EN

Stack Overflow用户
提问于 2015-02-18 16:59:37
回答 2查看 3.5K关注 0票数 3

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

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

在许多不同的情况下,这段代码一直在运行,没有任何问题,并给出了几个MB的文件。冲浪板中存在的点数、近似形状、曲线中的点数等等,任何变化或变化都是极微小的。我无法解释文件大小的差异。

我希望能对这种行为做出解释,或者选择一种替代的方式,把这张图片写到eps上。或者两者都是。现在我把它输出到png,但是我非常想要向量文件。以前有没有人遇到过非常大的每股收益的问题?

代码语言:javascript
代码运行次数:0
复制
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上。

谢谢大家!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-18 18:26:06

耶,多亏彼得的评论,我解决了这个问题!解决办法:

代码语言:javascript
代码运行次数:0
复制
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会有什么缺点吗?

如果有人对这个话题有一个更详细的答案,我很乐意阅读它。

票数 2
EN

Stack Overflow用户

发布于 2022-10-21 10:34:44

转到“文件->导出安装程序->呈现->自定义呈现”,并将画师(矢量格式)更改为OpenGL (位图格式),然后单击“应用到图形”。现在以任何格式保存该数字。甚至eps文件也不大于几MB。这对我有用!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28589334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档