квантование цветовой карты python (matplotlib) - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть следующий colormap в Python, который отображает каждое значение в цвет. Но мой вопрос: как я могу квантовать значения для получения одинакового цвета для указанного диапазона? Например: от 0 до 10 (зеленый), от 10 до 50 (желтый), от 50 до 55 (красный), ...

import matplotlib as mpl
import matplotlib
from matplotlib import cm
.
.
.
norm = matplotlib.colors.Normalize(vmin = min,vmax = max, clip = True)
.
.
for i in range(numberMaterials):
    step = (max-min)/numberMaterials
    value = min + step*i
    mat = bpy.data.materials.new("mat" +str(i))
    color = cm.jet(norm(value),bytes=True)

1 Ответ

0 голосов
/ 07 ноября 2018

Кажется, вы просите BoundaryNorm.

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


cmap = matplotlib.colors.ListedColormap(["limegreen", "gold", "crimson"])
norm = matplotlib.colors.BoundaryNorm([0,10,50,55], 3)

x = np.linspace(0,55)

fig, (ax, ax2) = plt.subplots(ncols=2)
sc = ax.scatter(x,x, c=x, cmap=cmap, norm=norm)
fig.colorbar(sc, ax=ax, spacing="uniform")

sc2 = ax2.scatter(x,x, c=x, cmap=cmap, norm=norm)
fig.colorbar(sc2, ax=ax2, spacing="proportional")

plt.show()

enter image description here

...