我正在尝试绘制 -3 到 3 范围内的对数比率,并希望负比率为绿色,正比率为红色,0(中心)的对数比率为白色。 matplotlib 中没有一个预先存在的配色方案提供此选项,而且我一直无法弄清楚如何手动输出漂亮的渐变。
原文由 A. Gup 发布,翻译遵循 CC BY-SA 4.0 许可协议
我正在尝试绘制 -3 到 3 范围内的对数比率,并希望负比率为绿色,正比率为红色,0(中心)的对数比率为白色。 matplotlib 中没有一个预先存在的配色方案提供此选项,而且我一直无法弄清楚如何手动输出漂亮的渐变。
原文由 A. Gup 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用 matplotlib.colors.LinearSegmentedColormap
的 from_list
方法似乎比这里的其他一些答案更直观。
from matplotlib.colors import LinearSegmentedColormap
cmap=LinearSegmentedColormap.from_list('rg',["r", "w", "g"], N=256)
或者进行更复杂的调整:
from matplotlib.colors import LinearSegmentedColormap
c = ["darkred","red","lightcoral","white", "palegreen","green","darkgreen"]
v = [0,.15,.4,.5,0.6,.9,1.]
l = list(zip(v,c))
cmap=LinearSegmentedColormap.from_list('rg',l, N=256)
原文由 ImportanceOfBeingErnest 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1k 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
您可以使用
LinearSegmentedColormap
创建自己的。我喜欢将红色和绿色通道的上限和下限设置为小于 1.0,这样颜色就不会太亮(这里我使用了 0.8)。调整它以适合您的口味。有关详细信息,请参阅 matplotlib 网站上的 custom_cmap 示例。
这是一个工作示例: