Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用matplotlib中的plt.Circle设置AxisArtister的轴限制_Python_Matplotlib - Fatal编程技术网

Python 使用matplotlib中的plt.Circle设置AxisArtister的轴限制

Python 使用matplotlib中的plt.Circle设置AxisArtister的轴限制,python,matplotlib,Python,Matplotlib,我画一个圆圈: 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

我画一个圆圈:

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()
一切正常:

但当我想增加轴的限制时:

ax.set_ylim(-5, 5)
ax.set_xlim(-5, 5)
我失败了

我怎样才能做到呢?

你只需要

ax.set_ylim(-5, 5)
甚至

plt.ylim(-5, 5)

我想你只是试着去设定
ylim(-5,5)

无需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')

我可能不完全理解这个问题,因为只是添加了
ax.set\u ylim(-5,5);将xlim(-5,5)
设置为您的代码实际上会生成一个很好的绘图

但一般来说,您可以使用
ax.set_aspect(“equal”,adjustable=“box”)
在使用equal aspect时将轴调整到您的限制。因此,对于不对称限制,这可能看起来像

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()

@RomaKarageorgievich:尝试使用
fig=plt.figure(figsize=(6,6))
,即一个正方形,实际上,我需要它,因为使用AxisArtister时,我会将笛卡尔轴添加到绘图中。如果我使用
ax.set_ylim(a,b)
使用不同的
a
b
matplotlib,会重塑坏的圆。所以我需要使用
plt.axis('equal')
但是它忽略了
set_ylim
…一旦你开始设置你的x轴或y轴,那么它将是任何形状,“equal”,只要你小心。你可以在我上面的代码中把ax.set_ylim(-5,5)n ax.set_xlim(-5,5)放在ax.set_xlim(-5,5)之前,用plt.axis('equal'),它会工作并产生与上面相同的图形。试试plt.axis([-5,5,5,5.],'equal'),但它会创建与我在前面的评论中描述的相同的图形。
ax set_aspect(“equal”,adjustable=“box”)
解决了这个问题