加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 删除colormap的一部分

发布时间:2020-12-20 11:49:48 所属栏目:Python 来源:网络整理
导读:我真的很喜欢“RdBu_r”色彩图,但我想剪掉蓝色和红色之间的白色部分.是否有捷径可寻? 解决方法 是的,但在你的情况下,制作一个在蓝色和红色之间进行插值的色彩图可能更容易. 例如: import numpy as npimport matplotlib.pyplot as pltfrom matplotlib.color
我真的很喜欢“RdBu_r”色彩图,但我想剪掉蓝色和红色之间的白色部分.是否有捷径可寻?

解决方法

是的,但在你的情况下,制作一个在蓝色和红色之间进行插值的色彩图可能更容易.

例如:

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

cmap = LinearSegmentedColormap.from_list('name',['red','blue'])

fig,ax = plt.subplots()
im = ax.imshow(np.random.random((10,10)),cmap=cmap)
fig.colorbar(im)
plt.show()

enter image description here

请注意,如果您想要一个不是HTML颜色名称的红色阴影,则可以替换确切的RGB值.

但是,如果您确实想要“剪切另一个色彩映射的中间”,则可以在不包含中间色域的范围内对其进行评估并创建新的色彩映射:

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

# Remove the middle 40% of the RdBu_r colormap
interval = np.hstack([np.linspace(0,0.3),np.linspace(0.7,1)])
colors = plt.cm.RdBu_r(interval)
cmap = LinearSegmentedColormap.from_list('name',colors)

# Plot a comparison of the two colormaps
fig,axes = plt.subplots(ncols=2)
data = np.random.random((10,10))

im = axes[0].imshow(data,cmap=plt.cm.RdBu_r,vmin=0,vmax=1)
fig.colorbar(im,ax=axes[0],orientation='horizontal',ticks=[0,0.5,1])
axes[0].set(title='Original Colormap')

im = axes[1].imshow(data,cmap=cmap,ax=axes[1],1])
axes[1].set(title='New Colormap')

plt.show()

enter image description here

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读