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的第四个分量),但这没有帮助。