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
相关产品推荐
相关产品推荐

