| 1 | = BOY OPI中に張り付けた DataBrowser のスケールを変更したい = |
| 2 | |
| 3 | == 概要 == |
| 4 | XYGraphのスケール変更はpropertyを変えるだけなので容易に実現できる。 |
| 5 | しかし、DataBrowserは別のpltファイルを読んでいるだけで、横軸・縦軸の変更はデフォルトでは不可能。 |
| 6 | いままでは個別のpltファイルを別のDataBrowserプロットとして新しいViewとして表示し、レイアウトをマウスで変更することで複数のグラフを表示してきた。 |
| 7 | しかし、これでは決まったグラフをいつもと同じ場所に表示したいときに不便。 |
| 8 | |
| 9 | == 対策 == |
| 10 | [[Image(DataBrowser_from_OPI.png)]] |
| 11 | |
| 12 | 水平軸(時間軸)変更スクリプト |
| 13 | {{{ |
| 14 | from org.csstudio.opibuilder.scriptUtil import PVUtil |
| 15 | import time |
| 16 | |
| 17 | ts = time.time()*1e3 # in unit of ms |
| 18 | hscale = float(display.getWidget("Inp_HScale").getValue()) |
| 19 | |
| 20 | # set time range from ts - <hscale>min to ts |
| 21 | display.getWidget("DataBrowser1").figure.dataBrowserPlot.XYGraph.primaryXAxis.setRange(ts - hscale*60*1000, ts) |
| 22 | }}} |
| 23 | |
| 24 | 垂直軸変更スクリプト |
| 25 | {{{ |
| 26 | from org.csstudio.opibuilder.scriptUtil import PVUtil |
| 27 | |
| 28 | vmin = float(display.getWidget("Inp_VScale_min").getValue()) |
| 29 | vmax = float(display.getWidget("Inp_VScale_max").getValue()) |
| 30 | |
| 31 | display.getWidget("DataBrowser1").figure.dataBrowserPlot.XYGraph.primaryYAxis.setAutoScale(False) |
| 32 | display.getWidget("DataBrowser1").figure.dataBrowserPlot.XYGraph.primaryYAxis.setRange(vmin, vmax) |
| 33 | |
| 34 | }}} |
| 35 | |
| 36 | 垂直軸 Auto Scale に設定する場合 |
| 37 | {{{ |
| 38 | from org.csstudio.opibuilder.scriptUtil import PVUtil |
| 39 | display.getWidget("DataBrowser1").figure.dataBrowserPlot.XYGraph.primaryYAxis.setAutoScale(True) |
| 40 | }}} |