python - 如何在 Matplotlib 中的彩色网格图上绘制图像?
问题描述
我想绘制bool
密度
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()
我得到这个:
但我希望这个(在 Photoshop 中绘制):
解决方案
安德拉的回答当然是正确的。如果您也用于绘制矩形,则可以稍微简化代码并忽略extent
orzorder
关键字:pcolormesh
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
必须具有相同的形状)。
推荐阅读
- c - 在 char 类型变量中声明了“a”,但“b”作为输出出现,这是怎么回事?
- windows - 为什么我的浏览器显示我从未选择过的语言
- tsql - 如何将查询从 cognos sql 转换为 t-sql
- mysql - Magento SQL 查询
- spring - 在子包的@Component 中使用@Autowire Environment 的空指针
- jboss - JBPM-映射可重用子流程节点与实际子流程
- c# - C# api 2.0 POST 始终保持挂起而不是返回数据
- docusignapi - Dousign API 连接到生产环境
- vector - 不同长度的向量定义
- c# - 从文本文档中随机导入