2013-05-07 11 views
20

matplotlib.pyplotの3行の間に入力したいと思いますが、残念ながらfill_betweenは2行しか入力できません。どのようにこれに対処するための任意のアイデア?Matplotlibで複数の行を塗りつぶす

編集:

[OK]を、私はそのようにので、多分私の現在の評判と一緒に写真を追加することができないので、私は本当に何を意味するか説明していませんでした:

私はこれらの線で囲まれたポリゴンを埋めるためにしてみてくださいfill_betweenは2つの間の領域だけを埋める機会を与えてくれるので、どのように考えているのでしょうか。塗りつぶし方程式の下:

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

0より大きいxとyは明らかです。私は(0,0)からプロットを始めるが、私はまだ2つのYは、あなたが「間を埋める」したいという設定よりも、最初のX値を指定し、fill_betweenを使用するには3行...

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

あなたが質問を詳しく説明し、いくつかのモックデータおよび/またはあなたがこの回答をオフに基づいていること –

答えて

27

プロットをポイント(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() 

enter image description here

+0

それは私が探しているものです。どうもありがとう! – Magnar

17

を持っています。代わりに、あなただけY2とY3の間を埋めるしたい、場合

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() 

enter image description here

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

これはあなた

enter image description here

を与える例は以下のショーです
+0

注意を得るために何をしたいの例を提供することができます投稿された元の質問、編集の前に_。 – Hooked

4

ただ、ポリゴン、すなわちのコーナーポイントを計算する:前部が、これは、この特定の状況では、トリックを行う必要があります第1象限にない多角形の面積を考慮する必要はありません。 、線が交差する点。 次に、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() 

結果の画像: Figure 1

関連する問題