Pyplot没有输出

时间:2014-04-03 10:00:38

标签: python matplotlib ellipse

以下代码用于绘制弧。

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

xcenter=300
ycenter=300
angle=0
k=0
p=[100,155]
theta=[1.0471975512, 1.0471975512]
fig=plt.figure(1)
ax=fig.add_subplot(111)
plt.ion()
S=2
plt.show()
while k<S:
    thetaval=0
    if k==0:
        e1=patches.Arc((xcenter, ycenter), p[k], p[k], 0.0, 0, theta[k]*(180/math.pi))
        ax.add_patch(e1)
    elif k!=0 and k<S-1:
        e2=patches.Arc((xcenter, ycenter), p[k], p[k], 0.0, theta[k-1]*(180/math.pi), theta[k]*(180/math.pi))
        ax.add_patch(e2)
    elif k==S-1:
        e3=patches.Arc((xcenter, ycenter), p[k], p[k], 0.0, theta[k-1]*(180/math.pi), theta[k]*(180/math.pi))
        ax.add_patch(e3)
    k=k+1
plt.show(block='True')

执行它时会给出以下输出:

enter image description here

我哪里错了?

1 个答案:

答案 0 :(得分:1)

它们在坐标300周围被绘制,但它没有在那里缩放。从文档中可以看出:“弧必须在Axes实例中使用 - 它不能直接添加到图形中 - 因为它被优化为仅以高分辨率渲染轴边界框内的线段。”您负责定义轴限制。

现在,您有两个选项,一个是使用轴:

margin = 10
plt.axis([x0 - margin, x0 + max(p) + margin , y0 - margin , y0 + max(p) + margin])

另一种是在弧的两端绘制不可见的东西,以便matplotlib跟踪它。如果计算弧的末端[xend, yend]的位置:

plt.scatter([x0, y0], [xend, yend], alpha=0)