如何抓住pylab的两个半月形图形?我尝试过使用pylab.hold(True),但它打开了两个不同的窗口,两次调用我的图形功能(我只需要一个窗口中的图形)。代码如下:
edit1 - 这里有更完整的代码,名称的更正使用:
(import pylab as pl)
编辑2:我需要保持两个连续调用图形功能的grafics: 调用模块中的图形:
graphics(pet, SNR_dB)
graphics(another_pet, SNR_dB)
使用pl.array和列表(具有相同的维度),例如: (生成的白色范围(0,18))
SNR_dB: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17]
Pe,用脚本中的另一个计算器生成:
Pe: [0.29576000000000002, 0.24626000000000001, 0.19703999999999999, 0.15298, 0.11018, 0.074139999999999998, 0.04616, 0.024400000000000002, 0.01204, 0.0050000000000000001, 0.0018600000000000001, 0.00040000000000000002, 4.0000000000000003e-05, 0.0, 0.0, 0.0, 0.0, 0.0]
[0.16062000000000001, 0.13156000000000001, 0.10384, 0.079699999999999993, 0.056710000000000003, 0.037859999999999998, 0.023400000000000001, 0.01222, 0.0060400000000000002, 0.0025000000000000001, 0.00093000000000000005, 0.00020000000000000001, 2.0000000000000002e-05, 0.0, 0.0, 0.0, 0.0, 0.0]
图形功能是:
def graphics(Pe, SNR_dB):
pl.semilogy(SNR_dB, Pe[0],linewidth=1)
pl.hold(True)
pl.semilogy(SNR_dB, Pe[1],linewidth=2)
pl.legend(('Symbol', 'bit'))
pl.xlim([0, max(SNR_dB)])
pl.ylim([1e-10,1])
pl.title('Error vs SNR_dB')
pl.grid(True)
pl.xlabel('SNR_dB')
pl.ylabel('Pe')
pl.show()
这两个“图形”调用生成两个数字,每个调用一个。我需要的只是一个数字。我怎么办?
答案 0 :(得分:0)
不惜一切代价避免pylab
(只夸张一半)
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(SNR_dB, Pe_list[0],linewidth=1)
ax.plot(SNR_dB, Pe_list[1],linewidth=2)
ax.legend(('Symbol', 'bit'))
ax.set_yscale('log')
ax.set_xlim([0, max(SNR_dB)])
ax.set_ylim([1e-10,1])
ax.set_title('Error vs SNR_dB')
ax.set_xlabel('SNR_dB')
ax.set_ylabel('Pe')
ax.grid(True)
plt.show()
答案 1 :(得分:0)
[SOLVE]
使用此编辑(我不使用图形或显示,直到两次调用图形)
graphics(pet, SNR_dB)
graphics(another_pet, SNR_dB)
pl.show()
def graphics(Pe, SNR_dB):
pl.semilogy(SNR_dB, Pe[0],linewidth=1)
pl.semilogy(SNR_dB, Pe[1],linewidth=2)
pl.legend(('Symbol', 'bit'))
pl.xlim([0, max(SNR_dB)])
pl.ylim([1e-10,1])
pl.title('Error vs SNR_dB')
pl.grid(True)
pl.xlabel('SNR_dB')
pl.ylabel('Pe')