Python 当plotfile使用Matplotlib时,子地块的奇怪行为

Python 当plotfile使用Matplotlib时,子地块的奇怪行为,python,matplotlib,Python,Matplotlib,我有一个用于绘制子图的脚本,它非常适合绘制条形图。当我将此脚本与plotfile函数一起使用时,结果只是一个绘图在另一个绘图之上。基本上它只是显示了第二个情节。原因是什么 import matplotlib matplotlib.use('Agg') import matplotlib.pylab as plt import numpy as np import matplotlib.ticker as mtick from operator import add matplotlib.rc

我有一个用于绘制子图的脚本,它非常适合绘制条形图。当我将此脚本与plotfile函数一起使用时,结果只是一个绘图在另一个绘图之上。基本上它只是显示了第二个情节。原因是什么

import matplotlib
matplotlib.use('Agg')

import matplotlib.pylab as plt
import numpy as np
import matplotlib.ticker as mtick
from operator import add

matplotlib.rcParams.update({'font.size': 16})

fig = plt.figure(figsize=(11,10))
plt.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=0.13, hspace=0.15)

ax1=fig.add_subplot(211)
plt.plotfile('2m_5m_stringsearch', delimiter=' ', cols=(0, 1), color='green', linewidth= 1.5, linestyle='-.',dashes=(5,8), marker='', label='stringsearch')
plt.ylim(0,1)
ax1.set_xticklabels([])
plt.ylabel('SER of Leon3-C1')

ax2=fig.add_subplot(212)
plt.plotfile('2m_5m_stringsearch', delimiter=' ', cols=(0, 1), color='green', linewidth= 1.5, linestyle='-.',dashes=(5,8), marker='', label='stringsearch')
plt.ylim(0,1)
ax2.set_xticklabels([])
plt.ylabel('SER of Leon3-C2')

plt.savefig("Output.pdf", dpi=400, bbox_inches='tight', pad_inches=0.05)
可能是因为:

如果newfig为真,则绘图将始终以新图形绘制;如果 False,如果存在,则在当前图形中创建,否则在 新数字


newfig
默认为
True
。尝试将
newfig=False
传递到
pylab.plotfile

查看了
pyplot.py
包的内容后,我意识到
plotfile
函数与子包的接口不好:如果要将文件的多列打印到子包,它可以很容易地做到这一点

如果您想将多个(可能不同的)文件任意打印到不同的子地块,那么它就不能

我找到的解决方案是使用
numpy
genfromtxt
自己通过编写自己的
plot\u文件
函数来读取数据:

import numpy as np
def plot_file(ax, fnme, cols=[], label=None):
    data = np.genfromtxt(
      fnme,
      skip_header=0,
      skip_footer=0,
      names=[str(col) for col in cols],
    )
    ax.plot(*[data[str(col)] for col in cols], label=label)

import matplotlib.pyplot as plt   
fig = plt.figure(figsize=(10, 3))
PLOT_INDEXES = range(0,2)
for i in PLOT_INDEXES:
    ax = plt.subplot(1, len(PLOT_INDEXES), i+1)
    plot_file(ax, 'test_{0}.txt'.format(i), cols=[0, 1], label=str(i))
plt.show()

我遇到了同样的问题,您是否找到了答案?我遇到了同样的问题,同时已使用
newfig=False
调用
plotfile
。还有其他想法吗?