Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.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 如何在Matplotlib中的colormesh plot上打印图像?_Python_Matplotlib - Fatal编程技术网

Python 如何在Matplotlib中的colormesh plot上打印图像?

Python 如何在Matplotlib中的colormesh plot上打印图像?,python,matplotlib,Python,Matplotlib,我想绘制booldensity plt.imshow(rectangle, extent=extent, cmap=ListedColormap([[1, 1, 1, 0], [0, 0, 0, 1]])) 超彩色网格 plt.pcolormesh(x_ticks, y_ticks, np.transpose(potential)) 如何做到这一点 目前,我只看到了第一个情节,尽管我会期待其他的 下面是一个示例代码: import matplotlib from matplotlib.co

我想绘制
bool
density

plt.imshow(rectangle, extent=extent, cmap=ListedColormap([[1, 1, 1, 0], [0, 0, 0, 1]]))
超彩色网格

plt.pcolormesh(x_ticks, y_ticks, np.transpose(potential))
如何做到这一点

目前,我只看到了第一个情节,尽管我会期待其他的


下面是一个示例代码:

import matplotlib
from matplotlib.colors import ListedColormap
import matplotlib.pyplot as plt
import numpy as np

x_ticks = np.linspace(-10, 10, 100, dtype=np.float32)
y_ticks = np.linspace(-10, 10, 100, dtype=np.float32)

x, y = np.meshgrid(x_ticks, y_ticks, indexing='ij')

# density plot of some circular function
r = np.sqrt(x ** 2 + y ** 2)
z = np.where(r != 0, np.sin(r) / r, 1)

plt.figure(1)
plt.pcolormesh(x_ticks, y_ticks, z)
plt.show()

# image of rectangle, white color is transparent
rectangle = np.logical_and(np.abs(x) < 2,  np.abs(y) < 2)
extent = [x_ticks[0], x_ticks[-1], y_ticks[0], y_ticks[-1]]

plt.figure(2)
plt.imshow(rectangle, extent=extent, cmap=ListedColormap([[1, 1, 1, 0], [0, 0, 0, 1]]))
plt.show()

# now I want both on the same plot superimposed
plt.figure(3)
plt.pcolormesh(x_ticks, y_ticks, z)
plt.imshow(rectangle, extent=extent, cmap=ListedColormap([[1, 1, 1, 0], [0, 0, 0, 1]]))
plt.show()
导入matplotlib
从matplotlib.colors导入ListedColormap
将matplotlib.pyplot作为plt导入
将numpy作为np导入
x_ticks=np.linspace(-10,10100,dtype=np.float32)
y_ticks=np.linspace(-10,10100,dtype=np.float32)
x、 y=np.meshgrid(x_ticks,y_ticks,index='ij')
#一类圆函数的密度图
r=np.sqrt(x**2+y**2)
z=np,其中(r!=0,np.sin(r)/r,1)
plt.图(1)
plt.pcolormesh(x_刻度,y_刻度,z)
plt.show()
#图像为矩形,白色为透明色
矩形=np.logical_和(np.abs(x)<2,np.abs(y)<2)
范围=[x_刻度[0],x_刻度[-1],y_刻度[0],y_刻度[-1]]
plt.图(2)
plt.imshow(矩形,extent=extent,cmap=ListedColormap([[1,1,1,0],[0,0,0,1]]))
plt.show()
#现在我想把两个都叠加在同一个图上
plt.图(3)
plt.pcolormesh(x_刻度,y_刻度,z)
plt.imshow(矩形,extent=extent,cmap=ListedColormap([[1,1,1,0],[0,0,0,1]]))
plt.show()
我明白了:

但我希望这样(在Photoshop中绘制):


您必须在其中一个绘图调用中设置显式的
zorder
,以将其置于顶部/底部:

plt.pcolormesh(x_ticks, y_ticks, z)
plt.imshow(rectangle, extent=extent, cmap=ListedColormap([[1, 1, 1, 0], [0, 0, 0, 1]]), zorder=1)

安德拉的回答当然是正确的。如果使用
pcolormesh
来绘制矩形,则可以稍微简化代码,忽略
extent
zorder
关键字:

plt.pcolormesh(x_ticks, y_ticks, z)
plt.pcolormesh(x_ticks, y_ticks, rectangle,cmap=ListedColormap([[1, 1, 1, 0], [0, 0, 0, 1]]))

通过这种方式,您可以立即知道坐标系是什么(
z
rectangle
必须具有相同的形状)。

您希望如何查看两者?如果希望其中一个透明,请传递
alpha
。您的扩展数据块和域是什么?我甚至不确定你期望的是什么。我通过了一个alpha(colormap color的第四个分量),但这没有帮助。