我目前正在使用package来计算python中的SSA(奇异频谱分析),并且它具有一些将无花果作为输出的功能。将一些图形放在作为子图创建的图形中对我来说很有用。
反正有这样做吗?
答案 0 :(得分:1)
由于很难将内容从一个图形复制到另一个图形,并且通常不建议这样做,因此建议您编写自己的documentating for ProgrammingErrors
绘图功能版本。
所以不是
m = MCSSA(...)
m.run_mcssa(...)
m.plot()
您可以复制以下函数以将结果绘制到您指定的轴上
def ssaplot(mc_ssa, freq_rank=True, ax=None):
ax = ax or plt.gca()
ax.set_yscale('log')
ax.set_ylabel('Variance')
ax.set_title('M: {}; cov: {}'.format(mc_ssa.M, mc_ssa.algo))
if not freq_rank:
x = [i for i in range(mc_ssa.M)]
y = mc_ssa.values
ax.set_xlabel('Eigenvalue Rank')
ax.plot(y, marker='s', linewidth=0, color='r')
else:
x = mc_ssa.freqs[mc_ssa.freq_rank]
y = mc_ssa.values[mc_ssa.freq_rank]
ax.set_xlabel('Frequency (Cycle/t. unit)')
ax.plot(x, y, marker='s', linewidth=0, color='r')
if mc_ssa.ismc:
errors = np.array(mc_ssa.stats.iloc[3:5, :])
mean_suro = np.array(mc_ssa.stats.iloc[0, :])
ax.errorbar(x, y=mean_suro, yerr=errors, fmt=None,
ecolor='k', elinewidth=.5, capsize=2.5)
ax.set_title('M: {}; g: {}; a: {}; Ns: {}'.format(mc_ssa.M,
mc_ssa.ar.gamma,
mc_ssa.ar.alpha,
mc_ssa.n_suro))
使用方式
import numpy as np
import matplotlib.pyplot as plt
from mcssa import MCSSA # probably(?)
m1 = MCSSA(...)
m1.run_mcssa(...)
m2 = MCSSA(...)
m2.run_mcssa(...)
fig, (ax1, ax2) = plt.subplots(2)
ssaplot(m1, ax=ax1)
ssaplot(m2, ax=ax2)
plt.show()
答案 1 :(得分:0)
我认为您可以将图形输出存储在变量中,并像平常使用matplotlib一样继续添加其他图形。 Here是与您所要求的内容类似的帖子。