import matplotlib.pyplot as plt
import numpy as np
我有一个 2D 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)
如果我希望所有值都低于某个特定值,假设 0.25 具有与 0.25 相同的颜色,不仅替换绘图本身的颜色,而且替换颜色条中的颜色,我将如何处理?预期的输出将是:左上角的所有 3 个方 block 都是红色的,颜色图中底部的 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)
关于python - 如何修改 matplotlib 定性颜色图中的间隔?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71033501/