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