Hãy xem xét ví dụ sau đây (được thực hiện trên 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'
Khi lưu đầu ra để .jpg
tôi nhận được kết quả sau (đó là giống với bản xem trước trong hình vẽ):
Thông báo thuộc tính FaceColor
trong ô mã thứ 2, không có trong đối tượng thứ nhất. Vấn đề có vẻ là hàm viscircles
mà bạn đã sử dụng không được vẽ hình dạng với nền, thay vào đó, nó vẽ một đường thẳng. Tôi không rõ vì sao bạn thấy bản xem trước theo cách bạn làm (tức là với nền).
Sidenote: tùy chọn 'DrawBackgroundCircle'
cho viscircles
chỉ vẽ một số nền trắng cho đường viền.
Bạn nên thử một số cách khác để vẽ vòng tròn đầy, chẳng hạn như:
- Sử dụng
annotation
đối tượng như trong ví dụ của tôi ở trên. Lưu ý rằng những yêu cầu bạn cung cấp tọa độ trong figure
đơn vị (và không trục!).
Sử dụng 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);
[đoạn dựa trên a comment of this submission]
Vẽ với các dấu hiệu khổng lồ:
plot(0.5,0.5,'.r','MarkerSize',70);
hoặc
scatter(0.5,0.5,70,'r','filled');
[đoạn mã được dựa trên this answer]. Như đã đề cập trong liên kết, nhược điểm ở đây là kích thước điểm đánh dấu không thay đổi với thu phóng.
- Như một phương án cuối cùng, bạn có thể lưu hình ảnh ở một số định dạng vectơ (chẳng hạn như
.emf
), chỉnh sửa nó (với cái gì đó như InkScape), mang các vòng tròn nền đến một lớp cao hơn và xuất nó.
Nguồn
2015-05-14 14:15:38
Bạn đã thử ['export_fig'] (http://www.mathworks.com/matlabcentral/fileexchange/23629-export-fig)? Nó cho phép bạn lưu các con số gần hơn với cách chúng được hiển thị. –
@ Dev-iL, tôi đã thử nó ngay bây giờ và nó có cùng một vấn đề. – user50222
Bạn có thể tải lên tệp '.fig' ở đâu đó không? Tôi có thể làm điều gì đó với nó .... –