python画图怎样上色_python – 如何用更强的对比度为表面着色

您可以通过以下方式实现类似的外观

以下是修改代码的方法:

s = .05;

x = [-2:s:2+s];

y = [-1:s:3+s];

[X,Y] = meshgrid(x,y);

Z = (1.-X).^2 + 100.*(Y-X.*X).^2;

minZ = min(Z(:)); % Find minimum value of Z

maxZ = max(Z(:)); % Find maximum value of Z

C = minZ+(maxZ-minZ).*log(1+Z-minZ)./log(1+maxZ-minZ); % Create a log-scaled

% set of color data

surf(X,C,'EdgeColor','none');

colormap jet

这是由此产生的情节:

对数缩放如何工作……

用于产生颜色数据C的对数缩放的Z数据使得喷射颜色图的红橙色范围被更多的表面点使用,从而改善了该特定表面的对比度.通过这个简单的例子可以看到它的工作方式:

x = 0:5:100; % Create a range of values from 0 to 100

plot(x,x,'b-*'); % Plot the values as a straight line (y = x) in blue

hold on; % Add to the plot

plot(x,100.*log(1+x)./log(101),'r-*'); % Plot a log-scaled version of x in red

colorbar % Display the default jet color map,for comparison

原始蓝点均匀分布在右侧颜色条中对应的颜色范围内.对数缩放时,这些点向上移动到红线.请注意,这会导致较低的蓝绿色范围内的点密度降低,以及红橙色范围内的点密度增加.

一般情况下获得更好的对比

对于此处使用的特定曲面,颜色数据的对数缩放有助于在曲面上的所有点上使用更大范围的颜色映射.由于在较低高度(即颜色指数)值处存在许多点,因此对数比例将这些低点扩展得更多以在表面的大槽中使用更宽范围的颜色.

但是,如果要通过更好地使用颜色贴图的范围来改善任意曲面的对比度,则日志缩放并不总是有效.可能更好的一般解决方案是按升序对表面的所有高度值进行排序,然后将这些值映射到跨越整个颜色映射的线性范围.如果您为上述表面执行此操作,您将获得以下内容:

C = Z;

[~,index] = sort(C(:));

C(index) = 1:numel(index);

h = surf(X,'none');

colormap jet

caxis([1 numel(index)]);

这通常应该提供比C = Z默认表面着色更好的对比度.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值