Python中绘图无法显示问题求助(基于Black-Scholes PDE有限差分法代码)
Hey there, let's work through why your Black-Scholes PDE finite difference code isn't displaying plots in Canopy. Looking at your code snippet, I spot a couple of common pitfalls that could be causing this—here's how to fix them step by step:
1. Fix the Matplotlib Import Syntax
First off, your import line for matplotlib is incorrect. You wrote:
import matplotlib as plt
But Matplotlib's plotting functionality lives in the pyplot submodule, not the base matplotlib package. The correct import should be:
import matplotlib.pyplot as plt
Without this, any calls to plt.plot() or similar functions won't be recognized, which would prevent plots from rendering entirely.
2. Configure Matplotlib Backend for Canopy
Canopy sometimes uses a non-interactive backend by default, which means plots won't pop up in a window even if your code is correct. To force an interactive backend, add these lines right before importing pyplot:
import matplotlib # Try TkAgg first—works across most systems; if that fails, try 'Qt5Agg' matplotlib.use('TkAgg') import matplotlib.pyplot as plt
Different operating systems might support different backends, so if TkAgg doesn't work, swap it with Qt5Agg or GTK3Agg (check Canopy's built-in docs for your system's supported options).
3. Don't Forget to Explicitly Show Plots
Even if your imports and backend are set up correctly, Matplotlib won't display plots unless you tell it to. Make sure at the end of your plotting code you add:
plt.show()
This command triggers the rendering of your plot in a new window.
4. Check Canopy's Interactive Console Settings
If you're running the code in Canopy's IPython console, double-check the console's graphics settings:
- Open Canopy's preferences (File > Preferences)
- Navigate to the "IPython Console" > "Graphics" tab
- Set the backend to an interactive option like "Qt" or "Tk"
- Restart the console and re-run your code
Corrected Code Snippet Example
Here's how your code should start with these fixes applied:
import math import numpy as np import pandas as pd from scipy import stats # Fix matplotlib backend and import import matplotlib matplotlib.use('TkAgg') import matplotlib.pyplot as plt # Original parameters T = 1 # Time to Expiry in Years E = 100 # Strike r = .05 # Risk Free Rate SIGMA = .20 # Volatility Type = True # Type of Option (True=Call, False=Put) NAS = 40 # Number of Asset Steps - Higher is more accurate
Give these changes a try—restart Canopy first to ensure all settings take effect, then re-run your code. This should resolve the plot display issue for you.
内容的提问来源于stack exchange,提问作者undergrad

