|
2092 | 2092 | "al.show()\n" |
2093 | 2093 | ] |
2094 | 2094 | }, |
| 2095 | + { |
| 2096 | + "cell_type": "markdown", |
| 2097 | + "metadata": {}, |
| 2098 | + "source": [ |
| 2099 | + "## Advanced API Controls\n", |
| 2100 | + "\n", |
| 2101 | + "This section collects the less common control APIs in one runnable example:\n", |
| 2102 | + "`on_view_change`, `on_perf_stats`, `set_plot_flags`, `set_axis_state`, `set_time_axis`,\n", |
| 2103 | + "`set_axis_limits_constraints`, `set_axis_zoom_constraints`, `set_axis_link`,\n", |
| 2104 | + "`set_aligned_group`, custom ticks plus `clear_axis_ticks`, subplots, secondary axes,\n", |
| 2105 | + "and lifecycle calls such as `p.render()`, `p.show()`, and `p.close()` when you are done.\n" |
| 2106 | + ] |
| 2107 | + }, |
| 2108 | + { |
| 2109 | + "cell_type": "code", |
| 2110 | + "execution_count": null, |
| 2111 | + "metadata": {}, |
| 2112 | + "outputs": [], |
| 2113 | + "source": [ |
| 2114 | + "advanced_view_events = []\n", |
| 2115 | + "advanced_perf_events = []\n", |
| 2116 | + "\n", |
| 2117 | + "x_adv = (np.arange(240, dtype=np.float32) * 60.0).astype(np.float32)\n", |
| 2118 | + "y_adv = (0.7 * np.sin(np.arange(240, dtype=np.float32) * 0.08) + 0.25 * np.cos(np.arange(240, dtype=np.float32) * 0.017)).astype(np.float32)\n", |
| 2119 | + "y_adv2 = (120 + 35 * np.sin(np.arange(240, dtype=np.float32) * 0.05) + 12 * np.cos(np.arange(240, dtype=np.float32) * 0.19)).astype(np.float32)\n", |
| 2120 | + "\n", |
| 2121 | + "p = ip.Plot(width=1100, height=520, title=\"Advanced API Controls\")\n", |
| 2122 | + "\n", |
| 2123 | + "def on_view(plot, view):\n", |
| 2124 | + " advanced_view_events.append(view)\n", |
| 2125 | + " print(\"view\", view)\n", |
| 2126 | + "\n", |
| 2127 | + "def on_perf(plot, stats):\n", |
| 2128 | + " advanced_perf_events.append(stats)\n", |
| 2129 | + "\n", |
| 2130 | + "p.on_view_change(on_view)\n", |
| 2131 | + "p.on_perf_stats(on_perf, interval_ms=500)\n", |
| 2132 | + "p.set_plot_flags(no_legend=False, no_menus=False, no_box_select=False, crosshairs=True)\n", |
| 2133 | + "p.set_subplots_config(rows=1, cols=2, flags=0)\n", |
| 2134 | + "p.set_aligned_group(\"advanced-api-gallery\", enabled=True, vertical=True)\n", |
| 2135 | + "p.set_secondary_axes(x2=True, y2=True)\n", |
| 2136 | + "p.set_time_axis(\"x1\")\n", |
| 2137 | + "p.set_axis_state(\"x2\", enabled=True, scale=\"time\")\n", |
| 2138 | + "p.set_axis_state(\"y2\", enabled=True, scale=\"linear\")\n", |
| 2139 | + "p.set_axis_link(\"x2\", \"x1\")\n", |
| 2140 | + "p.set_axis_limits_constraints(\"y1\", -1.4, 1.4)\n", |
| 2141 | + "p.set_axis_zoom_constraints(\"x1\", 5 * 60, 180 * 60)\n", |
| 2142 | + "p.set_axis_label(\"x1\", \"time axis\")\n", |
| 2143 | + "p.set_axis_label(\"x2\", \"linked time axis\")\n", |
| 2144 | + "p.set_axis_label(\"y1\", \"signal\")\n", |
| 2145 | + "p.set_axis_label(\"y2\", \"load\")\n", |
| 2146 | + "p.set_axis_format(\"y1\", \"%.2f\")\n", |
| 2147 | + "p.set_axis_format(\"y2\", \"%.0f\")\n", |
| 2148 | + "\n", |
| 2149 | + "ticks = np.array([0, 1800, 3600, 5400, 7200, 9000, 10800, 12600], dtype=np.float32)\n", |
| 2150 | + "labels = [\"00:00\", \"00:30\", \"01:00\", \"01:30\", \"02:00\", \"02:30\", \"03:00\", \"03:30\"]\n", |
| 2151 | + "p.set_axis_ticks(\"x1\", ticks, labels=labels, keep_default=False)\n", |
| 2152 | + "p.set_axis_ticks(\"x2\", ticks, labels=labels, keep_default=False)\n", |
| 2153 | + "p.clear_axis_ticks(\"x2\")\n", |
| 2154 | + "\n", |
| 2155 | + "h = p.line(\"primary\", y_adv, x=x_adv, subplot_index=0, color=\"#1f6f66\", line_weight=2.0)\n", |
| 2156 | + "p.line(\"secondary y2\", y_adv2, x=x_adv, y_axis=\"y2\", subplot_index=0, color=\"#b74b2b\", line_weight=1.6)\n", |
| 2157 | + "p.inf_lines(\"maintenance windows\", np.array([3600, 7200, 10800], dtype=np.float32), axis=\"x\", subplot_index=0)\n", |
| 2158 | + "p.tag_y(0.85, label_fmt=\"tag_y wrapper\", round_value=False, subplot_index=0)\n", |
| 2159 | + "p.scatter(\"linked samples\", y_adv[::5], x=x_adv[::5], subplot_index=1, marker=\"diamond\", size=4.0)\n", |
| 2160 | + "p.line(\"linked trend\", y_adv, x=x_adv, subplot_index=1, color=\"#3f5f8f\")\n", |
| 2161 | + "p.set_view(0, 4 * 3600, -1.25, 1.25)\n", |
| 2162 | + "p.render()\n", |
| 2163 | + "p.show()\n" |
| 2164 | + ] |
| 2165 | + }, |
2095 | 2166 | { |
2096 | 2167 | "cell_type": "markdown", |
2097 | 2168 | "id": "b554df42", |
|
0 commit comments