def plot_velocity(model, source=None, receiver=None, colorbar=True):
"""
Plot a two-dimensional velocity field from a seismic :class:`Model`
object. Optionally also includes point markers for sources and receivers.
:param model: :class:`Model` object that holds the velocity model.
:param source: Coordinates of the source point.
:param receiver: Coordinates of the receiver points.
"""
domain_size = 1.e-3 * np.array(model.domain_size)
extent = [model.origin[0], model.origin[0] + domain_size[0],
model.origin[1] + domain_size[1], model.origin[1]]
plot = plt.imshow(np.transpose(model.vp), animated=True, cmap=cm.jet,
vmin=np.min(model.vp), vmax=np.max(model.vp), extent=extent)
plt.xlabel('X position (km)')
plt.ylabel('Depth (km)')
# Plot source points, if provided
if receiver is not None:
plt.scatter(1e-3*receiver[:, 0], 1e-3*receiver[:, 1],
s=25, c='green', marker='D')
# Plot receiver points, if provided
if source is not None:
plt.scatter(1e-3*source[:, 0], 1e-3*source[:, 1],
s=25, c='red', marker='o')
# Ensure axis limits
plt.xlim(model.origin[0], model.origin[0] + domain_size[0])
plt.ylim(model.origin[1] + domain_size[1], model.origin[1])
# Create aligned colorbar on the right
if colorbar:
ax = plt.gca()
divider = make_axes_locatable(ax)
cax = divider.append_axes("right", size="5%", pad=0.05)
cbar = plt.colorbar(plot, cax=cax)
cbar.set_label('Velocity (km/s)')
plt.show()
评论列表
文章目录