我试图在此示例代码产生的两条曲线的交点之前阴影区域:
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0,100,10)
y1 = [0,2,4,6,8,5,4,3,2,1]
y2 = [0,1,3,5,6,8,9,12,13,14]
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(t_list,y1,linestyle='-')
ax.plot(t_list,y2,linestyle='--')
plt.show()
Run Code Online (Sandbox Code Playgroud)
只需使用:
ax.fill_between(x,y1,y2,where=y1>=y2,color='grey',alpha='0.5')
Run Code Online (Sandbox Code Playgroud)
不起作用,并显示以下错误:“ ValueError:参数维不兼容”
我试图将列表转换为数组:
z1 = np.array(y1)
z2 = np.array(y2)
Run Code Online (Sandbox Code Playgroud)
然后:
ax.fill_between(x,y1,y2,where=z1>=z2,color='grey',alpha='0.5')
Run Code Online (Sandbox Code Playgroud)
并非整个区域都是阴影。
我知道我必须通过插值法找到两条曲线之间的交点,但是还没有看到一种简单的方法。
您是完全正确的,需要进行插值。这很荒谬,因为您需要interpolate=True在的调用中添加关键字参数fill_between。
ax.fill_between(x,y1,y2,where=z1>=z2,color='grey', interpolate=True)
Run Code Online (Sandbox Code Playgroud)
要复制的完整代码:
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0,100,10)
y1 = [0,2,4,6,8,5,4,3,2,1]
y2 = [0,1,3,5,6,8,9,12,13,14]
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x,y1,linestyle='-')
ax.plot(x,y2,linestyle='--')
z1 = np.array(y1)
z2 = np.array(y2)
ax.fill_between(x,y1,y2,where=z1>=z2,color='grey',alpha='0.5', interpolate=True)
plt.show()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2456 次 |
| 最近记录: |