Title: pzmap(sys, grid=True) fails · Issue #457 · python-control/python-control · GitHub
Open Graph Title: pzmap(sys, grid=True) fails · Issue #457 · python-control/python-control
X Title: pzmap(sys, grid=True) fails · Issue #457 · python-control/python-control
Description: This is with 08d5e6c and matplotlib 3.3.0. I tried commenting out the offending line (the one calling angle_helper.ExtremeFinderCycle._adjust_extremes), and got an error deep in mpl_toolkit. import control g = control.tf(1, [1,1]) contro...
Open Graph Description: This is with 08d5e6c and matplotlib 3.3.0. I tried commenting out the offending line (the one calling angle_helper.ExtremeFinderCycle._adjust_extremes), and got an error deep in mpl_toolkit. import...
X Description: This is with 08d5e6c and matplotlib 3.3.0. I tried commenting out the offending line (the one calling angle_helper.ExtremeFinderCycle._adjust_extremes), and got an error deep in mpl_toolkit. import...
Opengraph URL: https://github.com/python-control/python-control/issues/457
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"pzmap(sys, grid=True) fails","articleBody":"This is with python-control@08d5e6c and matplotlib 3.3.0. I tried commenting out the offending line (the one calling `angle_helper.ExtremeFinderCycle._adjust_extremes`), and got an error deep in mpl_toolkit.\r\n\r\n```python\r\nimport control\r\ng = control.tf(1, [1,1])\r\ncontrol.pzmap(g, grid=True)\r\n```\r\n\r\nTraceback:\r\n\r\n```\r\n---------------------------------------------------------------------------\r\nAttributeError Traceback (most recent call last)\r\n\u003cipython-input-7-4e6a52bd77da\u003e in \u003cmodule\u003e\r\n 1 import control\r\n 2 g = control.tf(1, [1,1])\r\n----\u003e 3 control.pzmap(g, grid=True)\r\n\r\n~/src/python-control/control/pzmap.py in pzmap(sys, plot, grid, title, **kwargs)\r\n 104 ax, fig = zgrid()\r\n 105 else:\r\n--\u003e 106 ax, fig = sgrid()\r\n 107 else:\r\n 108 ax, fig = nogrid()\r\n\r\n~/src/python-control/control/grid.py in sgrid()\r\n 80 ax.axis[:].invert_ticklabel_direction()\r\n 81 \r\n---\u003e 82 ax.axis[\"wnxneg\"] = axis = ax.new_floating_axis(0, 180)\r\n 83 axis.set_ticklabel_direction(\"-\")\r\n 84 axis.label.set_visible(False)\r\n\r\n~/.miniconda3/envs/control-dev/lib/python3.8/site-packages/mpl_toolkits/axisartist/axislines.py in new_floating_axis(self, nth_coord, value, axis_direction)\r\n 571 def new_floating_axis(self, nth_coord, value, axis_direction=\"bottom\"):\r\n 572 gh = self.get_grid_helper()\r\n--\u003e 573 axis = gh.new_floating_axis(nth_coord, value,\r\n 574 axis_direction=axis_direction,\r\n 575 axes=self)\r\n\r\n~/.miniconda3/envs/control-dev/lib/python3.8/site-packages/mpl_toolkits/axisartist/grid_helper_curvelinear.py in new_floating_axis(self, nth_coord, value, axes, axis_direction)\r\n 348 self, nth_coord, value, axis_direction)\r\n 349 \r\n--\u003e 350 axisline = AxisArtist(axes, _helper)\r\n 351 \r\n 352 # _helper = FloatingAxisArtistHelper(self, nth_coord,\r\n\r\n~/.miniconda3/envs/control-dev/lib/python3.8/site-packages/mpl_toolkits/axisartist/axis_artist.py in __init__(self, axes, helper, offset, axis_direction, **kwargs)\r\n 744 self._axis_direction = axis_direction\r\n 745 \r\n--\u003e 746 self._init_line()\r\n 747 self._init_ticks(**kwargs)\r\n 748 self._init_offsetText(axis_direction)\r\n\r\n~/.miniconda3/envs/control-dev/lib/python3.8/site-packages/mpl_toolkits/axisartist/axis_artist.py in _init_line(self)\r\n 885 if axisline_style is None:\r\n 886 self.line = PathPatch(\r\n--\u003e 887 self._axis_artist_helper.get_line(self.axes),\r\n 888 color=rcParams['axes.edgecolor'],\r\n 889 fill=False,\r\n\r\n~/.miniconda3/envs/control-dev/lib/python3.8/site-packages/mpl_toolkits/axisartist/grid_helper_curvelinear.py in get_line(self, axes)\r\n 268 \r\n 269 def get_line(self, axes):\r\n--\u003e 270 self.update_lim(axes)\r\n 271 x, y = self.grid_info[\"line_xy\"]\r\n 272 \r\n\r\n~/.miniconda3/envs/control-dev/lib/python3.8/site-packages/mpl_toolkits/axisartist/grid_helper_curvelinear.py in update_lim(self, axes)\r\n 99 \r\n 100 def update_lim(self, axes):\r\n--\u003e 101 self.grid_helper.update_lim(axes)\r\n 102 \r\n 103 x1, x2 = axes.get_xlim()\r\n\r\n~/.miniconda3/envs/control-dev/lib/python3.8/site-packages/mpl_toolkits/axisartist/axislines.py in update_lim(self, axes)\r\n 325 \r\n 326 if self._force_update or self._old_limits != (x1, x2, y1, y2):\r\n--\u003e 327 self._update(x1, x2, y1, y2)\r\n 328 self._force_update = False\r\n 329 self._old_limits = (x1, x2, y1, y2)\r\n\r\n~/.miniconda3/envs/control-dev/lib/python3.8/site-packages/mpl_toolkits/axisartist/grid_helper_curvelinear.py in _update(self, x1, x2, y1, y2)\r\n 317 if self.valid() and self._old_values == (x1, x2, y1, y2):\r\n 318 return\r\n--\u003e 319 self._update_grid(x1, y1, x2, y2)\r\n 320 self._old_values = (x1, x2, y1, y2)\r\n 321 self._force_update = False\r\n\r\n~/.miniconda3/envs/control-dev/lib/python3.8/site-packages/mpl_toolkits/axisartist/grid_helper_curvelinear.py in _update_grid(self, x1, y1, x2, y2)\r\n 365 \r\n 366 def _update_grid(self, x1, y1, x2, y2):\r\n--\u003e 367 self.grid_info = self.grid_finder.get_grid_info(x1, y1, x2, y2)\r\n 368 \r\n 369 def get_gridlines(self, which=\"major\", axis=\"both\"):\r\n\r\n~/.miniconda3/envs/control-dev/lib/python3.8/site-packages/mpl_toolkits/axisartist/grid_finder.py in get_grid_info(self, x1, y1, x2, y2)\r\n 102 \"\"\"\r\n 103 \r\n--\u003e 104 extremes = self.extreme_finder(self.inv_transform_xy, x1, y1, x2, y2)\r\n 105 \r\n 106 # min \u0026 max rage of lat (or lon) for each grid line will be drawn.\r\n\r\n~/src/python-control/control/grid.py in __call__(self, transform_xy, x1, y1, x2, y2)\r\n 42 \r\n 43 lon_min, lon_max, lat_min, lat_max = \\\r\n---\u003e 44 self._adjust_extremes(lon_min, lon_max, lat_min, lat_max)\r\n 45 \r\n 46 return lon_min, lon_max, lat_min, lat_max\r\n\r\nAttributeError: 'ModifiedExtremeFinderCycle' object has no attribute '_adjust_extremes'\r\n```","author":{"url":"https://github.com/roryyorke","@type":"Person","name":"roryyorke"},"datePublished":"2020-08-21T18:06:06.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":2},"url":"https://github.com/457/python-control/issues/457"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:e7a57d7b-fa82-0489-5ee5-636baf85c004 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | E112:2145B9:AC9401:ECB102:697B08E2 |
| html-safe-nonce | 659546da2dc5d173dd3c40f7b65b87d5c6aa90c8a612514251f4107fd50e1ea1 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJFMTEyOjIxNDVCOTpBQzk0MDE6RUNCMTAyOjY5N0IwOEUyIiwidmlzaXRvcl9pZCI6IjQ3MjM2MzcxMDQ0MzEyNzAxMTQiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | b51d9be8a8f363977bc27c518ca181440ebbbb52785eec7bdc61180f3a4736fb |
| hovercard-subject-tag | issue:683727162 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/python-control/python-control/457/issue_layout |
| twitter:image | https://opengraph.githubassets.com/2dfd43e8d647f0a78eb2ddc8b2897aab31b0c17f3926321f8432981bd0df7408/python-control/python-control/issues/457 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/2dfd43e8d647f0a78eb2ddc8b2897aab31b0c17f3926321f8432981bd0df7408/python-control/python-control/issues/457 |
| og:image:alt | This is with 08d5e6c and matplotlib 3.3.0. I tried commenting out the offending line (the one calling angle_helper.ExtremeFinderCycle._adjust_extremes), and got an error deep in mpl_toolkit. import... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | roryyorke |
| hostname | github.com |
| expected-hostname | github.com |
| None | 7ce8ed0a54c4730aeca4e6abacfc6490365fc42e25480b86883054df3f9181c8 |
| turbo-cache-control | no-preview |
| go-import | github.com/python-control/python-control git https://github.com/python-control/python-control.git |
| octolytics-dimension-user_id | 2285872 |
| octolytics-dimension-user_login | python-control |
| octolytics-dimension-repository_id | 22791752 |
| octolytics-dimension-repository_nwo | python-control/python-control |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 22791752 |
| octolytics-dimension-repository_network_root_nwo | python-control/python-control |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | d7bfc78137af9a4828305e52ab993fce981d7085 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width