Есть ли параметр, чтобы немного подправить планку с указанной позицией в matplotlib? - PullRequest
1 голос
/ 23 марта 2019

Я строю гистограмму, используя функцию plt.bar.

arr = [1, 1, 2, 2, 2, 5, 5, 3]
hist, bin_edges = np.histogram(arr, bins = range(7))
plt.bar(bin_edges[:-1], hist)
plt.xlim(min(bin_edges), max(bin_edges))
plt.show()

enter image description here

Каждый столбец находится прямо в середине галочки (1, 2, ..., 5), которая не указывает четко края, включая левую сторону, исключая правую сторону, кроме последнего края.

ширина параметра используется для установки ширины стержня, а не положения.

Есть ли параметр для правильного позиционирования каждого бара в указанной позиции (например, 0,5) в matplotlib?

Ответы [ 2 ]

0 голосов
/ 23 марта 2019

У вас есть три варианта.Вы можете выбрать тот, который вам наиболее удобен и прост для понимания.

Вариант 1 : Сместить центры стержней (x-позиции) на 0,5 влево (-0,5) или вправо (+0,5), а затем установите x-ticks на 0,5, 1,5, 2,5 и т. д.

arr = [1, 1, 2, 2, 2, 5, 5, 3]
hist, bin_edges = np.histogram(arr, bins = range(7))
plt.bar(bin_edges[:-1]-0.5, hist)
plt.xlim(min(bin_edges), max(bin_edges))
plt.ticks(bin_edges[:-1]-0.5)
plt.show()

enter image description here

Опция 2 : использоватьalign=edge, который по умолчанию выровняется по правому краю тиков и примет некоторую толщину по умолчанию (выглядит как 0,8 на рисунке ниже)

plt.bar(bin_edges[:-1], hist, align='edge')

enter image description here

Опция 3 : используйте align=edge с определенной шириной (положительная ширина будет выравниваться вправо, отрицательная ширина будет выравниваться влево)

plt.bar(bin_edges[:-1], hist, align='edge', width=-0.5)

enter image description here

0 голосов
/ 23 марта 2019

Вы хотите использовать bar(x, y, align='edge').

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