GithubHelp home page GithubHelp logo

Comments (10)

slivingston avatar slivingston commented on July 19, 2024

Regarding making plots interactive, you could use events from Matplotlib to respond to clicks, e.g., using matplotlib.backend_bases.MouseEvent.

from python-control.

roryyorke avatar roryyorke commented on July 19, 2024

My 2c: don't forget about Nichols. It might be worth separating the frequency response and root-locus into separate issues.

For the frequency plots, one could also consider showing low and high frequency asymptotes.

One idea I had for this to have the number of sample points be a multiple of the number of poles and zeros, though that is a bit simplistic. Another idea is to relate the density of the sample points to the curvature of the graph (though I don't know how to turn that into an algorithm...)

from python-control.

repagh avatar repagh commented on July 19, 2024

one thing we also need are damping-omega grids for root-locus.

for root-locus, having the break-in and break-out points in the gain vector already helps,

from python-control.

Sup3rGeo avatar Sup3rGeo commented on July 19, 2024

Concerning the damping-omega grids as @repagh said, I have written a simple function that draws the grid for Z-domain (zgrid):

https://gist.github.com/Sup3rGeo/17d0eb2b0f4d60c1ebd24695ac692b5d

Is there any possibility for this to be added to the python-control functions? I have never contributed to open source projects before, but if you tell me if what to do I can perhaps create a pull request for this.

from python-control.

Sup3rGeo avatar Sup3rGeo commented on July 19, 2024

Created a PR for this (#193)

from python-control.

don4get avatar don4get commented on July 19, 2024

Can we have more of what might be improved from what is already present in the library?

Thanks to all the improvements you done since the creation of this issue, I can't say if it's closed or not.

from python-control.

rxa254 avatar rxa254 commented on July 19, 2024

For the Nyquist plot, I would like to see:

  1. Smoother lines. This can be done by sampling the system better in regions where |d(Mag)/df| is large.
  2. Better scaling (not sure how to do this). With systems that have a lot of DC gain or if there is a deep bandstop filter, its difficult to see the detail just due to the dynamic range.
  3. It would be good to have arrows denoting the direction of increasing frequency, as matlab has.
  4. This is an example where the frequency is encoded as color changes in the curve (https://lpsa.swarthmore.edu/Nyquist/NyquistExamples.html).

This paper (https://doi.org/10.1109/ECC.2014.6862243) shows a way to plot the Nyquist logarithmically.

from python-control.

murrayrm avatar murrayrm commented on July 19, 2024

Great set of suggestions @rxa254. If anyone wants to sign up for these changes, that would be great. Maybe some summer coding practice for @cwrowley?

from python-control.

murrayrm avatar murrayrm commented on July 19, 2024

PRs #522 and #534 address some (but not all) of the suggestions here. In particular, #522 adds more points for frequency response plots and #534 has directional arrows and other features.

from python-control.

murrayrm avatar murrayrm commented on July 19, 2024

There is some nice looking code for JuliaControl that we might take a look at for improving frequency response plots.

from python-control.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.