1

標準の matshow の例を使用します。

from matplotlib.pylab import *
dim = (12,12)
aa = zeros(dim)
for i in range(min(dim)):
    aa[i,i] = i
matshow(aa)
show()

例
(ソース: matplotlib.org )

各行の高さを制御するにはどうすればよいですか?

私の場合、行インデックス (つまり国) は大きさを示すために非線形間隔 (GDP など) で表すことができ、スケーリング ベクトルから行の高さを変更することでそれを表現したいと思います。(つまり、12 行ある場合、均一な分布では、各行は [0.083, 0.083, ...., 0.083] で表される 1/12 の行の高さを持ち、合計が1)

4

1 に答える 1

5

pcolormesh (または pcolor) を使用して、ポリゴンで構成される配列を作成できます。これらは任意の形状にすることができます。matshow や imshow のような通常の配列プロットは、軸に沿って常に一定のサイズになると思います。

n = 6

# generate some data
gdp = np.array(np.random.randint(10,500,n))
countries = np.array(['Country%i' % (i+1) for i in range(n)])
matr = np.random.randint(0,10,(n,n))

# get the x and y arrays
y = np.insert(gdp.cumsum(),0,0)
xx,yy = np.meshgrid(np.arange(n+1),y)

# plot the matrix
fig, axs = plt.subplots(figsize=(6,6))

axs.pcolormesh(xx,yy,matr.T, cmap=plt.cm.Reds, edgecolors='k')

axs.set_ylim(y.min(),y.max())

# set the yticks + labels
axs.set_yticks(y[1:] - np.diff(y) / 2)
axs.set_yticklabels(countries)

#set xticks + labels
axs.xaxis.set_ticks_position('top')
axs.set_xticks(np.arange(n)+0.5)
axs.set_xticklabels(np.arange(n))

高さは次のようにスケーリングされます。

print countries
['Country1' 'Country2' 'Country3' 'Country4' 'Country5' 'Country6']

print gdp
[421 143 134 388 164 420]

ここに画像の説明を入力

于 2013-07-03T08:59:20.730 に答える