Python 当plotfile使用Matplotlib时,子地块的奇怪行为
我有一个用于绘制子图的脚本,它非常适合绘制条形图。当我将此脚本与plotfile函数一起使用时,结果只是一个绘图在另一个绘图之上。基本上它只是显示了第二个情节。原因是什么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
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
。还有其他想法吗?