Matplotlib fix y-ось - PullRequest
       26

Matplotlib fix y-ось

1 голос
/ 08 апреля 2019

Я пытаюсь создать горизонтальную гистограмму с помощью matplotlib. Мои точки данных - это следующие два массива

distance = [100, 200, 300, 400, 500, 3000]
value = [10, 15, 50, 74, 95, 98]

Мой код для создания горизонтальной гистограммы выглядит следующим образом

plt.barh(distance, value, height=75)
plt.savefig(fig_name, dpi=300)
plt.close()

Проблема в том, что мое изображение выглядит так

https://imgur.com/a/Q8dvHKR

Есть ли способ обеспечить одинаковую ширину всех блоков и пропустить промежутки между 500 и 300

Ответы [ 2 ]

1 голос
/ 23 апреля 2019

В качестве альтернативы, вы можете использовать диапазон чисел в качестве значений y, используя функцию range(), чтобы позиционировать горизонтальные полосы, а затем установить желаемые метки, используя функцию plt.yticks(), первым аргументом которой являются позициигалочки и вторым аргументом являются галочки.

import matplotlib.pyplot as plt

distance = [100, 200, 300, 400, 500, 3000]
value = [10, 15, 50, 74, 95, 98]
plt.barh(range(len(distance)), value, height=0.6)
plt.yticks(range(len(distance)), distance)
plt.show()

enter image description here

1 голос
/ 09 апреля 2019

Вы можете сделать это, убедившись, что Matplotlib рассматривает ваши метки как метки, а не как числа. Вы можете сделать это, преобразовав их в строки:

import matplotlib.pyplot as plt

distance = [100, 200, 300, 400, 500, 3000]
value = [10, 15, 50, 74, 95, 98]
distance = [str(number) for number in distance]
plt.barh(distance, value, height=0.75)

Обратите внимание, что вы должны изменить высоту.

...