matplotlibの中に座標軸を変換する方法

Pickniclas:

私は私に正方格子を与える関数meshgridからオフ開始六角形の格子をプロットしたいです。

import numpy as np
import matplotlib.pyplot as plt

xx, yy = np.meshgrid(np.arange(10), np.arange(10), indexing='ij')
plt.scatter(xx,yy)
plt.show()

正方格子

私が手に六角形の格子の基底ベクトルが含まれている行列Aによってポイントのすべてを変換する場合:

A = np.array([[3./2, 3./2],[np.sqrt(3)/2, -np.sqrt(3)/2]])
pts = np.einsum('ij,jk->ik',A,np.array([xx.flatten(),yy.flatten()]))
plt.scatter(pts[0,:], pts[1,:])
plt.show()

ここでは、画像の説明を入力します。

私の代わりに各ポイントを変換するの、私はちょうど同じ結果を得るために、私の座標系の座標軸を変換することができ、場合、それはよりエレガントになると思います。私に[1,0]及び[0,1]から基底ベクトルを変更することができmatplotlibの関数がある[3./2は、SQRT(3)/ 2]および[3./2、-sqrt( 3)/ 2]?それとも私がnp.meshgridに、このような行列を与えることができますか?

ImportanceOfBeingErnest:

あなたは、スキューがポイントを回転させるアフィン散布に変換を提供することができます。

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.transforms as mtrans

xx, yy = np.meshgrid(np.arange(10), np.arange(10))
A = np.array([[3./2, 3./2, 0],[np.sqrt(3)/2, -np.sqrt(3)/2, 0], [0,0,1]])

fig, ax = plt.subplots()
plt.scatter(xx.flat, yy.flat, transform=mtrans.Affine2D(A) + ax.transData)
plt.show()

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=13035&siteId=1