import numpy as np
import matplotlib.pyplot as plt
from matplotlib.collections import LineCollection
from pathlib import Path
import h5py
def read_faces(fname: Path) -> np.ndarray:
data = h5py.File(fname, "r")
start = data["Faces/Start"][:][:, :2]
end = data["Faces/End"][:][:, :2]
return np.stack([start, end], axis=1)
def read_generators(fname: Path) -> np.ndarray:
data = h5py.File(fname, "r")
return data["Cells/Generator"][:]
def read_centroids(fname: Path) -> np.ndarray:
data = h5py.File(fname, "r")
return data["Cells/Centroid"][:]
def plot(faces: np.ndarray, generators = None, centroids = None):
lines = LineCollection(faces, color="r", lw=1)
fig, ax = plt.subplots(figsize=(6, 6))
ax.add_collection(lines)
ax.set_aspect("equal")
ax.set_xlim(min([f[:, 0].min() for f in faces]), max([f[:, 0].max() for f in faces]))
ax.set_ylim(min([f[:, 1].min() for f in faces]), max([f[:, 1].max() for f in faces]))
if generators is not None:
ax.scatter(generators[:, 0], generators[:, 1], c="green", s=0.5)
if centroids is not None:
ax.scatter(centroids[:, 0], centroids[:, 1], c="blue", s=0.5)
ax.axis("off")
fig.tight_layout()
fig.savefig("test.png", dpi=300)
def main(fname):
plot(
faces = read_faces(fname),
generators = read_generators(fname),
centroids = read_centroids(fname),
)
if __name__ == "__main__":
main("test_2_d.hdf5")