【问题标题】:matplotlib graphs in SPSSSPSS中的matplotlib图
【发布时间】:2017-01-21 13:15:15
【问题描述】:

是否可以在 SPSS 中使用内置的任何其他图形库?我刚刚发现了使 SPSS 很棒的 python 扩展。

import matplotlib.pyplot as plt
from numpy.random import rand


fig, ax = plt.subplots()
for color in ['red', 'green', 'blue']:
    n = 750
    x, y = rand(2, n)
    scale = 200.0 * rand(n)
    ax.scatter(x, y, c=color, s=scale, label=color,
               alpha=0.3, edgecolors='none')

ax.legend()
ax.grid(True)

plt.show() 

这将创建一个简单的散点图,它在任何 IDE 中都可以正常工作,但是当尝试在 SPSS BEGIN PROGRAM END PROGRAM 中使用该代码时,我收到以下错误:

RuntimeError: Python is not installed as a framework. The Mac OS X backend will not be able to function correctly if Python is not installed as a framework. See the Python documentation for more information on installing Python as a framework on Mac OS X.
 Please either reinstall Python as a framework, or try one of the other backends. If you are Working with Matplotlib in a virtual enviroment see 'Working with Matplotlib in Virtual environments' in the Matplotlib FAQ

也许我对 SPSS 中的 python 扩展提出了太多要求,但使用另一个图形库而不是他们内置的库会很好。

【问题讨论】:

    标签: python graph spss


    【解决方案1】:

    由于评论字段太有限,因此添加更多信息作为另一个答案。

    我在 Windows 上没有收到框架错误,我认为这是一个不同的问题。但是在 Statistics 中运行你的代码是可行的——有点。它不是将图像放在查看器中,而是在自己的窗口中弹出(可能隐藏在另一个窗口后面)。

    因此 Statistics 不知道它并耐心等待程序完成,直到您关闭该窗口(该窗口确实有一个正常的框架未在图形中显示)才会发生。

    要完成这项工作,您需要指示 matplotlib 代码将图像写入某个文件,然后使用 SpssClient apis 将该图像插入查看器。请参阅 Python 可编程性帮助中的 CreateImageChartItem 方法 (Python)。或者,如果您可以指示 matplotlib 将图像写入标准输出流,Statistics 可能能够直接在查看器中捕获它。

    我通常使用 R 代码制作可编程图像(尽管 Python 是一种更好的语言(!)),这一切都可以无缝运行。或者我使用 Python 代码编写统计图形命令,并使用 GPL 让非常强大的统计引擎来绘制图表。

    如果您对 Python 感兴趣,您认为另一件有用的事情是,您可以在外部模式下运行 Python,在这种模式下,您可以从 IDE 或 Python 命令行运行 Python 代码开始,然后通过运行调用统计信息

    导入spss

    这对于开发和调试 Python 代码有很大的好处,但是不能直接使用 SpssClient 模块方法。我从我的 IDE(Wing Professional)中运行了您的代码,图像窗口随即弹出。当然,您也可以在外部模式下使用spss模块和相关api与Statistics进行通信和控制。

    【讨论】:

    • 感谢您的回答,非常详细的回答。我尝试了另一台安装了 SPSS 的计算机,并且代码确实在那里工作。所以我在另一台电脑上的 python 安装有问题!
    【解决方案2】:

    您几乎可以使用任何 Python 代码或库,但您需要进行一些配置。安装 Python 支持(Python Essentials)时,它会安装一个私有的、未注册的 Python 系统,以免与可能安装的任何其他 Python 冲突。因此,如果您尝试添加其他库,安装程序将不知道该做什么,或者将它们安装在 Statistics 安装不知道的位置。

    解决此问题的最简单方法是安装另一个标准 Python 安装(最新版本为 2.7 版,如果需要 Python 3,则为 3.4 版和 24 版)。然后转到编辑 > 选项 > 文件并指向该发行版。您需要重新启动统计信息才能生效。我使用 Anaconda 发行版,其中包含许多其他好东西。

    我不是 Mac 用户,但这样的东西应该可以工作。

    【讨论】:

    • 应该可能不安装另一个 python 安装以与 SPSS 一起使用,指向另一个 python 也不起作用。所以您的意思是您实际上可以将其他库绘制到 spss 输出中?
    • 没有。我的意思是使用与您的 Statistics 版本兼容的外部公共 Python 安装。 Python 2.7 可以与最新的 Statistics 版本一起使用。我经常这样做。我使用 Anaconda,其中包括 matplotlib。作为一种变体,您可以安装 Anaconda 或类似软件,然后将其包含在您的 Python 搜索路径中。为此,请在安装了 Statistics 的站点包目录中创建一个名为 sitecustomize.py 的文件。它应该包含这个 import sys sys.path.append("c:/a27/lib/site-packages") 其中第一部分是你安装 Anaconda 的地方。
    • 我已经在 sitecustomize.py 中包含了站点包的路径,但仍然显示该消息。但话又说回来,你确定你真的可以将外部图形打印到输出吗?如何?我提供的代码对你有用吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    • 2021-12-31
    • 1970-01-01
    • 2014-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多