如何使用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
相关产品推荐
相关产品推荐

