python - 填充多条曲线和直线之间的区域
问题描述
我有 3 条曲线,我想填充它们之间的区域。我该怎么做?
这是我到目前为止所拥有的:
import numpy as np
import matplotlib.pyplot as plt
y = lambda z: -(z ** 2)
y1 = lambda x: x ** (1 / 3)
x = np.linspace(0, 2, 100)
z = np.linspace(0, 2, 100)
plt.plot(z, y(z), color='blue', label="y=-(x^2)")
plt.ylim(-2, 2)
plt.xlim(0, 2)
plt.plot(x, y1(x), color='red', label='y=x^(1/3)')
plt.plot([1, 1, 1], [0, -2, 2], color='black', label='x=1')
plt.grid(True, zorder=5)
plt.legend()
k = np.arange(0,2)
f = [0,-0.2]
p = [0,0.2]
plt.fill_between(k,f,p,interpolate=True)
plt.show()
解决方案
你可以用where
infill_between
来照顾x = 1
线。见下文:
import numpy as np
import matplotlib.pyplot as plt
y = lambda z: -(z ** 2)
y1 = lambda x: x ** (1 / 3)
x = np.linspace(0, 2, 100)
z = np.linspace(0, 2, 100)
plt.ylim(-2, 2)
plt.xlim(0, 2)
#plt.grid(True, zorder=5)
plt.plot(z, y(z), color='blue', label="y=-(x^2)")
plt.plot(x, y1(x), color='red', label='y=x^(1/3)')
plt.plot([1, 1, 1], [0, -2, 2], color='black', label='x=1')
plt.fill_between(x, y(z), y1(x), where=x<=1)
plt.legend()
plt.show()
推荐阅读
- scheme - 卫生宏扩展器必须了解哪些Scheme特殊形式?
- azure - 获取 ServiceProjectReference 任务意外失败
- reactjs - 是否有在 React (Next.js) 中构建和维护嵌套菜单的通用方法?
- python - 使用 SAT 求解器的 N 皇后问题(pycosat)
- c# - 与 C# 桌面应用程序行为不一致的 Unity 数字转换
- python - python中的solovay strassen算法
- android - 已解决:我不能在使用 java 的 android 编程中使用逗号
- django - 无法在 Django 表单中访问 Div 中的字段
- python - 如何将我的字符串保存在多行中?
- javascript - 渲染中的 setState 时出现“渲染不同组件时无法更新组件”错误