【问题标题】:fill space between graphs in Matplotlib [duplicate]在 Matplotlib 中填充图形之间的空间 [重复]
【发布时间】:2020-03-28 07:51:39
【问题描述】:

我需要填充 y、y1 和 y2 之间的区域,但我正在填充 y 图形下方的额外空间。我该如何解决这个问题?

import numpy as np
import matplotlib.pyplot as plt

y = lambda z: (2 * z - z ** 2) ** (1 / 2)
y1 = lambda x: (6 * x - x ** 2) ** (1 / 2)
y2 = lambda c: c
x = np.linspace(0, 12, 500)
z = np.linspace(0, 12, 500)
c = np.linspace(0, 12, 500)
plt.ylim(0, 4)
plt.xlim(0, 4)

plt.plot(z, y(z), color='blue', label="$y=\\sqrt{2x-x^2}$")
plt.plot(c, y2(c), color='black', label='$y=x$')
plt.plot(x, y1(x), color='red', label='$y=\\sqrt{6x-x^2}$')
plt.plot([0, 4], [0, 0], color='yellow', label='y=0')
plt.grid(True, zorder=5)

plt.fill_between(x, np.minimum(y2(c), y1(x)), y1(x), alpha=0.5)
plt.legend()
plt.show()

【问题讨论】:

  • 检查这个plt.fill_between(x, np.minimum(y2(c), y(x)), y(x), alpha=0.5),我不确定你需要哪个
  • 这正是我不需要的部分
  • 你可以为你需要填充的部分添加快照吗?
  • i.stack.imgur.com/5ZISR.png我圈出来的区域

标签: python numpy matplotlib math plot


【解决方案1】:

我不使用numpy,所以我想可以通过其他方式获得综合列表。

    x_before = np.array([a for a in x if y(a) > y2(a)])
    x_after = np.array([a for a in x if a >= max(x_before) and y1(a) >= y2(a)])
    plt.fill_between(x_before, y(x_before), y1(x_before), color="lightblue")
    plt.fill_between(x_after, y2(x_after), y1(x_after), color="lightblue")

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-31
  • 2014-06-08
  • 2015-12-29
  • 1970-01-01
  • 2017-11-28
相关资源
最近更新 更多