3

私は座標のセットを持ってい[(2,3),(45,4),(3,65)] ます、行列としてそれらをプロットする必要があると言いますとにかくmatplotlibでこれを行うことができるので、この種の外観を持たせたいですhttp://imgur.com/Q6LLhmk

4

1 に答える 1

3

編集:私の元の答えを使用しax.scatterました。これには問題があります。2つのポイントが並んでいるax.scatter場合、スケールによっては、間に少しスペースを空けて描画する場合があります。

たとえば、

data = np.array([(2,3),(3,3)])

拡大した詳細は次のとおりです。

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

したがって、この問題を修正する代替ソリューションは次のとおりです。

import matplotlib.pyplot as plt
import numpy as np

data = np.array([(2,3),(3,3),(45,4),(3,65)])
N = data.max() + 5

# color the background white (1 is white)
arr = np.ones((N,N), dtype = 'bool')
# color the dots black (0)
arr[data[:,1], data[:,0]] = 0

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)

ax.imshow(arr, interpolation='nearest', cmap = 'gray')
ax.invert_yaxis()
# ax.axis('off')
plt.show()

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

どれだけズームインしても、(2,3)と(3,3)の隣接する正方形は並んだままになります。

残念ながら、とは異なりax.scatter、を使用するには配列を作成ax.imshowする必要があるN x Nため、を使用するよりもメモリを大量に消費する可能性がありますax.scatterdataただし、非常に大きな数が含まれていない限り、これは問題にはなりません。

于 2013-02-13T12:51:09.717 に答える