如何解决自定义 Matplotlib 颜色图
我想构造一个主要由三种颜色组成的颜色图,类似于颜色图'brg':
但是,我想在两个方面进行修改:
- 我想分别用蓝色、黑色和红色替换蓝色、红色和绿色。
- 我想扩大中间颜色的区域。作为一种规范,我目前正在使用 matplotlibs 'Normalize',我想我可以选择非线性归一化,但我宁愿只是在颜色图的中间“添加红色(黑色)”并坚持线性归一化。立>
解决方法
创建此类颜色图的最简单方法是通过 LinearSegmentedColormap.from_list('',['b','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('','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,(1,'r')])
plt.colorbar(ScalarMappable(cmap=cmap2),label=f'pure black occupies {width}')
plt.show()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。