René's URL Explorer Experiment


Title: Control plot refactoring for consistent functionality by murrayrm · Pull Request #1034 · python-control/python-control · GitHub

Open Graph Title: Control plot refactoring for consistent functionality by murrayrm · Pull Request #1034 · python-control/python-control

X Title: Control plot refactoring for consistent functionality by murrayrm · Pull Request #1034 · python-control/python-control

Description: This PR makes a (fairly large) number of changes to control plotting functions to provide consistent functionality. The majority of changes involve making functionality that was present in some plot functions but not others available consistently across all _plot() functions. Everything is backward compatible with v0.10.0. Summary of changes: Change output format for plotting commands to a ControlPlot object, with lines, axes, legend, etc available. Accessing this object as a list is backward compatible with 10.0 format (with deparecation warning). Make processing of the ax keyword consistent across all plotting functions (using ctrlplot._process_ax_keyword). Fix up the label keyword to operate in a consistent and more intuitive manner: labels can be specified as a single string, a simple list, or an array (for MIMO and multi-trace systems). If a single list is given for a MIMO or multi-trace system, it is reshaped as needed. Change ct.suptitle() to cplt.set_plot_title() (where cplt is the returned ControlPlot obect from a plotting command), and update the plot() method to provide uniform processing of the title keyword (when present, overrides title). Deprecated the relabel keyword in time_response_plot. This didn't seem to be that useful and was not implemented for other functions. Updated legend processing to be consistent across all plotting functions, as described in the user documention (below). Includes unit tests + docstring updates. Updated the use of rcParams for control plotting functions: defaults are now in ct.rcParams and can be reset using ct.reset_rcParams. Set up uniform processing of the rcParams keyword argument for plotting functions (with unit tests). Unified color and *fmt argument processing code, in addition to color management for sequential plotting (_get_color_offset, _get_color). Put together a sample code skeleton for creating a control plots (at the top of ctrlplot.py. Unit tests to make sure all plotting commands perform consistently, including documentation checks. Documentation of new functionality (from plotting.rst): Customizing control plots A set of common options are available to customize control plots in various ways. The following general rules apply: If a plotting function is called multiple times with data that generate control plots with the same shape for the array of subplots, the new data will be overlaid with the old data, with a change in color(s) for the new data (chosen from the standard matplotlib color cycle). If not overridden, the plot title and legends will be updated to reflect all data shown on the plot. If a plotting function is called and the shape for the array of subplots does not match the currently displayed plot, a new figure is created. Note that only the shape is checked, so if two different types of plotting commands that generate the same shape of subplots are called sequentially, the matplotlib.pyplot.figure command should be used to explicitly create a new figure. The ax keyword argument can be used to direct the plotting function to use a specific axes or array of axes. The value of the ax keyword must have the proper number of axes for the plot (so a plot generating a 2x2 array of subplots should be given a 2x2 array of axes for the ax keyword). The color, linestyle, linewidth, and other matplotlib line property arguments can be used to override the default line properties. If these arguments are absent, the default matplotlib line properties are used and the color cycles through the default matplotlib color cycle. The :func:~control.bode_plot, :func:~control.time_response_plot, and selected other commands can also accept a matplotlib format string (e.g., 'r--'). The format string must appear as a positional argument right after the required data argument. Note that line property arguments are the same for all lines generated as part of a single plotting command call, including when multiple responses are passed as a list to the plotting command. For this reason it is often easiest to call multiple plot commands in sequence, with each command setting the line properties for that system/trace. The label keyword argument can be used to override the line labels that are used in generating the title and legend. If more than one line is being plotted in a given call to a plot command, the label argument value should be a list of labels, one for each line, in the order they will appear in the legend. For input/output plots (frequency and time responses), the labels that appear in the legend are of the form ", , , ". The trace name is used only for multi-trace time plots (for example, step responses for MIMO systems). Common information present in all traces is removed, so that the labels appearing in the legend represent the unique characteristics of each line. For non-input/output plots (e.g., Nyquist plots, pole/zero plots, root locus plots), the default labels are the system name. If label is set to False, individual lines are still given labels, but no legend is generated in the plot (this can also be accomplished by setting legend_map to False. Note: the label keyword argument is not implemented for describing function plots or phase plane plots, since these plots are primarily intended to be for a single system. Standard matplotlib commands can be used to customize these plots for displaying information for multiple systems. The legend_loc, legend_map and show_legend keyword arguments can be used to customize the locations for legends. By default, a minimal number of legends are used such that lines can be uniquely identified and no legend is generated if there is only one line in the plot. Setting show_legend to False will suppress the legend and setting it to True will force the legend to be displayed even if there is only a single line in each axes. In addition, if the value of the legend_loc keyword argument is set to a string or integer, it will set the position of the legend as described in the matplotlib.legend documentation. Finally, legend_map can be set to an` array that matches the shape of the subplots, with each item being a string indicating the location of the legend for that axes (or None for no legend). The rcParams keyword argument can be used to override the default matplotlib style parameters used when creating a plot. The default parameters for all control plots are given by the ct.rcParams dictionary and have the following values: Key Value ‘axes.labelsize’ ‘small’ ‘axes.titlesize’ ‘small’ ‘figure.titlesize’ ‘medium’ ‘legend.fontsize’ ‘x-small’ ‘xtick.labelsize’ ‘small’ ‘ytick.labelsize’ ‘small’ Only those values that should be changed from the default need to be specified in the rcParams keyword argument. To override the defaults for all control plots, update the ct.rcParams dictionary entries. The default values for style parameters for control plots can be restored using :func:~control.reset_rcParams. The title keyword can be used to override the automatic creation of the plot title. The default title is a string of the form " plot for " where is a list of the sys names contained in the plot (which can be updated if the plotting is called multiple times). Use title=False to suppress the title completely. The title can also be updated using the control.ControlPlot.set_plot_title method for the returned control plot object. The plot title is only generated if ax is None. The following code illustrates the use of some of these customization features:: P = ct.tf([0.02], [1, 0.1, 0.01]) # servomechanism C1 = ct.tf([1, 1], [1, 0]) # unstable L1 = P * C1 C2 = ct.tf([1, 0.05], [1, 0]) # stable L2 = P * C2 plt.rcParams.update(ct.rcParams) fig = plt.figure(figsize=[7, 4]) ax_mag = fig.add_subplot(2, 2, 1) ax_phase = fig.add_subplot(2, 2, 3) ax_nyquist = fig.add_subplot(1, 2, 2) ct.bode_plot( [L1, L2], ax=[ax_mag, ax_phase], label=["$L_1$ (unstable)", "$L_2$ (unstable)"], show_legend=False) ax_mag.set_title("Bode plot for $L_1$, $L_2$") ax_mag.tick_params(labelbottom=False) fig.align_labels() ct.nyquist_plot(L1, ax=ax_nyquist, label="$L_1$ (unstable)") ct.nyquist_plot( L2, ax=ax_nyquist, label="$L_2$ (stable)", max_curve_magnitude=22, legend_loc='upper right') ax_nyquist.set_title("Nyquist plot for $L_1$, $L_2$") fig.suptitle("Loop analysis for servomechanism control design") plt.tight_layout()

Open Graph Description: This PR makes a (fairly large) number of changes to control plotting functions to provide consistent functionality. The majority of changes involve making functionality that was present in some pl...

X Description: This PR makes a (fairly large) number of changes to control plotting functions to provide consistent functionality. The majority of changes involve making functionality that was present in some pl...

Opengraph URL: https://github.com/python-control/python-control/pull/1034

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:230ea963-2280-ca64-c0aa-0a90d08277e3
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idDE2C:3300CE:130370F:1B11EF6:697A38F8
html-safe-noncea01da4c2940d3a2997ab054150b12cbc8dda1bc54e283cfbf980438c2a5635c3
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJERTJDOjMzMDBDRToxMzAzNzBGOjFCMTFFRjY6Njk3QTM4RjgiLCJ2aXNpdG9yX2lkIjoiNjY0OTI3ODQ1NDU3MjkyMzEyOCIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmac14b38c9255d62ced4b9ceb0d22ee1bf655f4e1926517c779c5c9fdfa66aa4770
hovercard-subject-tagpull_request:1980043397
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/files
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/python-control/python-control/pull/1034/files
twitter:imagehttps://avatars.githubusercontent.com/u/293362?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/293362?s=400&v=4
og:image:altThis PR makes a (fairly large) number of changes to control plotting functions to provide consistent functionality. The majority of changes involve making functionality that was present in some pl...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
Noneaf6de804ceb83ad30bb9b348cdeaccaa30cdcb566762d5e74e21e2bad88885d0
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/python-control/python-control git https://github.com/python-control/python-control.git
octolytics-dimension-user_id2285872
octolytics-dimension-user_loginpython-control
octolytics-dimension-repository_id22791752
octolytics-dimension-repository_nwopython-control/python-control
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id22791752
octolytics-dimension-repository_network_root_nwopython-control/python-control
turbo-body-classeslogged-out env-production page-responsive full-width
disable-turbotrue
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release2d980605f0959039ddebcbcf522b072508302977
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/python-control/python-control/pull/1034/files#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fpython-control%2Fpython-control%2Fpull%2F1034%2Ffiles
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub SparkBuild and deploy intelligent appshttps://github.com/features/spark
GitHub ModelsManage and compare promptshttps://github.com/features/models
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
GitHub SponsorsFund open source developershttps://github.com/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/accelerator
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fpython-control%2Fpython-control%2Fpull%2F1034%2Ffiles
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fpull_requests%2Fshow%2Ffiles&source=header-repo&source_repo=python-control%2Fpython-control
Reloadhttps://github.com/python-control/python-control/pull/1034/files
Reloadhttps://github.com/python-control/python-control/pull/1034/files
Reloadhttps://github.com/python-control/python-control/pull/1034/files
python-control https://github.com/python-control
python-controlhttps://github.com/python-control/python-control
Notifications https://github.com/login?return_to=%2Fpython-control%2Fpython-control
Fork 447 https://github.com/login?return_to=%2Fpython-control%2Fpython-control
Star 2k https://github.com/login?return_to=%2Fpython-control%2Fpython-control
Code https://github.com/python-control/python-control
Issues 87 https://github.com/python-control/python-control/issues
Pull requests 8 https://github.com/python-control/python-control/pulls
Discussions https://github.com/python-control/python-control/discussions
Actions https://github.com/python-control/python-control/actions
Projects 0 https://github.com/python-control/python-control/projects
Wiki https://github.com/python-control/python-control/wiki
Security 0 https://github.com/python-control/python-control/security
Insights https://github.com/python-control/python-control/pulse
Code https://github.com/python-control/python-control
Issues https://github.com/python-control/python-control/issues
Pull requests https://github.com/python-control/python-control/pulls
Discussions https://github.com/python-control/python-control/discussions
Actions https://github.com/python-control/python-control/actions
Projects https://github.com/python-control/python-control/projects
Wiki https://github.com/python-control/python-control/wiki
Security https://github.com/python-control/python-control/security
Insights https://github.com/python-control/python-control/pulse
Sign up for GitHub https://github.com/signup?return_to=%2Fpython-control%2Fpython-control%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2Fpython-control%2Fpython-control%2Fissues%2Fnew%2Fchoose
murrayrmhttps://github.com/murrayrm
python-control:mainhttps://github.com/python-control/python-control/tree/main
murrayrm:ctrlplot_updates-27Jun2024https://github.com/murrayrm/python-control/tree/ctrlplot_updates-27Jun2024
Conversation 27 https://github.com/python-control/python-control/pull/1034
Commits 34 https://github.com/python-control/python-control/pull/1034/commits
Checks 0 https://github.com/python-control/python-control/pull/1034/checks
Files changed https://github.com/python-control/python-control/pull/1034/files
Please reload this pagehttps://github.com/python-control/python-control/pull/1034/files
Control plot refactoring for consistent functionality https://github.com/python-control/python-control/pull/1034/files#top
Show all changes 34 commits https://github.com/python-control/python-control/pull/1034/files
5f6833f speed up suptitle centering murrayrm Jun 28, 2024 https://github.com/python-control/python-control/pull/1034/commits/5f6833f7d095bf5838c6aba81385c82b08de2f73
ca61be3 implement ControlPlot class for plotting return type murrayrm Jun 27, 2024 https://github.com/python-control/python-control/pull/1034/commits/ca61be3d7910ff6fc3cd416f7e17b8b94ac8fc58
639ffb4 add storage of legend objects murrayrm Jun 29, 2024 https://github.com/python-control/python-control/pull/1034/commits/639ffb4406f44f24690070d5b5fe9204adee6321
acfadf0 fix bugs in legend generation for pole/zero plots murrayrm Jul 3, 2024 https://github.com/python-control/python-control/pull/1034/commits/acfadf0034887d853f56c1dfdc6a67018d0256e9
8b7d399 improve consistency in use of cplt as return type for plots murrayrm Jul 4, 2024 https://github.com/python-control/python-control/pull/1034/commits/8b7d3993b322e57b8c843aa06d9755bb8bb33a12
fb5c194 add unit tests for common plotting functionality murrayrm Jul 4, 2024 https://github.com/python-control/python-control/pull/1034/commits/fb5c194fb249dec2a66c5852878e08af75e951b5
97a5230 update phaseplot to use common ax, rcParams processing murrayrm Jul 6, 2024 https://github.com/python-control/python-control/pull/1034/commits/97a523031f4e12874c8fd84c89c4509c5c5f5bdb
da5be15 TRV: fix legend size in Nyquist plots murrayrm Jul 6, 2024 https://github.com/python-control/python-control/pull/1034/commits/da5be15ccd8c8ddeb0893927a2b4acc96b66cea8
f818034 Fix suptitle for root locus plots murrayrm Jul 6, 2024 https://github.com/python-control/python-control/pull/1034/commits/f8180343f20b82cd7d83184111967b041c4f49cc
0103fe7 update root_locus_plot to use common ax processing murrayrm Jul 6, 2024 https://github.com/python-control/python-control/pull/1034/commits/0103fe7eb84894230e8eebaf1f72fe8e343b2eed
4f3d618 implement pole_zero_subplots murrayrm Jul 6, 2024 https://github.com/python-control/python-control/pull/1034/commits/4f3d618f6f0d65442dc005bb199f951377976936
0dc4790 update unit test for ax_processing murrayrm Jul 14, 2024 https://github.com/python-control/python-control/pull/1034/commits/0dc4790a6d6aa86faf29c1c892e1606a866c527f
cec9e70 update label processing to provide common functionality + unit tests murrayrm Jul 15, 2024 https://github.com/python-control/python-control/pull/1034/commits/cec9e7053dfbc872c7a3890bcefed6e01194a6dc
89cda3d update title processing to be uniform across _plot functions murrayrm Jul 17, 2024 https://github.com/python-control/python-control/pull/1034/commits/89cda3d0c22d87f43d23a062e2586cc43aeee717
3a8fa7a update plot title handling and make uniform murrayrm Jul 18, 2024 https://github.com/python-control/python-control/pull/1034/commits/3a8fa7a23c1795cffe7a18715a493970b377721e
8abb618 turn off title update if ax is given murrayrm Jul 20, 2024 https://github.com/python-control/python-control/pull/1034/commits/8abb6189f0eeaaa7478f6f39bc80bec04ad3b8cd
fc09a85 deprecate relabel keyword in time_response_plot murrayrm Jul 20, 2024 https://github.com/python-control/python-control/pull/1034/commits/fc09a856488e65914f05809df8b2fad3773759fc
4fe5f53 implement uniform legend processing + unit test/doc updates murrayrm Jul 20, 2024 https://github.com/python-control/python-control/pull/1034/commits/4fe5f533a67ac6fece409a40d2ff5449a4b04ac0
2e4961c change suptitle_frame to title_frame murrayrm Jul 20, 2024 https://github.com/python-control/python-control/pull/1034/commits/2e4961cef029956021b7703f3213d5ed0eca4bdc
02f2724 update rcParams processing murrayrm Jul 21, 2024 https://github.com/python-control/python-control/pull/1034/commits/02f2724cf36f1eb1a290c64a5f507d495cdb2e00
4f4746d deprecate get_plot_axes (with legacy testing) murrayrm Jul 21, 2024 https://github.com/python-control/python-control/pull/1034/commits/4f4746dd89a92ff33dd6e37cb9af1185f7f7c91f
c3707d3 update plotting documentation murrayrm Jul 21, 2024 https://github.com/python-control/python-control/pull/1034/commits/c3707d3e7bd4191c01ce24168660262b10494fc0
4ec3612 add unit tests + docuementation for subplots murrayrm Jul 21, 2024 https://github.com/python-control/python-control/pull/1034/commits/4ec361284b64b329872e07890afe99b80309207c
e2f971b small updates to increase code coverage murrayrm Jul 21, 2024 https://github.com/python-control/python-control/pull/1034/commits/e2f971b2aec0d40df80612eac6f0c74893a0d7a5
d6df4be update unit tests and documentation for line properties murrayrm Jul 22, 2024 https://github.com/python-control/python-control/pull/1034/commits/d6df4be0006300bf361a7f563b69aaa2752daf56
351bafe unify color processesing murrayrm Jul 26, 2024 https://github.com/python-control/python-control/pull/1034/commits/351bafe298815f2d3741371d4db9ab2132dc39c3
36d1aef fix small typos murrayrm Jul 27, 2024 https://github.com/python-control/python-control/pull/1034/commits/36d1aef489e2ca8d48a46af63ca9e8be175c2ef1
6b78134 fix color error introduced in phaseplot/separatrices murrayrm Jul 27, 2024 https://github.com/python-control/python-control/pull/1034/commits/6b781345aac1892b92c75e4059354902e7d34763
d66064d fix inconsistency in title for Nyquist plots murrayrm Jul 27, 2024 https://github.com/python-control/python-control/pull/1034/commits/d66064d6ec09a68eab324557f987f8e012aac795
9739750 small documentation updates (+ ruff configuration) murrayrm Aug 4, 2024 https://github.com/python-control/python-control/pull/1034/commits/973975011291bb8e195ed0aafb281448a4d6aa0c
9c6ff85 add gangof4_plot back as non-legacy function murrayrm Aug 4, 2024 https://github.com/python-control/python-control/pull/1034/commits/9c6ff8560a873ee7d10bb4ae6015f676f0db3892
cd8fcfd address review comments from @slivingston murrayrm Aug 8, 2024 https://github.com/python-control/python-control/pull/1034/commits/cd8fcfdb294d1b72aab46f68104a6fa62050a116
9f143ec update freqplot unit test to avoid intermittent warnings murrayrm Aug 8, 2024 https://github.com/python-control/python-control/pull/1034/commits/9f143ec5f5eba22ad4a35141fc383d70a8c9efa1
1a04541 allow title to be None in _update_plot_title (fixes markov.py crash) murrayrm Aug 9, 2024 https://github.com/python-control/python-control/pull/1034/commits/1a04541004ed11b60123b61a8fdf69ae8f72300b
Clear filters https://github.com/python-control/python-control/pull/1034/files
Please reload this pagehttps://github.com/python-control/python-control/pull/1034/files
Please reload this pagehttps://github.com/python-control/python-control/pull/1034/files
config.py https://github.com/python-control/python-control/pull/1034/files#diff-d1ad1d32d49067e21beadf8da713ffdea3d1673aedb13dbbf54028cb7e8e4cb5
ctrlplot.py https://github.com/python-control/python-control/pull/1034/files#diff-634119b78de5d79475df039710a7b5e4a011957bc2b311821a51479b1d9bcb64
descfcn.py https://github.com/python-control/python-control/pull/1034/files#diff-f0f5ffb2c67d9936a4896284a27a0b10ccc28b354bfbc7cc187460f1254a073d
freqplot.py https://github.com/python-control/python-control/pull/1034/files#diff-a751fe1009e7b656d19357a39abb58dd88b89052c9d9259c3393a4648b697a16
grid.py https://github.com/python-control/python-control/pull/1034/files#diff-2a2bfe804c121e19d428ee5dcb9410d07ba02ef20f3080cc5175faf78076bbdd
nichols.py https://github.com/python-control/python-control/pull/1034/files#diff-b581de8c6f5f8f72c517e49ebb7ec697d93fc31e16b6e9f9d36a10ec2aecd510
phaseplot.py https://github.com/python-control/python-control/pull/1034/files#diff-8d327fabc85bcbf149275af55909717ddc918f5330f0b02956ce9791bf32312b
pzmap.py https://github.com/python-control/python-control/pull/1034/files#diff-fdd48a8f4e62116d8bb53ab21c499352f4dcb4b95f632e002126d869a10ba722
rlocus.py https://github.com/python-control/python-control/pull/1034/files#diff-6846933c325aaef66d5b0aa46a0ea077a03dcaf1edb4e513d795d8bc938ce2ee
sisotool.py https://github.com/python-control/python-control/pull/1034/files#diff-5b1b1a164f395f3f0ea7bad5761983be0d398ad5462147b1f69de6dd48a52e1d
ctrlplot_test.py https://github.com/python-control/python-control/pull/1034/files#diff-6baab066453bbefce9590e31752d0f906492105ac8120232db3689e206cc2d46
descfcn_test.py https://github.com/python-control/python-control/pull/1034/files#diff-1cc0c5c77b0e44382caa8c73288fdd176d209c54a54c5b5ef09cb07d68e52e88
freqplot_test.py https://github.com/python-control/python-control/pull/1034/files#diff-f434ce7b7e83c83019db6eb49a64aade84dd31a97e47392985e3d110fa6ca7dd
kwargs_test.py https://github.com/python-control/python-control/pull/1034/files#diff-3144c3ea9a838756fe63a094bb84c293d32c5190d9b081cbb2f10926fda2e19e
nyquist_test.py https://github.com/python-control/python-control/pull/1034/files#diff-5c8939e95d9dd8eda721007fc3a743101f019766069da57d01bdee22cdca0b1a
phaseplot_test.py https://github.com/python-control/python-control/pull/1034/files#diff-a2bdd2ed855b1b0f2a32ae01f58ca1f8a87b3331bc31e637889939fd3efd5eb6
pzmap_test.py https://github.com/python-control/python-control/pull/1034/files#diff-4f4187c4a377622a547d531dfcc044558eabeb876cbb61623768fa9581d3ea08
rlocus_test.py https://github.com/python-control/python-control/pull/1034/files#diff-14191ee376d7e0c4ef10224e6883edc949e6195f7700198a8599b57cf96fd414
timeplot_test.py https://github.com/python-control/python-control/pull/1034/files#diff-6a65c7ec317ec72929a098855d7d948c942c726aa0907890b0a02ea124869c0f
timeplot.py https://github.com/python-control/python-control/pull/1034/files#diff-6208d7a27459381a4957ba5445cd6e98154209ecde7cb2271bc40f7b7b99b931
timeresp.py https://github.com/python-control/python-control/pull/1034/files#diff-3200453f1cf62f183f04dbf39d1129d91245c53a9f74675cee6bd384351c45b4
Makefile https://github.com/python-control/python-control/pull/1034/files#diff-f48ddfd1eec38c4d39f84e195259371f8397cd30146f46b113bdcb4590ed262c
conf.py https://github.com/python-control/python-control/pull/1034/files#diff-e170e9a7d787c21095c6c11bb25f0f1ff0294a42a46d45ba6fb5ed794e457624
control.rst https://github.com/python-control/python-control/pull/1034/files#diff-5a8429a2bfd64a7041b2ba651f0f4a0318299c85c8dd095c1150fe7c788ddcb4
ctrlplot-pole_zero_subplots.png https://github.com/python-control/python-control/pull/1034/files#diff-e0332b404a75518068f3e21ff7c2aea25b2de3945a431d554895d0fb4339a5bd
ctrlplot-servomech.png https://github.com/python-control/python-control/pull/1034/files#diff-f9cbdcc1fc64b78234dad3b9da3bfb6fc9456577125fa07a15b575a8dbd42276
freqplot-mimo_bode-default.png https://github.com/python-control/python-control/pull/1034/files#diff-45ba3934e1cc904d9f6c170ddd420920dd27ea91e488651f7d352ecf248750b4
freqplot-nyquist-custom.png https://github.com/python-control/python-control/pull/1034/files#diff-bf028b63e7e9f57591b678052a214afaddd62ceffc84491e239c59631cc19225
freqplot-nyquist-default.png https://github.com/python-control/python-control/pull/1034/files#diff-aacf90912b659bb28f91aa4c4ee6b42e479860646c2e4f5c0c6392f5376a6155
freqplot-siso_bode-default.png https://github.com/python-control/python-control/pull/1034/files#diff-c0e1d07469df7aaa6409fcd715b1ef0c7c7b78b9a0f1ae8ac1ee25382e2cbf76
freqplot-siso_bode-omega.png https://github.com/python-control/python-control/pull/1034/files#diff-eac575cb544078d194ba2b1fed6239f86a700cb3d8d8055a47ed75254fdf8e6d
phaseplot-dampedosc-default.png https://github.com/python-control/python-control/pull/1034/files#diff-18830eebeb00355aa53c8851c7a179d445836cffcd6065f185d875ca0c8051b4
phaseplot-invpend-meshgrid.png https://github.com/python-control/python-control/pull/1034/files#diff-ebcd320eebd6656a64d4d3fa10c5742621e249400b71409afbc6363288c29a7e
phaseplot-oscillator-helpers.png https://github.com/python-control/python-control/pull/1034/files#diff-17e7e9fe35fef31ca816fe8b2ed6f9b58ca5f8b63955a071e106eb3f61c08821
phaseplots.py https://github.com/python-control/python-control/pull/1034/files#diff-4647797c1063625677270cc59c2a132a9d555dd0fe3fca2489e58adf5ce169a8
plotting.rst https://github.com/python-control/python-control/pull/1034/files#diff-7d87c42933f69063b454fa6021951255b0061c5f7c39c347e2d0887078dc9c2a
pzmap-siso_ctime-default.png https://github.com/python-control/python-control/pull/1034/files#diff-aea3021e1e3b67ed0824e29bec8bfd281285835b34d4806ad043e0a352bf7e4a
rlocus-siso_ctime-clicked.png https://github.com/python-control/python-control/pull/1034/files#diff-b50e10318186ff8248d3a9f18ab32b6e58525e6dfb500c619aaba739e701c394
rlocus-siso_ctime-default.png https://github.com/python-control/python-control/pull/1034/files#diff-daba86a5029d5a6ecdc8caf6e3079a32b4e62e6885dad9046fee5502ceebf15e
rlocus-siso_dtime-default.png https://github.com/python-control/python-control/pull/1034/files#diff-1281b1638fb226f4b08af700733ae9b91f82ddedc9fe0fcc708021d0d3da3d25
rlocus-siso_multiple-nogrid.png https://github.com/python-control/python-control/pull/1034/files#diff-11e59c76c20d7326b60216e313f58b70409f7af7526742832d0b1c69976a7b02
timeplot-mimo_ioresp-mt_tr.png https://github.com/python-control/python-control/pull/1034/files#diff-1f8beff0b944a38197e9b9f27cd78482bc93b30ee50d0c6f4380d09203bb2eb4
timeplot-mimo_ioresp-ov_lm.png https://github.com/python-control/python-control/pull/1034/files#diff-d917f31ce1f1872dbdea348c6fbc1cec784f2cd44528fe8b3c29c94bf84c735c
timeplot-mimo_step-default.png https://github.com/python-control/python-control/pull/1034/files#diff-310ede4638e52ba6a553d5295536f35b164ef67bdf4a13c0a030028552ffd8e1
timeplot-mimo_step-linestyle.png https://github.com/python-control/python-control/pull/1034/files#diff-904c091c557448272184c24df2414a59df21d90e44bc33bd5f99ce3ef8aca5de
timeplot-mimo_step-pi_cs.png https://github.com/python-control/python-control/pull/1034/files#diff-f4bbc2e02a764c474e888fb720d932130b9683457c4f9f2477a94a0324bf01fd
plot_gallery.py https://github.com/python-control/python-control/pull/1034/files#diff-ef5dc8c130330b8e4ed61b7deca92a5e974930a8e4fb1431cb00d541469b6823
pyproject.toml https://github.com/python-control/python-control/pull/1034/files#diff-50c86b7ed8ac2cf95bd48334961bf0530cdc77b5a56f852c5c61b89d735fd711
control/config.pyhttps://github.com/python-control/python-control/pull/1034/files#diff-d1ad1d32d49067e21beadf8da713ffdea3d1673aedb13dbbf54028cb7e8e4cb5
View file https://github.com/murrayrm/python-control/blob/1a04541004ed11b60123b61a8fdf69ae8f72300b/control/config.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/python-control/python-control/pull/1034/{{ revealButtonHref }}
https://github.com/python-control/python-control/pull/1034/files#diff-d1ad1d32d49067e21beadf8da713ffdea3d1673aedb13dbbf54028cb7e8e4cb5
https://github.com/python-control/python-control/pull/1034/files#diff-d1ad1d32d49067e21beadf8da713ffdea3d1673aedb13dbbf54028cb7e8e4cb5
https://github.com/python-control/python-control/pull/1034/files#diff-d1ad1d32d49067e21beadf8da713ffdea3d1673aedb13dbbf54028cb7e8e4cb5
https://github.com/python-control/python-control/pull/1034/files#diff-d1ad1d32d49067e21beadf8da713ffdea3d1673aedb13dbbf54028cb7e8e4cb5
Please reload this pagehttps://github.com/python-control/python-control/pull/1034/files
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.