Вы можете построить горизонтальные линии между вертикальными полосами, используя hlines
(составленный из поддельных данных, похожих на ваши):
import numpy as np
from matplotlib import pyplot
random_data = [5, 8, 17, 25, 32, 50]
values = [1.5, 2.3, 1.7, 2.5, 1.8, 1.8] # Note last value should be duplicate
for i in range(len(random_data) - 1):
top = float(random_data[i])
bottom = float(random_data[i + 1])
value = float(values[i])
value_next = float(values[i + 1])
l = np.arange(top, bottom + 1, 1)
Z = [value]*len(l)
pyplot.plot(Z, l)
pyplot.hlines(bottom, value, value_next)
pyplot.show()

Обратите внимание, что вы также можете легче строить вертикальные линии, используя vlines
:
import numpy as np
from matplotlib import pyplot
random_data = [5, 8, 17, 25, 32, 50]
values = [1.5, 2.3, 1.7, 2.5, 1.8, 1.8] # Note last value should be duplicate
for i in range(len(random_data) - 1):
top = float(random_data[i])
bottom = float(random_data[i + 1])
value = float(values[i])
value_next = float(values[i + 1])
pyplot.vlines(value, top, bottom)
pyplot.hlines(bottom, value, value_next)
pyplot.show()

Возможно, вам придется поиграть спределы данных, но это даст вам то, что вы хотите.