深圳龙岗网站建设公司代做淘宝客网站
2026/1/26 5:21:10 网站建设 项目流程
深圳龙岗网站建设公司,代做淘宝客网站,网站建设费是无形资产吗,百度seo代理你希望用 Python 读取 TXT 文本文件中的数据并绘制可视化图表#xff0c;我会针对新手最常遇到的 3 种 TXT 数据格式#xff08;单行数值、多列分隔数据、带表头表格数据#xff09;#xff0c;提供完整可直接运行的代码#xff0c;同时拆解关键步骤和避坑要点#xff0c…你希望用 Python 读取 TXT 文本文件中的数据并绘制可视化图表我会针对新手最常遇到的 3 种 TXT 数据格式单行数值、多列分隔数据、带表头表格数据提供完整可直接运行的代码同时拆解关键步骤和避坑要点确保你能快速适配自己的 TXT 文件。前置准备首先安装绘图和数据处理的核心库打开终端 / 命令提示符执行bashpip install matplotlib numpy场景 1TXT 文件每行一个数值如时序数据、单一指标序列示例 TXT 内容保存为data_single.txtplaintext15 18 12 22 19 25 17读取并绘制折线图 直方图直观展示趋势和分布pythonimport matplotlib.pyplot as plt import numpy as np def read_single_value_txt(file_path): 读取每行一个数值的TXT文件包含异常处理 try: # 读取文件并转换为浮点数组自动过滤空行 data np.loadtxt(file_path, dtypefloat) return data except FileNotFoundError: print(f错误文件 {file_path} 不存在请检查路径) return None except ValueError: print(错误TXT文件中包含非数值内容如文字、符号) return None # 主逻辑 if __name__ __main__: # 替换为你的TXT文件路径相对路径/绝对路径均可 file_path data_single.txt data read_single_value_txt(file_path) if data is not None: # 创建1行2列的子图设置画布大小 fig, (ax1, ax2) plt.subplots(1, 2, figsize(12, 5)) # 子图1折线图展示数值趋势 ax1.plot(data, markero, color#2E86AB, linewidth2, markersize7) ax1.set_title(数值序列折线图, fontsize12, fontweightbold) ax1.set_xlabel(数据序号, fontsize10) ax1.set_ylabel(数值, fontsize10) ax1.grid(True, alpha0.3) # 添加浅色网格提升可读性 # 子图2直方图展示数值分布 ax2.hist(data, bins5, color#A23B72, edgecolorblack, alpha0.7) ax2.set_title(数值分布直方图, fontsize12, fontweightbold) ax2.set_xlabel(数值区间, fontsize10) ax2.set_ylabel(出现频次, fontsize10) # 自动调整布局避免标签重叠 plt.tight_layout() # 显示图表 plt.show() # 可选保存高清图表取消注释即可 # plt.savefig(single_value_plot.png, dpi300, bbox_inchestight)代码关键说明np.loadtxt()专门处理纯数值 TXT 的高效方法无需逐行读取异常处理覆盖 “文件不存在”“数据非数值” 两个新手最易踩的坑markero给折线图添加圆点标记清晰显示每个数据点bins5直方图的区间数可根据数据量调整数据多则增大。场景 2TXT 文件每行多列数据空格 / 逗号 / 制表符分隔如 X-Y 坐标示例 TXT 内容保存为data_multi.txt空格分隔plaintext1 3.5 2 4.2 3 5.1 4 4.8 5 6.3 6 5.9读取并绘制散点图 折线图展示变量关系pythonimport matplotlib.pyplot as plt import numpy as np def read_multi_column_txt(file_path, delimiter ): 读取多列分隔的TXT文件 :param file_path: 文件路径 :param delimiter: 分隔符空格/逗号/,/制表符/\t try: # unpackTrue将多列数据拆分为独立的X、Y数组 x_data, y_data np.loadtxt(file_path, delimiterdelimiter, unpackTrue) return x_data, y_data except Exception as e: print(f读取失败{str(e)}) return None, None # 主逻辑 if __name__ __main__: file_path data_multi.txt # 若你的TXT是逗号分隔改为 delimiter,制表符分隔改为 delimiter\t x, y read_multi_column_txt(file_path, delimiter ) if x is not None and y is not None: plt.figure(figsize(8, 5)) # 散点图突出原始数据点 plt.scatter(x, y, color#F18F01, s60, label实测数据, zorder2) # 折线图连接数据点展示趋势 plt.plot(x, y, color#C73E1D, linestyle--, linewidth2, label趋势线, zorder1) # 添加标题和标签 plt.title(多列数据散点图折线图, fontsize12, fontweightbold) plt.xlabel(X轴自变量, fontsize10) plt.ylabel(Y轴因变量, fontsize10) plt.legend(locupper left) # 显示图例 plt.grid(True, alpha0.3, zorder0) plt.show() # 可选保存图表 # plt.savefig(multi_column_plot.png, dpi300, bbox_inchestight)代码关键说明delimiter核心参数必须匹配你的 TXT 实际分隔符比如 CSV 格式的 TXT 用逗号unpackTrue将多列数据拆分为独立数组方便分别作为 X/Y 轴zorder控制图层顺序散点在折线之上避免数据点被遮挡s60调整散点大小linestyle--设置虚线趋势线区分原始数据和趋势。场景 3带表头的 TXT 数据类似表格如月度销售额 / 成本示例 TXT 内容保存为data_header.txt逗号分隔plaintext月份,销售额(万),成本(万) 1,20,12 2,25,15 3,30,18 4,28,16 5,35,20读取并绘制柱状对比图展示多指标对比pythonimport matplotlib.pyplot as plt import numpy as np def read_txt_with_header(file_path, delimiter,): 读取带表头的TXT文件手动解析表头和数据 try: # 打开文件并过滤空行 with open(file_path, r, encodingutf-8) as f: lines [line.strip() for line in f.readlines() if line.strip()] # 解析表头第一行 header lines[0].split(delimiter) # 解析数据行从第二行开始 months [] sales [] cost [] for line in lines[1:]: parts line.split(delimiter) months.append(parts[0]) # 月份字符串 sales.append(float(parts[1])) # 销售额转数值 cost.append(float(parts[2])) # 成本转数值 return header, months, sales, cost except Exception as e: print(f读取失败{str(e)}) return None, None, None, None # 主逻辑 if __name__ __main__: file_path data_header.txt header, months, sales, cost read_txt_with_header(file_path) if months: # 绘制双列柱状图 x np.arange(len(months)) # 月份的X轴位置 width 0.35 # 柱子宽度 fig, ax plt.subplots(figsize(10, 6)) # 销售额柱子左移width/2 ax.bar(x - width/2, sales, width, label销售额, color#4CAF50, alpha0.8) # 成本柱子右移width/2 ax.bar(x width/2, cost, width, label成本, color#FF9800, alpha0.8) # 美化配置 ax.set_title(月度销售额成本对比, fontsize12, fontweightbold) ax.set_xlabel(月份, fontsize10) ax.set_ylabel(金额万元, fontsize10) ax.set_xticks(x) # 设置X轴刻度位置 ax.set_xticklabels(months)# 设置X轴刻度标签月份 ax.legend() # 显示图例 # 给柱子添加数值标签更直观 for i, v in enumerate(sales): ax.text(i - width/2, v 0.5, str(v), hacenter, vabottom, fontsize9) for i, v in enumerate(cost): ax.text(i width/2, v 0.5, str(v), hacenter, vabottom, fontsize9) plt.show() # 可选保存图表 # plt.savefig(header_plot.png, dpi300, bbox_inchestight)代码关键说明手动解析表头np.loadtxt()无法直接跳过表头因此用open()逐行读取先处理表头再解析数据双列柱状图通过x ± width/2调整柱子位置避免重叠数值标签ax.text()给每个柱子添加具体数值让图表信息更完整编码指定encodingutf-8避免中文表头 / 标签出现乱码。总结数据读取核心纯数值 TXT 用np.loadtxt()快速读取带表头 TXT 手动逐行解析关键是匹配正确的delimiter分隔符作图通用流程读取数据 → 创建画布 / 子图 → 绘制图表 → 添加标题 / 标签 / 图例 → 显示 / 保存避坑要点必须添加异常处理文件不存在、数据类型错误作图前确保数据是数值类型避免字符串中文乱码需指定encodingutf-8。你只需替换代码中的file_path和delimiter分隔符就能快速适配自己的 TXT 文件生成图表。如果你的 TXT 格式特殊比如混合文本和数值可以告诉我具体格式我会帮你调整代码。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询