Tôi đang tạo một biểu đồ phân tán của một số dữ liệu, như bạn làm, và tôi có một số điểm dữ liệu lặp lại mà tôi muốn vẽ thành các vòng tròn với một số giá trị alpha để chồng chất trên các điểm phụ tại cùng một vị trí là hiển nhiên.Vòng tròn lô với giá trị alpha trong MATLAB
Theo như tôi có thể nói bạn không thể thiết lập các thuộc tính alpha của các vòng tròn nhỏ mà bạn tạo ra với plot(x, y, 'o')
, vì vậy tôi đã viện đến vẽ hàng ngàn vòng tròn nhỏ bằng patch()
bản thân mình:
x = repmat([1:10], [1 10]);
y = round(10*rand(100, 1))/10;
xlim([0 11])
ylim([0 1])
p = ag_plot_little_circles(x', y, 10, [1 0 .4], 0.2);
function p = ag_plot_little_circles(x, y, circle, col, alpha)
%AG_PLOT_LITTLE_CIRCLES Plot circular circles of relative size circle
% Returns handles to all patches plotted
% aspect is width/height
fPos = get(gcf, 'Position');
% need width, height in data values
xl = xlim();
yl = ylim();
w = circle*(xl(2)-xl(1))/fPos(3);
h = circle*(yl(2)-yl(1))/fPos(4);
theta = 0:pi/5:2*pi;
mx = w*sin(theta);
my = h*cos(theta);
num = 0;
for k = 1:max(size(x))
for f = 1:size(y,2)
num = num+1;
p(num) = patch(x(k)+mx, y(k,f)+my, col, 'FaceColor', col, 'FaceAlpha', alpha, 'EdgeColor', 'none');
end
end
end
Như bạn có thể thấy, đây không phải là tối ưu vì tôi cần biết và đặt kích thước của ô (xlim
và ylim
) trước khi vẽ đồ thị sao cho vòng tròn kết thúc bằng hình tròn. Nếu tôi định hình lại cốt truyện thì chúng sẽ trở thành hình bầu dục. Tôi cũng kết thúc với hàng triệu đồ vật, đó là một nỗi đau khi thực hiện truyền thuyết.
Có cách nào dễ dàng hơn không?
bạn có thể thêm một cuộc gọi ví dụ để chức năng của bạn? Sẽ dễ dàng hơn nếu không phải đọc chi tiết để tìm ra cú pháp ... – abcd
Vâng, ý tưởng hay. – Alex
Với bản phát hành MATLAB mới có vẻ như có thể nhưng nó vẫn không có giấy tờ. Xem [tại đây] (http://undocumentedmatlab.com/blog/plot-markers-transparency-and-color-gradient) – WYSIWYG