matplotlib在横坐标某范围画出阴影

本文介绍了如何使用Matplotlib库中的fill_between函数在时间轴上填充特定区间,以增强VIX指数的可视化效果,并展示了如何仅根据时间间隔操作,而不局限于日期范围。通过实例演示了代码实现和参数调整技巧。

参考效果如下图:

上图实现代码如下:

import pandas as pd
import matplotlib.transforms as mtransforms
import matplotlib.pyplot as plt

url  = 'https://fred.stlouisfed.org/graph/fredgraph.csv?id=VIXCLS'

vix = pd.read_csv(url, index_col=0, parse_dates=True, na_values='.',
                  infer_datetime_format=True,
                 squeeze=True).dropna()


cmap = plt.get_cmap('RdYlGn_r')
ma.plot(color='black', linewidth=1.5, marker='', figsize=(8, 4),
       label='VIX 90d MA')
ax = plt.gca()
ax.set_xlabel('')
ax.set_ylabel('90d moving average: CBOE VIX')
ax.set_title('Volatility Regime State')
ax.grid(False)
ax.set_xlim(xmin=ma.index[0], xmax=ma.index[-1])
trans = mtransforms.blended_transform_factory(ax.transData, ax.transAxes)
for i, color in enumerate(cmap([0.2, 0.4, 0.6, 0.8])):
    ax.fill_between(ma.index, 0, 1, where=state==i,
      
好的,我可以为您提供一些修改后的代码,以绘制一个简单的物理规律曲线,设置阴影和修改坐标轴函数。以下是一个例子,绘制阻力与速度的关系曲线: ```python import matplotlib.pyplot as plt import numpy as np # 定义物理规律函数 def resistance(v): # 定义常量 rho = 1.225 #空气密度 Cd = 0.5 #阻力系数 A = 0.03 #物体横截面积 m = 0.1 #物体质量 g = 9.8 #重力加速度 # 计算阻力 Fd = 0.5 * rho * Cd * A * v**2 # 计算物体受到的合力 F = m * g - Fd # 计算物体的加速度 a = F / m # 计算物体的速度 v = v + a * dt return v # 定义时间间隔,单位:秒 dt = 0.01 # 定义初始速度和时间 v0 = 0 # 单位:m/s t0 = 0 # 单位:s # 定义空列表,用于存储速度和时间的数据 v_list = [] t_list = [] # 迭代计算速度和时间的数据并存储到列表中 while True: t_list.append(t0) v_list.append(v0) v0 = resistance(v0) t0 += dt if t0 > 10: break # 绘制速度和时间的关系图,并设置阴影和坐标轴函数 fig, ax = plt.subplots() ax.plot(t_list, v_list, color='blue') # 设置阴影 ax.fill_between(t_list, v_list, where=(v_list > 0), color='blue', alpha=0.1) # 修改坐标轴函数 def y_fmt(x, y): return '{:.2f} m/s'.format(y) ax.yaxis.set_major_formatter(plt.FuncFormatter(y_fmt)) plt.xlabel('Time (s)') plt.ylabel('Velocity') plt.title('Resistance vs. Velocity') plt.show() ``` 这个例子中我们定义了一个名为 `resistance` 的函数,该函数计算了物体的阻力、物体受到的合力、物体的加速度和物体的速度。然后我们使用 `while` 循环迭代计算速度和时间的数据并存储到列表中。最后,我们使用 `fill_between` 函数设置阴影,并使用 `yaxis.set_major_formatter` 函数修改坐标轴函数。 这段代码会生成一个阻力与速度的关系曲线,横轴是时间,单位为秒,纵轴是速度,单位为米每秒。我们可以看到,在速度增加的过程中,物体所受到的阻力也逐渐增加,直到达到一个稳定的状态。这个图表可以帮助我们更好地理解阻力与速度之间的物理规律。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值