4

プロットに長方形を追加するには、通常、次のコードを使用します。

ret=Rectangle((x_l[i]-dx,y_l[i]-dx),width=dx,height=dx,facecolor='red',linestyle='solid')
ax=gca()
ax.add_patch(ret)

しかし、私は別の方法で色を与えることができるかどうか疑問に思いました。長方形をカラーバーに従って色付けしたい。もっとよく説明しようと思います。すべての長方形はセルを表し、すべてのセルでスカラー場を定義します。私のスカラー場の範囲はからmin_valですmax_val。描画したすべての長方形を、長方形のスカラー場の値に対応する色にします。

4

2 に答える 2

8

ColorMapで計算された色ですべての長方形を描くことができます。

import matplotlib.colorbar as cbar
import pylab as pl
import numpy as np

N = 50
xs = np.random.randint(0, 100, N)
ys = np.random.randint(0, 100, N)
ws = np.random.randint(10, 20, N)
hs = np.random.randint(10, 20, N)
vs = np.random.randn(N)
normal = pl.Normalize(vs.min(), vs.max())
colors = pl.cm.jet(normal(vs))

ax = pl.subplot(111)
for x,y,w,h,c in zip(xs,ys,ws,hs,colors):
    rect = pl.Rectangle((x,y),w,h,color=c)
    ax.add_patch(rect)

cax, _ = cbar.make_axes(ax) 
cb2 = cbar.ColorbarBase(cax, cmap=pl.cm.jet,norm=normal) 

ax.set_xlim(0,120)
ax.set_ylim(0,120)
pl.show()

ここに画像の説明を入力してください

于 2012-05-10T13:10:40.770 に答える
3

pylabに依存しないソリューションを提供するためにHYRYの答えを適応させる:

import matplotlib.pyplot as plt
import matplotlib.patches as patches
import numpy as np
import matplotlib.colorbar as cbar

fig,ax=plt.subplots(1)

rng=6
plt.ylim(0,rng)
plt.xlim(0,rng)

N = 30
x = np.random.rand(N)*rng
y = np.random.rand(N)*rng
colors=np.random.rand(N)
normal = plt.Normalize(0,1) # my numbers from 0-1

cmap=plt.cm.RdYlBu_r
c=cmap(colors)

for i in range(N):
    val=0.5
    rect=patches.Rectangle((x[i],y[i]),0.3,0.3,
                            edgecolor='black',
                            linewidth = 1,
                            facecolor = c[i],
                            ) 
    ax.add_patch(rect)

cax, _ = cbar.make_axes(ax) 
cb2 = cbar.ColorbarBase(cax, cmap=cmap,norm=normal) 

plt.savefig("test.png")

これにより、次の図が得られます。

ここに画像の説明を入力してください

于 2019-01-31T11:42:45.593 に答える