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

如何用Python将值网格转换为密度图呈现硅表面结构

解决STM硅表面数据转密度图的方案

别慌!用Python的科学计算和绘图工具就能快速搞定这个需求,下面是一步一步的具体操作:

1. 准备依赖库

首先确保你安装了处理数据和绘图的必要工具,打开终端执行:

pip install numpy matplotlib

2. 完整代码实现

把以下代码保存为stm_plot.py,放在和stm.txt同一目录下运行即可:

import numpy as np
import matplotlib.pyplot as plt

# 读取STM扫描数据
# 如果文件有表头,可添加skip_header=N参数(N是表头行数)
stm_data = np.loadtxt("stm.txt")

# 先检查数据形状,确认是二维网格结构
print(f"数据维度:{stm_data.shape}")

# 万一数据是一维的,需要手动转成二维(替换n_rows和n_cols为实际行列数)
# stm_data = stm_data.reshape((n_rows, n_cols))

# 创建绘图画布
fig, ax = plt.subplots(figsize=(10, 8))

# 绘制密度图
# cmap选颜色映射,interpolation控制插值方式,origin='lower'让原点在左下角(符合扫描习惯)
im = ax.imshow(stm_data, cmap='viridis', interpolation='nearest', origin='lower')

# 添加颜色条,标注物理意义(比如表面高度)
plt.colorbar(im, label='Surface Height (Å)')

# 设置图表标题和坐标轴标签
ax.set_title('Silicon Surface STM Density Map', fontsize=14, fontweight='bold')
ax.set_xlabel('Scan X Coordinate', fontsize=12)
ax.set_ylabel('Scan Y Coordinate', fontsize=12)

# 显示图像(换成plt.savefig('stm_density.png', dpi=300)可导出高清图片)
plt.show()

3. 关键细节调整

  • 颜色映射选择:cmap参数可以换成'plasma'、'inferno'或'gray',根据你想要的可视化风格调整;
  • 插值方式:interpolation='nearest'会保留原始数据的像素感,适合观察精细结构;'bilinear'会让图像更平滑;
  • 数据维度问题:如果读取后数据是一维数组,你需要知道原始扫描的行列数,用reshape转换为二维网格;
  • 数据格式问题:如果读取报错,先打开stm.txt确认是纯数值的网格(每行对应一行扫描数据),没有多余符号或注释。

内容的提问来源于stack exchange,提问作者Brandon SeedlessBananas Mc-Wil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:32:05