SPSS中的matplotlib图

时间:2017-01-21 13:15:15

标签: python graph spss

是否可以在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扩展要求太多了,但使用另一个图库比使用它们内置的图库更好。

2 个答案:

答案 0 :(得分:1)

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

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

我不是Mac用户,但这样的事情应该有用。

答案 1 :(得分:1)

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

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

enter image description here

因此统计数据不知道它并且耐心地等待程序完成,直到您关闭该窗口(图中没有显示正常的框架)时才会发生这种情况。

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

我通常使用R代码编写可编程图像(即使Python是一种更好的语言(!)),这一切都可以无缝地工作。或者我使用Python代码编写统计图形命令和GPL以使统计引擎非常强大,可以进行制图。

如果您使用的是Python,那么您会发现有用的另一件事是,您可以在外部模式下运行Python,在这里您可以从运行IDE或Python命令行的Python代码开始,然后通过运行来调用统计信息

导入spss

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