matplotlib plt.savefig error На устройстве не осталось места - PullRequest
0 голосов
/ 29 мая 2020

Я использую windows python3, чтобы нарисовать одну фигуру, и использую plt.savefig для ее сохранения, но он показывает мне ошибку: на устройстве не осталось места. Это может дать мне цифру, когда я не использую plt.savefig. У кого-то раньше была такая проблема? Вот коды:

def f_ellipse(a,b,c,d,e,f):
    ta = b**2 - 4*a*c
    x0 = (b*e-2*c*d)/ta
    y0 = (b*d-2*a*e)/ta
    r = a * pow(x0,2) + b * x0 * y0 + c * pow(y0,2) + f
    aa = np.sqrt(r / a)
    bb = np.sqrt(-4 * a * r / ta)
    t = np.linspace(0, 2 * np.pi, 60)
    A = np.array([[1,-b/(2*a)],[0,1]])
    B = np.zeros([2,60])
    for i in range(0,60):
        B[0,i] = aa*np.cos(t[i])
        B[1,i] = bb*np.sin(t[i])
    xy0 = A.dot(B)
    ellipse = np.zeros([2,xy0.shape[1]])
    ellipse[0,:] = xy0[0,:]-x0
    ellipse[1,:] = xy0[1,:]-y0
    return ellipse

sigma22 = 7.424e-8
sigma12 = -3.797e-7
sigma11 = 3.209e-6
emittance = 3.067e-7
limit_x = 0.00179
sigma_quadstr = np.array([[160,0.343],[170,0.291],[180,0.248],[190,0.216],[200,0.207],[210,0.229],[220,0.277],[230,0.338]])
sigma = sigma_quadstr[:,1]*1e-3
quad_strength = np.sqrt(sigma_quadstr[:,0]/1000 * 36.56) * 0.1

## tangent line
R11 = np.cos(quad_strength)-1.16*quad_strength/0.1*np.sin(quad_strength)
R12 = 1/(quad_strength/0.1)*np.sin(quad_strength)+1.16*np.cos(quad_strength)
x0 = np.arange(-1.5*limit_x,1.5*limit_x,limit_x/100)
x0p = np.zeros([x0.shape[0],sigma.shape[0]])
for i in range(0,sigma.shape[0]):
    x0p[:,i] = (sigma[i] - x0 * R11[i]) / R12[i]

F_para = f_ellipse(sigma22,-2*sigma12,sigma11,0,0,emittance**2)
fig1 = plt.figure(1)
plt.plot(F_para[0,:],F_para[1,:],c='k',label='fitting ellipse')                   # emittance from fitting
for i in range(0,sigma.shape[0]):
    string = 'quad. current ' + str(sigma_quadstr[i,0]) + ' mA'
    plt.plot(x0, x0p[:, i],label=string)
plt.legend()
plt.xlabel('position / mm')
plt.ylabel('angle / mrad')
# plt.xlim(2*np.min(F_para[0,:]),2*np.max(F_para[0,:]))
# plt.ylim(2*np.min(F_para[1,:]),2*np.max(F_para[1,:]))
plt.savefig('1.jpg',dpi=100, bbox_inches='tight')
plt.show()

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