python - 如何在Matplotlib中绘制二维结构化网格

标签 python numpy matplotlib mesh

我正在尝试使用matplotlib绘制结构化网格(请参见下图)

import numpy as np
import matplotlib.pyplot as plt

x, y = np.meshgrid(np.linspace(0,1, 11), np.linspace(0, 0.6, 7))

plt.scatter(x, y)
plt.show()

我有一个离散的点,但是我不知道如何连接它们以获得类似的信息:

理想的结果是:

感谢您的帮助

最佳答案

我会为此使用两个 linecollections:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.collections import LineCollection

x, y = np.meshgrid(np.linspace(0,1, 11), np.linspace(0, 0.6, 7))

plt.scatter(x, y)

segs1 = np.stack((x,y), axis=2)
segs2 = segs1.transpose(1,0,2)
plt.gca().add_collection(LineCollection(segs1))
plt.gca().add_collection(LineCollection(segs2))
plt.show()

enter image description here

另见 How to plot using matplotlib (python) colah's deformed grid?

因为如果网格不变形,绘制单个 linecollection 会更有效,例如
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.collections import LineCollection

x, y = np.meshgrid(np.linspace(0,1, 11), np.linspace(0, 0.6, 7))

segs1 = np.stack((x[:,[0,-1]],y[:,[0,-1]]), axis=2)
segs2 = np.stack((x[[0,-1],:].T,y[[0,-1],:].T), axis=2)

plt.gca().add_collection(LineCollection(np.concatenate((segs1, segs2))))
plt.autoscale()
plt.show()

关于python - 如何在Matplotlib中绘制二维结构化网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59327021/

相关文章:

python - 循环中的 Pandas 子图

python - 使用 Beautiful Soup 从 XML 返回嵌套属性

python - 将值从元组列表映射到另一个列表

python - 替代 zip 的其他方式

python - 用于图像插值的快速 numpy 索引

python - 制作一个 Python 脚本来加载目录中的所有 npy/npz 文件

numpy - 在numpy中获取页面对齐的内存

matplotlib - matplotlib 中是否存在用于在子图中定义子图网格的工具?

Python/Matplotlib 1.0.1 单击时不会打开新图形

python - unicodedata.normalize 在 python 中做什么?