You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在同一图中并排绘制多信号,X轴设为接收器编号并优化可视化

地震轨迹可视化优化:自定义X轴编号与信号正区域填充

以下是针对你需求的修改代码,同时解决X轴显示接收器编号、填充信号正区域两个问题:

import numpy as np
import matplotlib.pyplot as plt

# 加载数据
stack = np.loadtxt("Stack/2D_stack.semd", skiprows=1)
ncols = stack.shape[1]
receiver_count = ncols - 1  # 接收器总数:1到96

fig1 = plt.figure(figsize=(14, 8))
ax = plt.gca()

val = 0.5  # 轨迹间横向偏移量
shift = val

for i in range(1, ncols):
    receiver_num = i
    signal = stack[:, i]
    time = stack[:, 0]
    
    # 绘制轨迹曲线
    ax.plot(signal + shift, time, '-k')
    
    # 填充信号大于0的区域(与基准线x=shift之间)
    positive_mask = signal > 0
    ax.fill_betweenx(time, shift, signal + shift, where=positive_mask, color='black')
    
    shift += val

# 配置Y轴
ax.set_ylabel("time (s)")
ax.invert_yaxis()

# 配置X轴为接收器编号
tick_positions = np.arange(val, val + receiver_count * val, val)
ax.set_xticks(tick_positions)
ax.set_xticklabels(np.arange(1, receiver_count + 1))
ax.set_xlabel("Receiver Number")

fig1.tight_layout()
plt.show()

关键改动说明

  1. X轴替换为接收器编号

    • 计算每个接收器轨迹的基准偏移位置(即原信号0点对应的X坐标),将这些位置设为X轴刻度点
    • 通过set_xticks和set_xticklabels把刻度替换为1到96的接收器编号,同时添加明确的轴标签
  2. 填充信号正区域

    • 用布尔掩码筛选出信号大于0的时间段
    • 使用fill_betweenx沿时间轴(Y轴)填充基准线与正信号曲线之间的区域,仅在信号为正的部分填充黑色,强化可视化效果

内容的提问来源于stack exchange,提问作者Felipe LCavalcante

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 14:25:38