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

如何在Python中读取TEX格式ASCII文件并按标记绘制差异化图表

解决方案:根据标记绘制不同符号的散点图

没问题,我来帮你搞定这个绘图需求!下面是一步步的代码和实用解释:

步骤1:导入必要的库

首先确保你已经安装了numpy和matplotlib,然后导入它们:

import numpy as np
import matplotlib.pyplot as plt

步骤2:读取并预处理数据

你已经用np.loadtxt读取了数据,但要注意:读取的标记列d是字节类型(|S1),我们需要把它转换成普通字符串才能正确匹配'a'或'r':

# 保留你原有的读取代码
dtype1 = np.dtype([('x', np.float), ('a', np.float), ('b', np.float), ('c', np.float), ('d', '|S1')])
x, a_data, b, c, d = np.loadtxt(
    'arquive.tex', 
    skiprows=7, 
    usecols=(0,2,4,5,7), 
    dtype=dtype1, 
    unpack=True, 
    delimiter='&', 
    comments='\\' 
)

# 将字节类型的标记转换为可直接比较的字符串
d_str = np.char.decode(d)

步骤3:筛选不同标记的数据

用布尔索引快速筛选出标记为'a'和'r'的x与b数据:

# 创建筛选掩码
mask_a = d_str == 'a'
mask_r = d_str == 'r'

# 提取对应的数据子集
x_a, b_a = x[mask_a], b[mask_a]
x_r, b_r = x[mask_r], b[mask_r]

步骤4:绘制带区分符号的散点图

使用matplotlib的scatter函数,给不同标记的数据设置差异化的符号和颜色,同时添加清晰的图表元素:

# 创建画布并设置尺寸
plt.figure(figsize=(8, 6))

# 分别绘制两组数据,用不同符号区分
plt.scatter(x_a, b_a, marker='o', label='Marked "a"', color='#1f77b4', alpha=0.7)
plt.scatter(x_r, b_r, marker='^', label='Marked "r"', color='#ff7f0e', alpha=0.7)

# 添加图表标签和样式
plt.xlabel('x Column Values', fontsize=12)
plt.ylabel('b Column Values', fontsize=12)
plt.title('Relationship between x and b by Marker Type', fontsize=14, pad=15)
plt.legend(fontsize=10)
plt.grid(True, linestyle='--', alpha=0.5)

# 显示最终图表
plt.show()

关键注意点

  • 字节串转字符串:np.loadtxt读取|S1类型时返回字节数组,必须用np.char.decode()转换为普通字符串,否则直接和'a'/'r'比较会匹配失败。
  • 自定义样式:你可以修改marker参数(比如用's'表示正方形、'*'表示星号)和color参数来调整绘图风格。
  • 异常标记处理:如果数据中存在'a'/'r'之外的标记,可以添加mask_other = ~(mask_a | mask_r)来筛选这些数据,或者直接忽略。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:41:17