Closed DongdongGui closed 1 year ago
Next time, provide code with triple backticks: ``` code ```
Can't reproduce with following code (only added plt.show()
inside the with context):
import numpy as np
import matplotlib.pyplot as plt
import scienceplots
def model(x, p):
return x ** (2 * p + 1) / (1 + x ** (2 * p))
pparam = dict(xlabel='Voltage (mV)', ylabel=r'Current ($\mu$A)')
x = np.linspace(0.75, 1.25, 201)
with plt.style.context(['science']):
fig, ax = plt.subplots()
for p in [10, 15, 20, 30, 50, 100]:
ax.plot(x, model(x, p), label=p)
ax.legend(title='Order')
ax.autoscale(tight=True)
ax.set(**pparam)
plt.show()
Check indentation and/or copy from the examples file in the repo.
import numpy as np
import matplotlib.pyplot as plt
import scienceplots
def model(x, p):
return x ** (2 * p + 1) / (1 + x ** (2 * p))
pparam = dict(xlabel='Voltage (mV)', ylabel=r'Current ($\mu$A)')
x = np.linspace(0.75, 1.25, 201)
with plt.style.context(['science']):
fig, ax = plt.subplots()
for p in [10, 15, 20, 30, 50, 100]:
ax.plot(x, model(x, p), label=p)
ax.legend(title='Order')
ax.autoscale(tight=True)
ax.set(**pparam)
plt.show()
I run the above code and still report TypeError: unsupported operand type(s) for *: 'NoneType' and 'int'.
Test1. zip is the running file
I'm pretty sure it has nothing to do with SciencePlots.
Edit: try with []
styles instead of ['science']
to isolate the issue and check if that's the case.
I don't have your same setup, and it will take me some time till I can try it. I've only tested locally with basic Python and on Google Colab.
Have you tried updating Anaconda and IPython? It looks like a problem between Matplotlib and the output formatter.
Thanks for sharing the resources.
Thank you for your reply! I tried using the '[ ]' style and '["science","notebook"]' style, both of which worked properly, but other styles still report the TypeError.
I'm glad to hear that!
Environment
Describe the issue here
Using Matplotlib: 3.7.1 with TypeError: unsupported operand type(s) for *: 'NoneType' and 'int'. However, Matplotlib: 3.2.2 can be used.
How can we reproduce it? What have you tried?
import numpy as np import matplotlib.pyplot as plt import scienceplots
def model(x, p): return x * (2 p + 1) / (1 + x * (2 p))
pparam = dict(xlabel='Voltage (mV)', ylabel=r'Current ($\mu$A)')
x = np.linspace(0.75, 1.25, 201)
with plt.style.context(['science']): fig, ax = plt.subplots() for p in [10, 15, 20, 30, 50, 100]: ax.plot(x, model(x, p), label=p) ax.legend(title='Order') ax.autoscale(tight=True) ax.set(**pparam)
Extra info
No response