繁体   English   中英

Matplotlib填充多行之间

[英]Matplotlib fill between multiple lines

我想在matplotlib.pyplot中的3行之间填充,但是不幸的是, fill_between给了我仅在两行之间填充的机会。 有什么想法如何处理吗?

编辑:

好的,我没有解释我的真正意思,因为我无法添加具有当前声誉的图片,因此可能是这样的:

我尝试填充由这些线界定的多边形,但我不知道如何填充,因为fill_between给了我机会仅填充其中两条线之间的区域。 在填充方程下面:

y <= 4- 2x
y <= 3 - 1/2x
y <= 1 - x
y >= 0
x >= 0

x和y大于0是显而易见的。 我从(0,0)开始绘图,但我仍然有3条线...

y <= 4- 2x
y <= 3 - 1/2x
y <= 1 - x

如果在点(0,0)处开始绘制,因此不需要考虑不在第一象限中的多边形的面积,那么在这种特殊情况下,这应该可以解决问题:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0,10,0.1)

# The lines to plot
y1 = 4 - 2*x
y2 = 3 - 0.5*x
y3 = 1 -x

# The upper edge of polygon (min of lines y1 & y2)
y4 = np.minimum(y1, y2)

# Set y-limit, making neg y-values not show in plot
plt.ylim(0, 5)

# Plotting of lines
plt.plot(x, y1,
         x, y2,
         x, y3)

# Filling between line y3 and line y4
plt.fill_between(x, y3, y4, color='grey', alpha='0.5')
plt.show()

在此处输入图片说明

要使用fill_between ,首先要指定X值,而不是要在其间“填充”的两个Y值。 下面是一个示例:

import pylab as plt
import numpy as np

X  = np.linspace(0,3,200)
Y1 = X**2 + 3
Y2 = np.exp(X) + 2
Y3 = np.cos(X)

plt.plot(X,Y1,lw=4)
plt.plot(X,Y2,lw=4)
plt.plot(X,Y3,lw=4)

plt.fill_between(X, Y1,Y2,color='k',alpha=.5)
plt.fill_between(X, Y1,Y3,color='y',alpha=.5)

plt.show()

在此处输入图片说明

相反,如果您只想在Y2和Y3之间填充:

plt.fill_between(X, Y2,Y3,color='m',alpha=.5)

这会给你

在此处输入图片说明

只需计算多边形的拐角点,即直线相交的点。 然后使用pyplot.fill绘制多边形。

例:

import matplotlib.pyplot as plt

# define corner points
x = [1,2,1,0]
y = [2,1,0,1]

# plot
plt.fill(x,y)
plt.show()

结果图像: 图1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM