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

Python绘制精美三列时间序列图 标注指定点星形标记

问题修正与实现方案

你原有代码无法运行的核心原因是:np.loadtxt() 读取返回的是numpy二维数组,本身没有.plot() 内置方法,直接调用会抛出属性错误。
以下是满足「单区域叠放3条时间序列、指定位置加星形标记」需求的高效实现:

完整可运行代码

import matplotlib.pyplot as plt
import numpy as np

# 读取数据,如果你不想单独存数据文件,也可以直接把数据集内容转成numpy数组传入
data = np.loadtxt("data_3_timeseries")
x = np.arange(len(data))  # 生成数据点对应的x轴序号
# 注意:日常计数的第5、8、10个点,对应Python 0起始索引的4、7、9位置
mark_pos = [4, 7, 9]

# 初始化画布,设置合适尺寸和分辨率保证美观
plt.figure(figsize=(10, 4), dpi=100)
# 选3个区分度高的配色,避免曲线混色
line_colors = ['#2563eb', '#ea580c', '#16a34a']
series_names = ['时间序列1', '时间序列2', '时间序列3']

# 循环绘制3条折线
for idx in range(3):
    plt.plot(
        x, data[:, idx],
        color=line_colors[idx],
        label=series_names[idx],
        linewidth=1.5,
        alpha=0.8
    )
    # 对应序列的指定位置绘制星形标记,加白边提升辨识度,层级设高避免被折线遮挡
    plt.scatter(
        x[mark_pos], data[mark_pos, idx],
        marker='*',
        color=line_colors[idx],
        s=160,
        edgecolor='white',
        linewidth=1.2,
        zorder=10
    )

# 补充标注元素
plt.xlabel('数据点序号')
plt.ylabel('序列数值')
plt.title('三列时间序列叠加可视化')
plt.legend(framealpha=0.9)
plt.grid(alpha=0.3, linestyle='--')
plt.tight_layout()  # 自动调整布局避免标签截断
plt.show()

效果说明

  • 三条曲线使用高区分度配色,半透明设置避免重叠区域完全遮挡
  • 星形标记添加了白色描边,设置了更高的显示层级,不会被折线覆盖,辨识度更高
  • 自带网格、图例、坐标轴标注,整体风格清爽
  • 如果需要调整标记位置、配色、线条粗细,直接修改对应参数即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 23:00:57