Как убрать зазоры между барами с неравной шириной в гистограмме Matplotlib - PullRequest
0 голосов
/ 17 июня 2019

Я пытаюсь создать гистограмму кривой предложения метричности в matplotlib (или другой библиотеке графиков python).

Ширина каждого столбца представляет размер этого наблюдения (в данном случае установленное на крыше солнечное излучение), ось Y указывает стоимость, а ось X представляет совокупный размер всех наблюдений вили ниже удельной стоимости.Это создает кривую предложения, которая выглядит примерно так:

enter image description here

Обратите внимание, что ширина каждого бара не одинакова, и что наблюдения отсортированытак что ни одна полоса никогда не будет короче любой полосы слева.

Существует ли подобная функциональность в каком-либо пакете печати, или я должен написать сценарий, который динамически вычисляет необходимую позицию для каждого стержня в зависимости от ширины стержней с обеих сторон?

1 Ответ

0 голосов
/ 18 июня 2019

Вот быстрое решение, которое я создал вместе, хотя я чувствую, что, возможно, в matplotlib существует опция gaps=0, для которой я не могу найти документацию.

fig, ax = plt.subplots()

cost = [1, 1.5, 2, 3, 4]
width = [1.0, 5.0, 10.0, 15.0, 10.0]
y_pos = [1,2,3,4,5]
colors = ['red','blue','green','red','blue']
bars = ['A','B','C','D','E']

relative_positions = []
relative_position = 0
previous_width = 0
for w in width:
    print(w, w/2)
    relative_position = float(relative_position + (previous_width/2) + (w/2))
    print(w, relative_position)
    previous_width = w
    relative_positions.append(relative_position)


plt.bar(relative_positions, cost, width=width, color=colors)
plt.xticks(relative_positions, bars)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...