2017-02-06 47 views
1

mathplotlibを使ってPythonで三角形を描画する必要があります。 、

私の目的は、一度三角形を描画され、その上にいくつかの点をプロットする:
Thisは、それが最終的にのようになります方法です。グラデーションを塗りつぶしたMathplotlib描画三角形

瞬間に私はちょうど良い三角形を描くことができます。

import matplotlib.pyplot as plt 
from matplotlib.patches import Polygon 
fig = plt.figure() 
ax = fig.add_subplot(111, aspect='equal') 
ax.add_patch(Polygon([[0,0],[0,1],[1,0]], closed=True,fill=True)) 
ax.set_xlim((0,1)) 
ax.set_ylim((0,1)) 
plt.show() 
をしかし、私は唯一の固体の色でそれを埋めることができます。画像に示すようなグラデーションを追加するにはどうすればよいですか?

誰かが私を助けることができますか?

+1

が、これは宿題のタスクですか?まだ何か試しましたか?他の例と解決策がどれくらいあなたを助けないのでしょうか?問題は三角形やポイント、または塗りつぶしに関連していますか?より具体的にして、あなたが手助けする場所を知っているように、すでに持っているコードを追加してください。 – ImportanceOfBeingErnest

+0

あなたの編集内容は、私が探しているものを完全に反映しています。おかげで –

答えて

0

画像にクリップパスを使用する方法を示すexample on the matplotlib pageがあります。
お使いの場合にこれを適応すると、この与える:

import matplotlib.pyplot as plt 
import numpy as np 
from matplotlib.path import Path 
from matplotlib.patches import PathPatch 


fig = plt.figure() 
ax = fig.add_subplot(111, aspect='equal') 
path = Path([[0,0],[0,1],[1,0],[0,0]]) 
patch = PathPatch(path, facecolor='none') 
ax.add_patch(patch) 
Z, Z2 = np.meshgrid(np.linspace(0,1), np.linspace(0,1)) 
im = plt.imshow(Z-Z2, interpolation='bilinear', cmap=plt.cm.RdYlGn, 
       origin='lower', extent=[0, 1, 0, 1], 
       clip_path=patch, clip_on=True) 
im.set_clip_path(patch) 
ax.set_xlim((0,1)) 
ax.set_ylim((0,1)) 
plt.show() 

enter image description here

+0

素晴らしい!どうもありがとうございます!私がうまく理解すれば、私は今すぐ正しいカラーマップを作成しなければなりません。 –

+0

[ここ](http://matplotlib.org/examples/color/colormaps_reference.html)にリストされているカラーマップが1つもない場合は、新しいカラーマップを作成することができます。単色が3色または4色であれば、これは簡単です。 [このような](http://stackoverflow.com/a/41988634/4124317)。 – ImportanceOfBeingErnest

+0

いつものように、これがあなたの質問に答えるなら、[回答を受け入れる](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)を考えてみてください。そうでない場合は、誰かがより良い答えを出すための要件を絞り込んでください。 – ImportanceOfBeingErnest

関連する問題