如何修改Matplotlib定性颜色图上的间隔?间隔、图上、颜色、Matplotlib

2023-09-03 09:08:05 作者:往事并不人烟

import matplotlib.pyplot as plt
import numpy as np

我有一个二维Numpy数组:

mock=
np.array([[0.1,0.2,0.3],
          [0.2,0.3,0.4],
          [0.3,0.4,0.5],
          [0.4,0.5,0.6],
          [0.5,0.6,0.7],
          [0.6,0.7,0.8],
          [0.7,0.8,0.9]])

我使用tab20c色彩映射表绘制这些值,来自所谓的定性色彩映射表:

plt.figure(figsize=(6,6))
im = plt.imshow(mock,cmap = "tab20c", vmin=0, vmax=1)
plt.colorbar(im)
excel数据查看 间隔设定颜色

如果我想要某个值以下的所有值,假设0.25的颜色与0.25相同,不仅替换绘图本身中的颜色,还替换颜色栏中的颜色,我该如何操作?预期的输出将是:左上角的所有3个方块都是红色的,色彩映射表中底部的5个矩形也都是红色的。

通过这样做,我实际上是在修改条形图中红色的间隔:新版本将显示0到0.25红色间隔中的所有内容,而不是将0.2到0.25之间的间隔值显示为红色。

推荐答案

您可以调整现有的色彩映射表:

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

tab20c = cm.get_cmap('tab20c', 256)
newcolors = tab20c(np.linspace(0, 1, 256))
red = np.array([1, 0, 0, 1])
newcolors[:int(256/4), :] = red
newcmp = ListedColormap(newcolors)


mock=
np.array([[0.1,0.2,0.3],
          [0.2,0.3,0.4],
          [0.3,0.4,0.5],
          [0.4,0.5,0.6],
          [0.5,0.6,0.7],
          [0.6,0.7,0.8],
          [0.7,0.8,0.9]])


plt.figure(figsize=(6,6))
im = plt.imshow(mock,cmap = newcmp, vmin=0.0, vmax=1)
plt.colorbar(im)