PySpice-org / PySpice

Simulate electronic circuit using Python and the Ngspice / Xyce simulators
https://pyspice.fabrice-salvaire.fr
GNU General Public License v3.0
661 stars 174 forks source link

Bode diagram plot issue #357

Open mbriday opened 1 year ago

mbriday commented 1 year ago

Hi, Thanks for this great python module!!

Environment (OS, Python version, PySpice version, simulator)

Linux Debian 12.1 with Python 3.11.2, pyspice v1.5, installed from pip3 (using a venv)

Actual Behaviour

There is an issue with matplotlib (installed using pip3) , the example filter/low-pass-rc-filter.py does not work. It complains about 'basex' and stops the script:

Traceback (most recent call last):
  File "spice/examples/filter/low-pass-rc-filter.py", line 44, in <module>
    bode_diagram(axes=axes,
[...]
TypeError: LogScale.__init__() got an unexpected keyword argument 'basex'

Steps to reproduce the behaviour

just run the filter/low-pass-rc-filter.py example, using Python 3.11.2 and pip3 (matplotlib, pyspice).

workaround

from semilog matplotlib doc, replacing basex with base in lines 36 and 46 of file PySpice/Plot/BodeDiagram.py fix the problem.

regards, Mik

cdivry commented 1 year ago

hello, same problem encountered here.

you should have a look on PR #358 proposal (need maintainer review)

lionelsaintecluque commented 1 year ago

I faced the bug and I applied the patch proposed above (PR#358).

It resolves the issue and does not causes unwanted behaviour.

stan3c commented 8 months ago

This keywords "basex", basey" were replaced in the most recent matplotlib releases. So you either need to downgrade the matplotlib or fix PySpice. So really PySpice needs a fix to support latest matplotlib. see: https://stackoverflow.com/questions/71213873/receiving-typeerror-init-got-an-unexpected-keyword-argument-basey-in

shahnewazRvis commented 6 months ago

for matplotlib version 3.5.1 changing function call axe.semilogx(frequency, phase, base=10, **kwargs) works.

Matplotlib (version 3.5.1) throws error with basex keyword which has been used in BodeDiagram.py