Установите пределы оси AxisArtist с помощью plt.Circle в matplotlib - PullRequest
1 голос
/ 31 марта 2019

Я рисую круг:

import matplotlib.pyplot as plt
from mpl_toolkits.axisartist.axislines import SubplotZero

fig = plt.figure(1, figsize=(6, 6))

ax = SubplotZero(fig, 111)
fig.add_subplot(ax)

centreCircle = plt.Circle((0, 0), 1, color="black", fill=False, lw=2)

# Draw the circles to our plot
ax.add_patch(centreCircle)
plt.axis('equal')
plt.show()

Все в порядке:

enter image description here

Но когда я хочу увеличить пределы осей:

ax.set_ylim(-5, 5)
ax.set_xlim(-5, 5)

Я потерпел неудачу.

Как мне этого добиться?

Ответы [ 4 ]

1 голос
/ 31 марта 2019

Я не могу понять проблему в полноте, потому что простое добавление ax.set_ylim(-5, 5); ax.set_xlim(-5, 5) в ваш код на самом деле дает хороший сюжет.

Но, как правило, вы можете использовать ax.set_aspect("equal", adjustable="box"), чтобы настроить оси на ваши пределы при использовании равного формата.Так что для асимметричных пределов это может выглядеть как

import matplotlib.pyplot as plt
from mpl_toolkits.axisartist.axislines import SubplotZero

fig = plt.figure(1, figsize=(6, 6))

ax = SubplotZero(fig, 111)
fig.add_subplot(ax)

centreCircle = plt.Circle((0, 0), 1, color="black", fill=False, lw=2)

# Draw the circles to our plot
ax.add_patch(centreCircle)
ax.set_aspect("equal", adjustable="box")

ax.set_ylim(-5, 5)
ax.set_xlim(-5, 10)

plt.show()

enter image description here

1 голос
/ 31 марта 2019

Вы можете просто выполнить то, что вам нужно, без AxisArtist.Если вы можете обойтись без этого, то вот следующий пример кода:

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.patches import Circle

fig, ax = plt.subplots(1,1, figsize=(7,7))
ax.add_artist(Circle((0,0),1,color='b'))
ax.set_xlim((-5,5))
ax.set_ylim((-5,5))

plt.show()

РЕДАКТИРОВАТЬ: повторить с AxisArtist

import matplotlib.pyplot as plt
import mpl_toolkits.axisartist as AA
%matplotlib "notebook"

fig = plt.figure(1, figsize=(5,5))
ax = AA.Subplot(fig, 1, 1, 1)
fig.add_subplot(ax)
centreCircle = plt.Circle((0, 0), 1, color="black", fill=False, lw=2)
ax.add_patch(centreCircle)
ax.set_ylim(-5, 5)
ax.set_xlim(-5, 5)
plt.show()
plt.savefig('circle5x5v2.png')

enter image description here

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

Я думаю, вы просто пытаетесь установить ylim (-5,5)

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

Вам просто нужно

ax.set_ylim(-5, 5)

или даже

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