JMP 图形生成器上的 matplotlib您好,我正在尝试将 matplotlib 和 JMP 图形生成器结合起来,但我不知道是否可行。 我想绘制一个只能在 matplotlib 上绘制的特定图表;但我想利用 JMP 图形生成器界面的优势,例如数据过滤。 是否可以通过 JMP 图形生成器界面显示 matplotlib 图? 提前致谢
内容组织回复:JMP 图形生成器上的 matplotlib该示例需要添加到 JMP Cookbook 中
回复:JMP 图形生成器上的 matplotlib惊人的好例子!
如果您使用此示例,请准备好在第一次单击后等待 Python 加载;我的慢速机器可能需要 10-30 秒。 加载后,后续点击速度足够快。
回复:JMP 图形生成器上的 matplotlib我可能会误解所需的结果,但听起来您只需要一个数据过滤器和一个绘图,而不需要图形生成器(GB)中的拖放交互性和 GB 中的复杂图形布局。
如果是这样,我相信你至少需要以下成分:
- JSL 功能“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脚本可以使用数据过滤器进行处理,该过滤器会触发 matplotlib 代码并根据过滤后的数据重新创建图形。但我不知道如何将 Graph Builder 与 matplotlib 集成。