alpha在matlab中的作用,在MATLAB中用alpha值绘制圆圈

作者在博客中分享了如何在Matlab中创建带有透明度的散点图,以显示数据点的重复。由于直接使用plot函数无法设置圆圈的透明度,作者通过patch函数手动绘制了大量小圆圈来实现这一效果。然而,这种方法需要预先设定绘图的大小,并且随着数据量的增加,处理变得复杂。作者寻求一个更简洁、不依赖于特定绘图尺寸的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我正在创建一些数据的散点图,就像你一样,我有一些重复的数据点,我想将它们绘制成具有一些alpha值的圆圈,以便在同一位置堆积额外的点是显而易见的.

据我所知,你无法设置你用plot(x,y,’o’)生成的小圆圈的alpha属性,所以我自己使用patch()绘制了数千个小圆圈:

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

正如你所看到的,这不是最佳的,因为我需要知道并设置绘图的大小(xlim和ylim),然后绘制它以使圆圈最终成为圆形.如果我重新塑造情节,那么它们最终会成为椭圆形.我最终还有数以百万计的物品,这在传说中是一种痛苦.

有没有更简单的方法?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值