【问题标题】:Matplotlib error frames plotted separately when RPY2 imports packageRPY2 导入包时分别绘制 Matplotlib 错误帧
【发布时间】:2017-03-15 17:17:21
【问题描述】:

在我的计算机(Windows 10、Python 2.7 x86)上安装 RPY2(v. 2.7.8)和随附的依赖项后,Matplotlib(v. 1.5.3)似乎已损坏。即使是最简单的绘图,框架和窗口也是分开描绘的:

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 的心率分析包,它包括自己的绘图功能(用于 R)。这可能是一个令人不安的问题。

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

【问题讨论】:

  • 如果您能提供一些“假”数据,我们可以尝试重现问题,这将很有帮助。
  • @Koga 是的。在过去的几周里,这种情况已经发生了好几次。它似乎与数据类型无关。我会在帖子中添加一些数据。
  • 你在正常运行脚本python script.py时会遇到同样的问题吗? Shell 可能会使用一些功能(让生活更轻松),这会产生问题。
  • 我重新排列了整个问题。显然,当一些进口消失时,问题并没有继续存在。我现在正在尝试通过反复试验来确定问题。
  • @RobinKramer - rpy2 本身并没有触及 matplotlib 命名空间,但可能发生的情况是 R 包 RHRV 正在导入与 matplotlib 中的 C 级代码冲突的 C 库。跨度>

标签: python python-2.7 matplotlib rpy2


【解决方案1】:

我已就该问题联系了 R-package RHRV 的开发人员。他们告诉我

RHRV 使用 tkrplot 库,该库使用 Tk 小部件。也许这会干扰您的 python 模块。

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

我能想到的唯一解决方案是在导入 RHRV 时不进行绘图。首先计算并保存数据。然后,在另一个脚本中,您可以制作绘图。或者,有专门用于 Python 的 HRV 分析包 (gHRV or hrv)。但是,我无法让 gHRV 工作,并且 hrv 包到目前为止还不完整。

【讨论】:

    猜你喜欢
    • 2016-08-16
    • 2020-12-21
    • 2016-08-11
    • 2017-01-13
    • 2019-10-13
    • 2014-09-24
    • 1970-01-01
    • 2013-09-15
    相关资源
    最近更新 更多