我想使用来自 matplotlib 的颜色图,例如 CMRmap。但我不想在开头使用“黑色”,在结尾使用“白色”。我有兴趣使用中间颜色绘制我的数据。我认为人们经常使用它,但我正在通过互联网进行搜索,但无法找到任何简单的解决方案。如果有人提出任何解决方案,我将不胜感激。
原文由 rana 发布,翻译遵循 CC BY-SA 4.0 许可协议
我想使用来自 matplotlib 的颜色图,例如 CMRmap。但我不想在开头使用“黑色”,在结尾使用“白色”。我有兴趣使用中间颜色绘制我的数据。我认为人们经常使用它,但我正在通过互联网进行搜索,但无法找到任何简单的解决方案。如果有人提出任何解决方案,我将不胜感激。
原文由 rana 发布,翻译遵循 CC BY-SA 4.0 许可协议
在我的 CMasher 包中,我提供了 get_sub_cmap()
函数 ( https://cmasher.readthedocs.io/user/usage.html#sub-colormaps ),它接受一个颜色图和一个范围,并返回一个包含请求范围的新颜色图。
因此,例如,如果您想要获取 viridis
颜色图的 20% 到 80% 之间的颜色,您可以使用以下方法实现:
import cmasher as cmr
cmap = cmr.get_sub_cmap('viridis', 0.2, 0.8)
PS:不要使用 jet
(或 CMRmap
),因为它们在感知上不是连续的。相反,使用 matplotlib 中的 5 个正确的颜色图或 cmocean 或我的 CMasher 提供的颜色图。
编辑:在最新版本的 CMasher 中,还可以使用相同的函数通过为函数提供要采用的段数来从任何颜色图中创建离散/定性颜色图。例如,如果你想创建 viridis
在 20% 到 80% 范围内的定性颜色图,你可以这样做:
cmap = cmr.get_sub_map('viridis', 0.2, 0.8, N=5)
原文由 1313e 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
2 回答869 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
静态 方法 colors.LinearSegmentedColormap.from_list 可用于创建新的 LinearSegmentedColormap。下面,我在 0.2 和 0.8 之间的 100 个点对原始颜色图进行采样:
并使用这些颜色生成新的颜色图:
左边的图显示了使用原始颜色图的图像(在这个例子中,
jet
)。右侧的图使用new_cmap
显示相同的图像。