Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在不同位置绘制多个pcolormesh_Python_Matplotlib - Fatal编程技术网

Python 在不同位置绘制多个pcolormesh

Python 在不同位置绘制多个pcolormesh,python,matplotlib,Python,Matplotlib,我想根据另一个pcolormesh(这里称为qm1)绘制一个pcolormesh(这里称为qm2),其左下像素位于给定位置 我尝试了以下几点: import matplotlib.pyplot as plt import numpy as np if __name__ == '__main__': s_det = 4 s_array = 14 x_shift = 5 y_shift = 5 array = np.zeros([s_array, s_

我想根据另一个pcolormesh(这里称为qm1)绘制一个pcolormesh(这里称为qm2),其左下像素位于给定位置

我尝试了以下几点:

import matplotlib.pyplot as plt
import numpy as np

if __name__ == '__main__':

    s_det = 4
    s_array = 14

    x_shift = 5
    y_shift = 5

    array = np.zeros([s_array, s_array])
    det = np.random.randint(0, 2, [s_det, s_det])

    qm1 = plt.pcolormesh(array, alpha=.0)
    qm2 = plt.pcolormesh(det, cmap='Oranges', edgecolor='black')
    qm2.set_offset_position('data')
    qm2.set_offsets = ([x_shift, y_shift])

    ax = plt.axes()
    ax.set_aspect('equal')
    plt.show()
但是qm2仍然没有改变

我期待着这样的事情:


如果代码中有输入错误,第17行的正确语法是

qm2.set_offsets([x_shift, y_shift])
然而,尽管它确实改变了qm2的位置,但它在数据坐标中并没有这样做,我真的不知道为什么。您可以使用
x\u shift
y\u shift
的值,直到达到所需的位置,但这不是很优雅

我可以提供的一个解决方案是显式指定
pcolormesh
的坐标X,Y。这个函数不是很明确,但我相信它使用了

显然,
“data”
参数被忽略,因此在执行

qm2.set_offset_position('data')
qm2.set_offsets([x_shift, y_shift])
偏移仍然以像素为单位,而不是以数据坐标为单位

解决方法是定义您自己的转换并将其添加到现有转换之前:

trans = matplotlib.transforms.Affine2D().translate(x_shift, y_shift)
qm2.set_transform(trans + qm2.get_transform())
完整示例:

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

s_det = 4
s_array = 14

x_shift = 5
y_shift = 5

array = np.zeros([s_array, s_array])
det = np.random.randint(0, 2, [s_det, s_det])

qm1 = plt.pcolormesh(array, alpha=.0)
qm2 = plt.pcolormesh(det, cmap='Oranges', edgecolor='black')

trans = matplotlib.transforms.Affine2D().translate(x_shift, y_shift)
qm2.set_transform(trans + qm2.get_transform())

ax = plt.gca()
ax.set_aspect('equal')
plt.show()

你期望的结果是什么?一个好的(MS)油漆工作。;-)
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.transforms

s_det = 4
s_array = 14

x_shift = 5
y_shift = 5

array = np.zeros([s_array, s_array])
det = np.random.randint(0, 2, [s_det, s_det])

qm1 = plt.pcolormesh(array, alpha=.0)
qm2 = plt.pcolormesh(det, cmap='Oranges', edgecolor='black')

trans = matplotlib.transforms.Affine2D().translate(x_shift, y_shift)
qm2.set_transform(trans + qm2.get_transform())

ax = plt.gca()
ax.set_aspect('equal')
plt.show()