当我使用fill或viscircles函数绘制具有图背景的圆时,如图所示,它按预期显示在图的顶部,但另存为jpg或png后,背景移至图的底部并不再可见。
我该如何解决?
注意:不是因为白色是透明色。我尝试了灰色,我尝试了红色,两者的表现都与白色相同。
请考虑以下示例(基于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
,得到以下结果(与图中的预览相同):
请注意FaceColor
第二个代码单元格中的属性,该属性在第一个对象中不存在。问题似乎是viscircles
您使用的函数不应绘制带有背景的形状,而是绘制一条线。我不清楚为什么您会以这种方式(即带有背景)查看预览。
旁注:该'DrawBackgroundCircle'
选项viscircles
仅会为轮廓绘制一些白色背景。
您应该尝试一些其他方法来绘制实心圆,例如:
annotation
如上面的示例中那样使用对象。请注意,这些要求您提供figure
单位(而不是轴'!)的坐标。使用填充的多边形:
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);
[摘要基于此提交的评论]
用巨型标记绘图:
plot(0.5,0.5,'.r','MarkerSize',70);
要么
scatter(0.5,0.5,70,'r','filled');
[代码段基于此答案]。如链接中所述,此处的缺点是标记大小不会随着缩放而改变。
.emf
),进行编辑(使用InkScape之类的东西),将背景圆圈移到更高的层并导出。本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句