Improvements to Nichols chart plotting#723
Merged
bnavigator merged 5 commits intopython-control:masterfrom Apr 30, 2022
Merged
Conversation
Clip closed-loop contour labels. Add labels for constant closed-loop phase contours. Use smaller of data or view extents when deciding on how big, in phase, a chart to create. Use more uniformly spaced closed-loop phase contours, and use more widely-spaced contours when phase extent is large. Add optional `ax` argument, for axes to add grid to.
Member
|
Changes look good. It might be worth adding some unit tests to cover the new features (eg, use of |
Contributor
Author
|
OK, I'll look at some tests, including testing the I'll probably wrap up the linfnorm PR first, and I'm not sure when I'll get this PR done. |
Contributor
Author
|
I changed nichols_grid to return the artists it adds; this made testing much easier, but also makes it possible to customize the grid appearance and labels. Below is a not-especially-compelling example; more realistically one might change the intensity or alpha of the grid and labels. plt.clf()
mc,nc,ml,nl = ct.nichols_grid()
for i,(c,l) in enumerate(zip(nc,nl)):
nc.set_color(f'C{i}')
nl.set_color(f'C{i}')
for i,(c,l) in enumerate(zip(mc,ml)):
c.set_color(f'C{i}')
l.set_color(f'C{i}') |
bnavigator
reviewed
Apr 27, 2022
Member
|
This looks good to go to me. @roryyorke: any additional changes that you plan to make? |
Contributor
Author
|
No, all done.
…On Sat, 30 Apr 2022, 07:05 Richard Murray, ***@***.***> wrote:
This looks good to go to me. @roryyorke <https://github.com/roryyorke>:
any additional changes that you plan to make?
—
Reply to this email directly, view it on GitHub
<#723 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAA3C7TMVNROIIOFAL7I2EDVHS5QRANCNFSM5TSN3NBA>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

These are relatively minor updates to the Nichols chart (AKA grid) plotting.
It's far from ideal; further possible improvements:
'xlim_changed'and'ylim_changed'eventsContourSets, and plug into however that labelling is done?Here are some before-and-after pictures (left is before) of a few example systems.
The new code gives a better result in almost all respects. One visible problem is that the closed-loop phase label for "0°" clashes with the "-40dB" (and similar) closed-loop gain label. The gains become crowded when the gain span is large (final figure), but that is the same in both versions.
I haven't added tests; I'll see how much time I have to do that. Easyish tests:
ifin_inner_extents, and in fact test the behaviour in general by setting xlim & ylim before calling nichols_grid.Please suggest other tests.
Details (commit message)
Clip closed-loop contour labels.
Add labels for constant closed-loop phase contours.
Use smaller of data or view extents when deciding on how big, in
phase, a chart to create.
Use more uniformly spaced closed-loop phase contours, and use more
widely-spaced contours when phase extent is large.
Add optional
axargument, for axes to add grid to.