Matplotlib: создание осей, соответствующих ограничениям формы - PullRequest
0 голосов
/ 17 января 2019

Я пытаюсь нарисовать прямоугольник в matplotlib, используя следующий код:

import matplotlib.pyplot as plt
import matplotlib.patches as patches

fig, ax = plt.subplots()
width = 20
height = 10

rect = patches.Rectangle((0,0),width, height, linewidth=4,edgecolor='r',facecolor='none')
ax.add_patch(rect)

plt.show()

Что приводит к:

enter image description here

В этом случае оси не соответствуют границам прямоугольника. Я мог бы решить это с:

import matplotlib.pyplot as plt
import matplotlib.patches as patches

fig, ax = plt.subplots()
width = 20
height = 10

ax.set_xlim(0,width)
ax.set_ylim(0,height)

rect = patches.Rectangle((0,0),width, height, linewidth=4,edgecolor='r',facecolor='none')
ax.add_patch(rect)

plt.show()

Это дает мне следующую картину, которая решает проблему в данном случае:

enter image description here

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

1 Ответ

0 голосов
/ 17 января 2019

Вы ищете .autoscale(). Вы можете использовать .margins(0) для удаления любого дополнительного пространства, добавляемого по умолчанию.

* 1005 Т.е. *

import matplotlib.pyplot as plt
import matplotlib.patches as patches

fig, ax = plt.subplots()
width = 20
height = 10

rect = patches.Rectangle((0,0),width, height, linewidth=4,edgecolor='r',facecolor='none')
ax.add_patch(rect)
ax.margins(0)
ax.autoscale()

plt.show()

enter image description here

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