JMP 图形生成器上的 matplotlib嗨,我正在尝试结合使用 matplotlib 和 JMP 图形构建器,但我不知道是否可行。 我想绘制一个只能在 matplotlib 上绘制的特定图形;但我想利用 JMP 图形构建器界面的优势,例如数据过滤。 可以在 JMP 图形构建器界面上显示 matplotlib 图吗? 提前致谢
图形脚本编写回复:JMP 图形生成器上的 matplotlib脚本可以使用数据过滤器进行处理,该过滤器会触发 matplotlib 代码并根据过滤后的数据重新创建图形。但我不知道如何将 Graph Builder 与 matplotlib 集成。
回复:JMP 图形生成器上的 matplotlib我可能误解了所需的结果,但听起来您只需要一个数据过滤器和一个绘图,而不是 Graph Builder (GB) 中的拖放交互性和 GB 中的复杂图形布局。
如果是这样,我相信您至少需要以下成分:
- JSL 函数“Make Filter Change Handler”,因此您可以根据数据过滤器的状态获取数据的子集。 请参阅脚本索引中的“Make Filter Change Handler”示例。
- JSL 函数“Python Get Graphics”,所以你可以从 python 中取回绘图。 请参阅脚本索引中的“Python 获取图形”示例。
- 一个“数据过滤器上下文框”显示框,用于将过滤器和您的绘图以及可能的其他分析放在一起。
这是一个将元素放在一起的小例子。
dt = Open( "$SAMPLE_DATA/Cities.jmp" );
New Window( "Shared Local Filter",
Data Filter Context Box(
H List Box(
filter = (dt << Data Filter( Local, Add Filter( columns( :Region ) ) )),
pb = Picture Box()
)
)
);
f = Function( {nrows},
rows = filter << get filtered rows;
xx = dt:X[rows];
yy = dt:Y[rows];
Python Init();
Python Send(xx);
Python Send(yy);
ml = Python Submit(
"\[
import matplotlib.pyplot as plt
plt.scatter(xx,yy)
plt.xlabel('X')
plt.ylabel('Y')
plt.show(block=False)
]\"
);
plot = Python Get Graphics( png );
pb << set image(plot);
Python Submit( "plt.close()" );
Python Term();
);
rs = filter << Make Filter Change Handler( f );
注意 Python 的缩进规则。 例如,Python Submit 中的所有字符串都必须将它们放在行的开头。
这是该产品的几个屏幕截图。


回复:JMP 图形生成器上的 matplotlib惊人的好例子!
如果你使用这个例子,准备好在第一次点击后等待 Python 加载;我的慢机可能需要 10-30 秒。 加载后,后续点击就足够快了。
回复:JMP 图形生成器上的 matplotlib此示例需要添加到 JMP Cookbook