RPY2导入包时Matplotlib错误帧单独绘制

Matplotlib error frames plotted separately when RPY2 imports package

在我的电脑上安装了 RPY2 (v. 2.7.8) 和附带的依赖项 (Windows 10, Python 2.7 x86) 之后,Matplotlib (v. 1.5.3) 似乎已损坏。即使是最简单的图,框架和 window 也是分开描绘的:

series1  = pd.Series(np.arange(500))
series2 = series1*-1
plt.plot(series1,series2)
# OUT: [<matplotlib.lines.Line2D object at 0x185F4A50>]
plt.show()

以下导入会出错。

# general
import os
from os import path # necessary for check file-overwrite
import calendar
import datetime
import csv
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import imp

# cvxEDA
from scipy import signal
citi = imp.load_source('cvxeda', 'D:\Python27\Lib\cvxEDA\src\cvxEDA.py')

#RPY and RHRV
import rpy2
import rpy2.robjects as robjects
import rpy2.robjects.packages as rpackages
from rpy2.robjects.packages import importr# This step is importing the R package in the embedded R,
# and is exposing all R objects in that package as Python objects
# import R's "base" package
base = importr('base')
# import R's "utils" package
utils = importr('utils')
# select a mirror for R packages
utils.chooseCRANmirror(ind=1) # select the first mirror in the list
rhrv = importr('RHRV')

更新:
我已将问题追溯到以下导入 rhrv = importr('RHRV')。 RHRV是R的一个心率分析包,里面有自己的绘图函数(for R)。这可能是令人不安的问题。

有没有人遇到过这个问题?出了什么问题,我该如何解决?

我已就此问题联系 R 包 RHRV 的开发人员。他们告诉我

RHRV makes use of the tkrplot library, which makes use of Tk widgets. Maybe this is interferring with your python module.

虽然我无法发现 matplotlib 确实使用了 Tk 小部件,但我确实发现 matplotlib 可以与 Tk 结合使用(例如 http://matplotlib.org/examples/user_interfaces/embedding_in_tk)。这可能是绘图问题的原因。

我能想到的唯一解决办法是在导入 RHRV 时不打印。首先计算并保存数据。然后,在另一个脚本中,您可以制作情节。或者,有专门针对 Python (gHRV or hrv) 的 HRV 分析包。但是,我无法让 gHRV 工作,而且 hrv 包目前还不完整。