gpt4 book ai didi

matlab-figure - 保存为jpg后将填充背景移动到底部

转载 作者:行者123 更新时间:2023-12-04 20:39:02 26 4
gpt4 key购买 nike

当我使用 fill 或 viscircles 函数绘制带有绘图背景的圆圈时,在图中它按预期出现在绘图的顶部,但在另存为 jpg 或 png 后,背景移动到绘图的底部和不再可见。

enter image description here

我该如何解决?

注意:这不是因为白色是透明的颜色。我试过灰色,我试过红色,两者的表现都和白色一样。

最佳答案

请考虑以下示例(在 MATLAB 2015a 上制作):

figure(); h=cell(1);
%% viscircles method:
subplot(1,2,1);
plot([0 1],[0,1]); set(gca,'Color',0.8*[1 1 1]); axis square;
h{1} = viscircles([0.5,0.5], 0.1,'EdgeColor','k','DrawBackgroundCircle',false);
get(h{1},'Children')

%// Line with properties:
%//
%// Color: [0 0 0]
%// LineStyle: '-'
%// LineWidth: 2
%// Marker: 'none'
%// MarkerSize: 6
%// MarkerFaceColor: 'none'
%// XData: [1x182 double]
%// YData: [1x182 double]
%// ZData: [1x0 double]

%% Annotation method:
subplot(1,2,2);
plot([0 1],[0,1]); set(gca,'Color',0.8*[1 1 1]); axis square;
pos = get(gca,'position');
h{2} = annotation('ellipse',[pos(1)+pos(3)*0.5 pos(2)+pos(4)*0.5 0.1 0.1],...
'FaceColor','w')
%// Ellipse with properties:
%//
%// Color: [0 0 0]
%// FaceColor: [1 1 1]
%// LineStyle: '-'
%// LineWidth: 0.5000
%// Position: [0.7377 0.5175 0.1000 0.1000]
%// Units: 'normalized'

将输出保存到 .jpg 时我得到以下结果(与图中的预览相同):

Comparison of two circle-drawing methods

请注意 FaceColor第二个代码单元中的属性,在第一个对象中不存在。问题似乎是 viscircles 您使用的函数不应该绘制带有背景的形状,而是绘制一条线。我不清楚为什么你会像你一样看到预览(即有背景)。

旁注: 'DrawBackgroundCircle' viscircles 的选项只是为轮廓绘制一些白色背景。

您应该尝试一些替代方法来绘制实心圆,例如:
  • 使用 annotation对象如我上面的例子。请注意,这些要求您在 figure 中提供坐标。单位(而不是轴!)。
  • 使用 filled polygons :
    N=20; c=[0.5,0.5]; r=0.1; color = [1 1 1];
    t = 2*pi/N*(1:N);
    hold all; fill(c(1)+r*cos(t), c(2)+r*sin(t), color);

    [ 片段基于 a comment of this submission ]
  • 用巨型标记绘图:
    plot(0.5,0.5,'.r','MarkerSize',70);

    或者
    scatter(0.5,0.5,70,'r','filled');

    [ 片段基于 this answer ]。正如链接中提到的,这里的缺点是标记大小不会随着缩放而改变。
  • 作为最后的手段,您可以将图像保存为某种矢量格式(例如 .emf ),对其进行编辑(使用类似 InkScape 的内容),将背景圆圈带到更高的层并将其导出。
  • 关于matlab-figure - 保存为jpg后将填充背景移动到底部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30025595/

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