python运行图像出现这个错误怎么解决?

运行代码出现这个错误怎么回事?得到的图像是没有内容的,有需要我可以贴出来整个代码

img

img

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from matplotlib import patches
import matplotlib.patches as mpatches
import scipy.io as sio

plotting configuration

ratio = 1.5
figure_len, figure_width = 15ratio, 12ratio
font_size_1, font_size_2 = 36ratio, 36ratio
legend_size = 18ratio
line_width, tick_len = 3
ratio, 12ratio
marker_size = 15
ratio
marker_edge_width = 3 * ratio
plot_line_width = 5*ratio
hfont = {'fontname': 'Arial'}
pal = sns.color_palette("deep")

sns.set(style='ticks')

simulation setup

dt = 0.0001
T = int(9 / dt)

neuronal parameters

tau_e, tau_i = 0.020, 0.010
alpha_e, alpha_i = 2, 2

short-term depression

u_d, tau_x = 1, 0.20

network connectivity

Jee = 1.5
Jie = 1.0
Jei = 2.0
Jii = 1.0

g_i = 5

l_g_e = [6.65, 20, 100] # [6.5, 20, 85, 90, 100]
l_r_e_total, l_r_i_total = [], []

for g_e in l_g_e:

r_e, r_i = 0, 0
z_e, z_i = 0, 0
x = 1

l_r_e, l_r_i, l_x = [], [], []
Jacobian_mat = np.zeros((2, 2)) * np.nan

for i in range(T):

    g_e = g_e * (g_e > 0)
    g_i = g_i * (g_i > 0)

    if 42000 <= i < 42001:
        r_e = r_e + 0.01
    else:
        pass

    # SSN part
    z_e = Jee * x * r_e - Jei * r_i + g_e
    z_i = Jie * r_e - Jii * r_i + g_i

    z_e = z_e * (z_e > 0)
    z_i = z_i * (z_i > 0)

    r_e = r_e + (-r_e + np.power(z_e, alpha_e)) / tau_e * dt
    if 40000 < i:
        pass
    else:
        r_i = r_i + (-r_i + np.power(z_i, alpha_i)) / tau_i * dt

    # if i == 40000:
    #     print("")
    #     print(g_e)
    #     Jacobian_mat[0, 0] = 1.0 / tau_e * (l_x[39999] * Jee * alpha_e * np.power(l_r_e[39999], (alpha_e - 1.0) / alpha_e) - 1)
    #     Jacobian_mat[0, 1] = 1.0 / tau_e * Jee * alpha_e * np.power(l_r_e[39999], (2 * alpha_e - 1.0) / alpha_e)
    #     Jacobian_mat[1, 0] = - u_d * l_x[39999]
    #     Jacobian_mat[1, 1] = -1.0 / tau_x - u_d * l_r_e[39999]
    #     lambda_1 = np.linalg.eig(Jacobian_mat)[0][0]
    #     lambda_2 = np.linalg.eig(Jacobian_mat)[0][1]
    #     print(lambda_1)
    #     print(lambda_2)

    r_e = r_e * (r_e > 0)
    r_i = r_i * (r_i > 0)

    x = x + ((1 - x) / tau_x - u_d * x * r_e) * dt
    x = np.clip(x, 0, 1)

    l_r_e.append(r_e)
    l_r_i.append(r_i)
    l_x.append(x)

l_r_e = np.asarray(l_r_e)
l_r_i = np.asarray(l_r_i)
l_x = np.asarray(l_x)

print("")
print(g_e)
print(l_r_e[30000])

plt.figure(figsize=(figure_len, figure_width))
ax = plt.gca()
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.spines['bottom'].set_visible(True)
ax.spines['left'].set_visible(True)
for axis in ['top', 'bottom', 'left', 'right']:
    ax.spines[axis].set_linewidth(line_width)
plt.tick_params(width=line_width, length=tick_len)
if g_e == 90 or g_e == 100:
    plt.yscale('linear')
else:
    plt.yscale('symlog', linthreshy=1)

plt.plot(l_r_e/l_r_e[30000], color='blue', linewidth=plot_line_width)
plt.plot(l_r_i/l_r_i[30000], color='red', linewidth=plot_line_width)

plt.xticks(np.arange(30000, 90000 + 5000, 20000), np.arange(0, 6 + 0.5, 2), fontsize=font_size_1, **hfont)
if g_e == 6.65:
    plt.yticks([0, 1, 10], fontsize=font_size_1, **hfont)
elif g_e == 20:
    plt.yticks([0, 1, 10, 100], fontsize=font_size_1, **hfont)
elif g_e == 85:
    plt.yticks([0, 1, 10], fontsize=font_size_1, **hfont)
else:
    plt.yticks([0.999, 1.0, 1.001], fontsize=font_size_1, **hfont)
plt.xlabel('Time (s)', fontsize=font_size_1, **hfont)
plt.ylabel('Normalized firing rate', fontsize=font_size_1, **hfont)

plt.xlim([30000, 90000])
if g_e == 6.65:
    plt.ylim([0, 10])
    plt.vlines(x=42001, ymin=0, ymax=10, colors='k', linestyles=[(0, (6, 6, 6, 6))], linewidth=line_width)
elif g_e == 20:
    plt.ylim([0, 100])
    plt.vlines(x=42001, ymin=0, ymax=100, colors='k', linestyles=[(0, (6, 6, 6, 6))], linewidth=line_width)
elif g_e == 85:
    plt.ylim([0, 10])
    plt.vlines(x=42001, ymin=0, ymax=10, colors='k', linestyles=[(0, (6, 6, 6, 6))], linewidth=line_width)
else:
    plt.ylim([0.999, 1.001])
    plt.vlines(x=42001, ymin=0.999, ymax=1.001, colors='k', linestyles=[(0, (6, 6, 6, 6))], linewidth=line_width)

plt.legend(['Exc', 'Inh'], prop={"family": "Arial", 'size': font_size_1}, loc='upper right')
plt.savefig('paper_figures/png/Fig_1S_Supralinear_network_EE_STD_frozen_inhibition_examples_g_e_' + str(g_e) + '.png')
plt.savefig('paper_figures/pdf/Fig_1S_Supralinear_network_EE_STD_frozen_inhibition_examples_g_e_' + str(g_e) + '.pdf')

"linthreshy" 未定义?
如果实在找不到原因,贴代码吧。

答案参考ChatGPT Plus版,整理汇总。希望能帮助你解决问题
出现"TypeError: init() got an unexpected keyword argument 'linthreshy'"错误是因为你在使用某个函数或类的构造函数时传递了一个不支持的参数。

有几种可能的解决方法:

  1. 检查参数拼写:确保你正确地拼写了参数名,包括大小写。例如,检查'linthreshy'参数是否正确拼写。

  2. 更新库版本:该错误可能是由于库的旧版本不支持该参数导致的。尝试更新相关的库到最新版本,可以使用pip工具进行更新。例如,使用以下命令更新matplotlib库:

    pip install --upgrade matplotlib
    
  3. 降低库版本:如果你的代码是在一个较新版本的库上开发的,而你的运行环境使用的是较旧版本的库,可能会导致该错误。尝试降低库的版本,以与你的代码兼容。

  4. 检查文档:查阅相关库的文档,确保你正确使用了构造函数并传递了支持的参数。有时,库的API可能会更改,参数名称或用法可能会有所不同。

如果你能提供更多的上下文和代码示例,我可以给出更具体的建议来帮助你解决这个问题。

代码贴出来,你贴的代码最好整理一下

img

回答部分参考、引用ChatGpt以便为您提供更准确的答案:

根据您提供的信息和图片,您在Python中运行代码时遇到了错误,并且生成的图像没有内容。您可以提供完整的代码以便更好地帮助您。

根据第一张图片的错误提示信息,它指示了一个TypeError错误,错误消息为'NoneType' object has no attribute 'shape'。这个错误通常表示您在代码中尝试访问一个NoneType对象的shape属性,而NoneType对象是一个空对象,它没有该属性。

根据第二张图片,代码的最后一行出现了一个plt.show()函数调用,这是用于显示图像的函数。然而,这个函数的调用在您的代码中是注释掉的,可能是为了避免显示图像而注释掉的。

请注意以下几点来解决这个问题:

  1. 检查数据:确保您的图像数据是有效的,并且在代码中正确加载和处理。确保您的数据对象不是空的(None),并且具有正确的属性和结构。
  2. 检查数据加载和处理代码:查看您的代码,特别是与图像数据相关的部分。确保您正确加载和处理图像数据,以便能够生成有效的图像。
  3. 检查图像生成代码:如果您的代码中包含了图像生成的部分,请确保相关的绘图函数和参数正确设置。检查是否遗漏了必要的图像数据或配置,导致生成的图像没有内容。
  4. 检查图像显示代码:如果您尝试使用plt.show()来显示图像,请确保这一行没有被注释掉,并且在代码中处于适当的位置。如果您仍然不想显示图像,请确保相关的绘图函数调用和配置正确,以便生成有效的图像文件或数据。

如果您提供完整的代码,我们可以更详细地帮助您排查和解决问题。

在代码中,有一段注释掉的代码:

if i == 40000:
print("")
print(g_e)
Jacobian_mat[0, 0] = 1.0 / tau_e * (l_x[39999] * Jee * alpha_e * np.power(l_r_e[39999], (alpha_e - 1.0) / alpha_e) - 1)
Jacobian_mat[0, 1] = 1.0 / tau_e * Jee * alpha_e * np.power(l_r_e[39999], (2 * alpha_e - 1.0) / alpha_e)
Jacobian_mat[1, 0] = - u_d * l_x[39999]
Jacobian_mat[1, 1] = -1.0 / tau_x - u_d * l_r_e[39999]
lambda_1 = np.linalg.eig(Jacobian_mat)[0][0]
lambda_2 = np.linalg.eig(Jacobian_mat)[0][1]
print(lambda_1)
print(lambda_2)
这段代码没有被注释掉的话,会在第40000个时间步输出一些信息。由于这段代码没有注释掉,而输出信息的语句中使用了numpy的eig函数,因此程序会报错。解决方法是将这段代码注释掉或者修改代码使其正确运行。

另外,由于代码中的一些变量没有被定义(如l_r_e_total和l_r_i_total),也可能导致程序无法正确运行。需要根据具体情况进行修改。

调试执行跟踪下,估计程序执行流程对不对

Python出现TypeError: init got an unexpected keyword argument 的方法
可以参考下