perche il seguente esempio (fatta su 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'
Quando si salva l'output a .jpg
ottengo il seguente risultato (che è identico al l'anteprima all'interno della figura):
Si noti la proprietà FaceColor
nella seconda cella di codice, che è assente nel 1 ° oggetto. Il problema sembra essere che la funzione viscircles
che hai usato non dovrebbe disegnare una forma con uno sfondo, piuttosto, disegna una linea. Non mi è chiaro il motivo per cui vedi l'anteprima come fai tu (cioè con uno sfondo).
Sidenote: l'opzione 'DrawBackgroundCircle'
per viscircles
disegna semplicemente uno sfondo bianco per il contorno.
Si dovrebbe provare alcuni modi alternativi per tracciare cerchi pieni, come ad esempio:
- Utilizzando
annotation
oggetti come nel mio esempio di cui sopra. Nota che questi richiedono di fornire le coordinate nelle unità figure
(e non negli assi!).
Utilizzando 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);
[frammento si basa su a comment of this submission]
Tracciare con indici giganti:
plot(0.5,0.5,'.r','MarkerSize',70);
o
scatter(0.5,0.5,70,'r','filled');
[snippet è basato su this answer]. Come accennato nel link, il lato negativo qui è che la dimensione del marcatore non cambia con lo zoom.
- Come ultima risorsa, è possibile salvare l'immagine in un formato vettoriale (come
.emf
), modificarla (con qualcosa come InkScape), portare i cerchi di sfondo su un livello superiore ed esportarlo.
fonte
2015-05-14 14:15:38
Hai provato ['export_fig'] (http://www.mathworks.com/matlabcentral/fileexchange/23629-export-fig)? Dovrebbe consentire di salvare figure più vicine al modo in cui vengono visualizzate. –
@ Dev-iL, l'ho provato in questo momento e ha lo stesso problema. – user50222
Potresti caricare il file '.fig' da qualche parte? Potrei riuscire a fare qualcosa con questo ... –