python - 如何修改 matplotlib 定性颜色图中的间隔?

标签 python matplotlib data-visualization visualization colorbar

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)

enter image description here

如果我希望所有值都低于某个特定值,假设 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)

enter image description here

关于python - 如何修改 matplotlib 定性颜色图中的间隔?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71033501/

相关文章:

node.js - 如何将 Google 图片 URL 图表中的条形图值缩放到超过 100

c# - 我可以在 MSChart 的饼图标签上同时显示标签和值吗

python - 根据列中的值过滤 pandas 数据框中的行

python - 使用 PyLab 从两个单独的列表创建 2D 图形

python - Matplotlib imshow : how to apply a mask on the matrix

python - 如何在 PyQt5 Qwidget 上显示 matplotlib

c# - Wpf 中的标记列系列图表

python - 为什么 plt.figure(figsize=(X,y)) 不改变我的 .hist 和 .plot 的大小?

Python 值错误 : Can only compare identically-labeled Series objects

python - 在pygame中绘制表面透明度?