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

Python绘制清晰散点图:刻度无重叠+按CSV顺序排列

按CSV文件顺序绘制散点图并优化刻度

问题根源

原代码存在三个核心问题:

  • 直接拼接所有CSV的Index列,导致不同文件的数据点在x轴完全重叠,无法区分文件顺序
  • 未对x轴刻度做优化处理,导致刻度拥挤重叠
  • 变量名错误:all_bit_indices未定义,实际应为all_indices

解决方案代码

import os
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

csv_directory = "Allplots/graphs"

# 获取CSV文件列表,保持系统默认排序(如需自定义排序可手动调整)
csv_files = sorted([file for file in os.listdir(csv_directory) if file.endswith(".csv")])

plt.figure(figsize=(16, 8))

# 遍历每个CSV文件,按顺序分配独立x区间
for file_idx, csv_file in enumerate(csv_files):
    file_path = os.path.join(csv_directory, csv_file)
    df = pd.read_csv(file_path)
    
    accuracy = df["Accuracy"]
    # 为当前文件分配x轴区间:每个文件占1个单位,内部数据点均匀分布
    x = np.linspace(file_idx, file_idx + 1, len(accuracy))
    
    # 绘制当前文件的散点图,可自定义颜色区分(可选)
    plt.scatter(x, accuracy, s=5, label=f"File {file_idx+1}: {csv_file[:-4]}")

# 优化x轴刻度与标签
plt.xticks([i + 0.5 for i in range(len(csv_files))], 
           [f"File {i+1}" for i in range(len(csv_files))], 
           rotation=45, ha="right")

plt.xlabel("CSV File Order", fontsize=12)
plt.ylabel("Accuracy", fontsize=12)
plt.title("Accuracy Distribution by CSV File (Ordered)", fontsize=14)
# 若需要图例,可开启(文件过多时建议关闭,避免杂乱)
# plt.legend(bbox_to_anchor=(1.05, 1), loc="upper left")

# 调整布局,避免标签被截断
plt.tight_layout()

output_path = os.path.join(csv_directory, "ordered_scatter_plot.png")
plt.savefig(output_path, dpi=300)
plt.show()

关键优化说明

  • 按文件顺序分离数据:通过为每个文件分配独立的x轴区间(每个文件占1个单位长度),确保不同文件的数据点不会混合,严格按文件顺序排列
  • 刻度优化:将x轴刻度设置为文件序号(或文件名),并旋转45度避免重叠,tight_layout()确保标签完整显示
  • 数据点分布:使用np.linspace在每个文件的x区间内均匀分布数据点,避免原Index列可能导致的重叠问题
  • 可选增强:可通过label参数添加文件标识,开启图例区分不同文件;调整s参数修改点的大小,适配数据量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 20:35:09