我想用红色突出显示 VIX 图上指数超过 30 点的部分。
以下示例代码如下:
import yfinance as yf
import matplotlib.pyplot as plt
# Fetch VIX data
vix_data = yf.download('^VIX', start='2020-01-01', end='2024-12-31')
# Extract the dates and VIX closing values
dates = vix_data.index
vix_close = vix_data['Close']
# Plot the VIX data
plt.figure(figsize=(12, 6))
plt.plot(dates, vix_close, label='VIX Close', color='blue', linewidth=1.5)
# Highlight regions where VIX is above 30
# TODO
# plt.fill_between(dates, vix_close, 30, where=(vix_close > 30), color='red', alpha=0.5, label='Above 30')
# Add threshold lines
plt.axhline(y=30, color='red', linestyle='--', label='Threshold (30 pts)')
plt.axhline(y=20, color='orange', linestyle='--', label='Threshold (20 pts)')
# Add labels and title
plt.title('VIX Index with Highlights Above 30', fontsize=16)
plt.xlabel('Date', fontsize=12)
plt.ylabel('VIX Level', fontsize=12)
plt.legend(fontsize=10)
plt.grid(True)
# Show the plot
plt.show()
我的代码无法超越 fill_ Between 函数,所以我用 TODO 标记它。
我是 matplotlib 的新手。你能建议我如何修复这个 python 代码吗?
我使用的工具列表如下:
matplotlib 3.10.0rc1
yfinance 0.2.50
# Highlight regions where VIX is above 30
plt.fill_between(dates, vix_close, 30, where=(vix_close > 30), color='red', alpha=0.2, label='Above 30')
希望这有帮助。