回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有一个关于matplotlib中show()方法的问题。我有一个for循环(针对肽),在这个循环中我有另一个循环(TFE)。在for-TFE循环中,我绘制了两个不同的图形,退出TFE循环后,我想在第三个图形上绘制。问题是,如果我写表演()在第二个图上绘制后(而不是图1.show()和图2)。show()就像下面的代码一样),它还显示了第一个for peptide步骤之后的空的第三个数字(在循环之前创建,但在循环之后绘制)。此外,每个for peptide步骤在图3上只绘制了一个图,因为show()似乎清除了之前在图(3)上所做的工作。我希望图(3)在每一个for peptide步骤中都被绘制出来,但在某种程度上它保留了之前步骤中的绘图(并且不会被中断)表演())并且仅在末尾显示。在</p>
<p>我想使用fig1.show()和fig2.show(),但当我关闭第一个TFE循环中的两个图形中的一个时,图(3)会正确出现,只是for-TFE循环的其他图形没有显示,并且终端中会显示以下内容:
命令名“139620086899400 idle_draw”无效
执行时
“139620086899400空闲绘制”
(“后”脚本)</p>
<p>你能告诉我一些关于无效命令名的细节吗?我应该怎么做才能克服这个问题?我没有粘贴整个代码,因为它相当长和凌乱,但我认为它已经足够理解一个问题。在</p>
<p>编辑:好的,我创建了最小的代码,我的问题是:图1和图2显示了每一个肽步骤的图(在执行代码时,每个步骤的图都加在图上)。我想要图3,它会像预期的那样返回,但是对于图1和图2,我实际上希望每个肽步骤有2个数字,所以我有图1和图2的肽数和图3的1个数字。在</p>
<pre><code>import matplotlib.pyplot as plt
from scipy import stats
fig3 = plt.figure(3)
dictionary = {"peptide1": {5: {"deltaG": -15.5, "Fhteor": [0.9, 0.88], "T": [40, 45]}, 10: {"deltaG": -14.5, "Fhteor": [0.85, 0.83], "T": [40, 45]}},
"peptide666":{5: {"deltaG": -5.5, "Fhteor": [0.6, 0.57], "T": [40, 45]}, 10: {"deltaG": 1, "Fhteor": [0.4, 0.33], "T": [40, 45]}}}
for peptide in dictionary:
TFE_list = []
dG_list = []
fig1 = plt.figure(1)
fig2 = plt.figure(2)
for TFE in dictionary[peptide]:
plt.figure(1)
plt.plot(TFE, dictionary[peptide][TFE]["deltaG"], marker = "o") #plotting on fig1
plt.figure(2)
plt.plot(dictionary[peptide][TFE]["T"], dictionary[peptide][TFE]["Fhteor"], marker = "v") #plotting on fig2
if TFE <= 15:
TFE_list.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>(TFE)
dG_list.append(dictionary[peptide][TFE]["deltaG"])
plt.figure(1)
lr = stats.linregress(TFE_list, dG_list)
y_list = [lr.intercept + i*lr.slope for i in TFE_list]
plt.plot(TFE_list, y_list) #plotting linear regression on plot 1
fig1.show()
fig2.show()
plt.figure(3)
plt.plot(len(peptide), len(peptide)*3, marker ="o") #plotting some characteristics derived from "for TFE loop" on fig3
plt.show()
</code></pre>