You need to enable JavaScript to run this app. matplotlib散点图叠加青黄实现减色时,如何得到高饱和强绿色而非褪色效果
优惠活动
大模型
产品
解决方案
定价
更多

matplotlib散点图叠加青黄实现减色时,如何得到高饱和强绿色而非褪色效果

核心问题根源

你当前跑出来的色块偏淡、色彩差异低,本质是两个绕不开的逻辑问题:

  • 你现在用的alpha=0.5半透叠加,走的是屏幕天生的加色Alpha合成逻辑,叠在纯白画布上时,再高饱和的纯色都会被白色按透明度比例稀释——纯黄半透一半变浅奶黄,纯青半透一半变浅天蓝,就算两个半透块真叠到一起,算出来的混合色也因为混了白变得发灰,根本出不来高饱和的正绿
  • 原来的x坐标设成1和2,两个大尺寸散点差得太远,根本没挨到一起,连重叠区都没有,自然看不到混合出来的绿色,视觉上就是两个淡得发飘的色块
针对性调整方案
  • 别再靠半透叠出混合色了,半透叠在白背景上永远出不了高饱和效果,直接用没被稀释的高饱和CMY原色色值铺独立的两个色块
  • 把两个散点的水平位置拉近,留出足够的重叠区域,重叠部分直接手动填模拟减色混合的高饱和正绿色,跳过matplotlib默认的淡色合成计算
  • 把坐标轴全藏了,别留刻度、边框那些多余的元素,和减色原理示例的简洁展示对齐
可直接运行的调整后代码
import matplotlib.pyplot as plt
# 固定画布尺寸,保证色块比例协调
fig, ax = plt.subplots(figsize=(6, 3), dpi=200)
# 匹配色块展示需要的散点尺寸
point_size = 120000
y_pos = [0]
# 调整水平位置,让两个色块形成部分重叠
x_yellow = [0.8]
x_cyan = [1.5]
# 绘制高饱和原色块,无透明度稀释
plt.scatter(x_yellow, y_pos, s=point_size, color='#f9d71c')
plt.scatter(x_cyan, y_pos, s=point_size, color='#00bcd4')
# 在重叠区域绘制模拟减色混合的高饱和绿色
overlap_x = [(x_yellow[0] + x_cyan[0]) / 2]
plt.scatter(overlap_x, y_pos, s=point_size * 0.7, color='#00a850')
# 隐藏坐标轴,匹配示例简洁展示效果
ax.set_axis_off()
plt.show()
最终效果

跑出来的三个色块:左边高饱和正黄、右边高饱和正青、中间重叠区是正绿色,三个颜色对比极强,没有原来的发淡、发灰问题,色彩边界清晰。

内容的提问来源于stack exchange,提问作者Tomasz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.06 14:06:05