Python中以离散X轴为标签绘制CSV列数据垂直散点图的咨询
实现方案
import pandas as pd import matplotlib.pyplot as plt # 读取数据逻辑和原代码完全一致 df = pd.read_csv("data.csv", delimiter=",") col_names = df.columns.tolist() col_count = len(col_names) # 生成X轴坐标,50列对应位置0到49 x_pos = list(range(col_count)) # 可自行调整画布大小适配列数 plt.figure(figsize=(15, 7)) # 逐行遍历数据,每行使用唯一颜色绘制 for row_idx in range(len(df)): row_values = df.iloc[row_idx].values # 同一行所有点颜色统一,alpha设置透明度避免重叠看不清 plt.scatter(x_pos, row_values, label=f"第{row_idx+1}行", alpha=0.7) # 坐标轴配置和原箱线图完全一致 plt.xticks(x_pos, col_names, rotation=90, ha='right') plt.yscale('log') # 修正原代码缺少字符串引号的语法问题 plt.xlabel("指标标签") plt.ylabel("数值(对数坐标)") # 如果不需要图例可注释下行,避免图例过多遮挡图表 # plt.legend(bbox_to_anchor=(1.02, 1), loc="upper left") plt.tight_layout() # 自动调整布局避免X轴标签被截断 plt.show()
可选优化:重叠点处理
如果同列数值接近导致点堆叠无法区分,可以给X坐标添加轻微横向抖动,不影响垂直分布的数值展示,仅需修改scatter对应代码:
# 给每个X坐标添加±0.1范围内的随机偏移,避免完全重叠 jitter_x = [x + pd.np.random.uniform(-0.1, 0.1) for x in x_pos] plt.scatter(jitter_x, row_values, label=f"第{row_idx+1}行", alpha=0.7)
内容的提问来源于stack exchange,提问作者user14467343
相关产品推荐
相关产品推荐

