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”)
解决了这个问题