You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
I'm having problems with the ax parameters of the rlocus function #623
I was trying today to plot the root locus of a transfer function, but wanted to pass a specific axes object to it, so I tried to use the ax parameter of the rlocus function:
from control import *
import matplotlib.pyplot as plt
s = tf([1, 0], 1)
G = 1/(s*(s+1))
fig, ax = plt.subplots(dpi=200)
rlocus(G, ax=ax)
But when doing this, the following error was raised:
---------------------------------------------------------------------------
UnboundLocalError Traceback (most recent call last)
<ipython-input-1-80498c4b1a54> in <module>
6
7 fig, ax = plt.subplots(dpi=200)
----> 8 rlocus(G, ax=ax)
~\anaconda3\lib\site-packages\control\rlocus.py in root_locus(sys, kvect, xlim, ylim, plotstr, plot, print_gain, grid, ax, **kwargs)
173
174 if print_gain and not sisotool:
--> 175 fig.canvas.mpl_connect(
176 'button_release_event',
177 partial(_RLClickDispatcher, sys=sys, fig=fig,
UnboundLocalError: local variable 'fig' referenced before assignment
I'm happy to implement this immediate fix (and #632 at the same time) and maybe add some unit tests, including for other plot functions where applicable. If I recall correctly, I was trying to do this a while back and the problem is that some plot funcs need to generate their own axis (e.g. radial plots) and some generate a figure containing more than one axis.
If you manage to also fix #634 while you are at it, it would be a blast. Not sure if it is worth to be done before/without implementing the new plotting paradigm, proposed by you in #65 (comment)
I'll have a look at #634. But I'm waiting for further input on the new plotting paradigm. That will require more thinking and discussion and probably take a while to figure out a way forward. There might be better ways to do it. I'm happy to try fixing the immediate bugs on the existing functions when I next get the chance.
Activity
sawyerbfuller commentedon May 22, 2021
Looks like you caught a bug, thanks! I think when we implemented this we had what you intended in mind but didn’t get around to testing it.
billtubbs commentedon Aug 9, 2021
It's not too difficult to fix. I think we just need to unindent lines 171 and 172 by one tab:
python-control/control/rlocus.py
Lines 169 to 172 in 283f5e7
billtubbs commentedon Aug 9, 2021
I'm happy to implement this immediate fix (and #632 at the same time) and maybe add some unit tests, including for other plot functions where applicable. If I recall correctly, I was trying to do this a while back and the problem is that some plot funcs need to generate their own axis (e.g. radial plots) and some generate a figure containing more than one axis.
bnavigator commentedon Aug 9, 2021
If you manage to also fix #634 while you are at it, it would be a blast. Not sure if it is worth to be done before/without implementing the new plotting paradigm, proposed by you in #65 (comment)
billtubbs commentedon Aug 9, 2021
I'll have a look at #634. But I'm waiting for further input on the new plotting paradigm. That will require more thinking and discussion and probably take a while to figure out a way forward. There might be better ways to do it. I'm happy to try fixing the immediate bugs on the existing functions when I next get the chance.
fix for github python-control#623
fix for github python-control#623
fix for github python-control#623