Я думаю, что обходной путь должен был бы использовать plt.barh
. Вот пример использования нормализованных цветовых карт. Каждый цвет преобразуется в RGBA, прежде чем он может быть передан в plt.barh
.
import matplotlib.pyplot as plt
from matplotlib import colors
import matplotlib.cm as cmx
x1 =[0, 19, 39, 46, 60, 79]
x2 = [19, 39, 46, 60, 79, 90]
values = range(len(x1))
jet = cm = plt.get_cmap('jet')
cNorm = colors.Normalize(vmin=0, vmax=values[-1])
scalarMap = cmx.ScalarMappable(norm=cNorm, cmap=jet)
fig, ax = plt.subplots()
for idx, x, y in zip(values,x1, x2):
colorVal = scalarMap.to_rgba(values[idx])
start = x
end = y
width=end-start
ax.barh(y = 0, width = width, left=start, height = 0.1, label = str(idx), color=colorVal)
ax.set_ylim(-.5,0.5)
ax.legend()
, который возвращает: ![enter image description here](https://i.stack.imgur.com/se8Z0.png)
Если вы действительно хотите просто изменитьальфа-прозрачность одного цвета, вам просто нужно будет ввести alpha_list[idx
] для последнего элемента в кортеж RGBA colorVal
. По какой-то причине RGBA не нравились отрицательные альфа-значения, поэтому обратите внимание, что я изменил их все на положительные
fig, ax = plt.subplots()
alpha_list = [0.8402, 0.6652, 0.01, 0.5106, 0.8074, 0.0]
for idx, x, y in zip(values,x1, x2):
colorVal = (0.0, 0.3, 1.0, alpha_list[idx])
start = x
end = y
width=end-start
ax.barh(y = 0, width = width, left=start, height = 0.1, label = str(idx), color=colorVal)
ax.set_ylim(-.5,0.5)
ax.legend()
![enter image description here](https://i.stack.imgur.com/Rfief.png)