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

如何使用gnuplot基于数据文件的三列绘制2D彩色散点图?

基于三列坐标数据绘制2D彩色图的实现方案

针对你提供的三列数据(前两列为坐标,第三列为对应数值),这里提供两种常用的Python实现方案,均生成非3D的2D彩色图:

方案1:彩色散点图(展示离散点)

适合直接呈现每个坐标点的数值对应颜色,直观展示离散数据分布:

import numpy as np
import matplotlib.pyplot as plt

# 读取文本数据(替换为你的文件路径)
data = np.loadtxt('data.txt')
x = data[:, 0]
y = data[:, 1]
values = data[:, 2]

# 绘制散点图,颜色绑定第三列数值
plt.scatter(x, y, c=values, cmap='viridis', s=100)
# 添加颜色条标注数值含义
plt.colorbar(label='坐标点数值')

# 设置坐标轴与标题
plt.xlabel('X 坐标')
plt.ylabel('Y 坐标')
plt.title('2D 彩色散点图')

plt.show()

关键参数说明:

  • cmap='viridis':指定颜色映射方案,可替换为plasma、RdBu(适合正负值区分)等
  • s=100:控制点的大小,可根据需求调整

方案2:插值热力图(生成连续色彩面)

如果需要展示数值的连续分布趋势,可通过插值将离散点转换为连续热力图:

import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import griddata

# 读取数据
data = np.loadtxt('data.txt')
x = data[:, 0]
y = data[:, 1]
values = data[:, 2]

# 生成插值网格
xi = np.linspace(min(x), max(x), 100)
yi = np.linspace(min(y), max(y), 100)
xi, yi = np.meshgrid(xi, yi)

# 线性插值填充网格数值(可选nearest/cubic插值方法)
zi = griddata((x, y), values, (xi, yi), method='linear')

# 绘制热力图
plt.contourf(xi, yi, zi, cmap='viridis', levels=20)
plt.colorbar(label='坐标点数值')

# 叠加原始离散点作为参考
plt.scatter(x, y, color='white', s=50, edgecolor='black')

plt.xlabel('X 坐标')
plt.ylabel('Y 坐标')
plt.title('2D 插值热力图')

plt.show()

关键参数说明:

  • method='linear':插值方法,可选nearest(最快)、cubic(最平滑)
  • levels=20:热力图的色彩分层数量,数值越高色彩过渡越细腻

注意事项:

  • 确保文本文件路径正确,或把数据文件放在代码同一目录下
  • 若数据量极大,可降低网格密度(如把100改为50)以提升运行速度

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 13:47:54