【问题标题】:Customize Matplotlib Colormap自定义 Matplotlib 颜色图
【发布时间】:2021-05-03 20:44:12
【问题描述】:

我想构建一个主要由三种颜色组成的颜色图,类似于颜色图“brg”:

不过,我想从两个方面进行修改:

  1. 我想将蓝色、红色和绿色分别替换为蓝色、黑色和红色。
  2. 我想扩展中间颜色的区域。作为一种规范,我目前正在使用 matplotlibs 'Normalize',我想我可以选择非线性归一化,但我宁愿只是在颜色图的中间'添加红色(黑色)'并坚持使用线性归一化。李>

【问题讨论】:

  • 感谢 JohanC,成功了。来吧,把它作为答案,以便我可以标记它,如果你愿意

标签: python python-3.x matplotlib colors colormap


【解决方案1】:

创建此类颜色图的最简单方法是通过LinearSegmentedColormap.from_list('', ['b', 'k', 'k', 'r'])。这会均匀地划分颜色,因此纯黑色占据范围的 1/3rd

该函数还允许通过 (position, color) 和 position 形式的元组来定位颜色,范围从左侧(底部)的 0 到右侧(顶部)的 1 )。下面是一个黑色占据 10% 范围的示例。

import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap
from matplotlib.cm import ScalarMappable
import numpy as np

cmap1 = LinearSegmentedColormap.from_list('', ['b', 'k', 'k', 'r'])
plt.colorbar(ScalarMappable(cmap=cmap1), orientation='horizontal',
             ticks=np.linspace(0,1,11), label='pure black occupies 1/3rd')
width = 0.1
cmap2 = LinearSegmentedColormap.from_list('', [(0, 'b'), ((1 - width) / 2, 'k'), ( (1 + width) / 2, 'k'), (1, 'r')])
plt.colorbar(ScalarMappable(cmap=cmap2), orientation='horizontal',
             ticks=np.linspace(0,1,11), label=f'pure black occupies {width}')
plt.show()

【讨论】:

    猜你喜欢
    • 2020-09-28
    • 1970-01-01
    • 1970-01-01
    • 2015-02-19
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 2021-12-29
    • 1970-01-01
    相关资源
    最近更新 更多