如何在Cython中为多态自旋场显示自定义彩色图像而非仅黑白图
自旋场多态着色显示实现
前置依赖
确保已导入所需库:
import numpy as np from PIL import Image
注:原代码存在函数名笔误,定义时的
display__spin_field多了一个下划线,和调用时的display_spin_field不匹配,修正后即可正常运行。
方案1:0自旋态显示为红色,±1保留原有黑白效果
该方案兼容原有显示习惯,仅新增的0态用高对比度红色标识:
def display_spin_field(field): # 初始化HxWx3的RGB数组,默认值为全黑 rgb_arr = np.zeros((field.shape[0], field.shape[1], 3), dtype=np.uint8) # 自旋值为1:设为白色 rgb_arr[field == 1] = [255, 255, 255] # 自旋值为0:设为红色 rgb_arr[field == 0] = [255, 0, 0] # 自旋值为-1:保持黑色,无需额外赋值 return Image.fromarray(rgb_arr) # 调用示例 field = spin_field(200,200) display_spin_field(field)
方案2:三种自旋态分别用RGB三原色完全区分
如果需要三个状态辨识度拉满,可分别对应不同基础色,示例映射规则如下:
- -1 → 蓝色
- 0 → 绿色
- 1 → 红色
def display_spin_field(field): rgb_arr = np.zeros((field.shape[0], field.shape[1], 3), dtype=np.uint8) rgb_arr[field == 1] = [255, 0, 0] # 1对应红色 rgb_arr[field == 0] = [0, 255, 0] # 0对应绿色 rgb_arr[field == -1] = [0, 0, 255] # -1对应蓝色 return Image.fromarray(rgb_arr)
如果需要自定义颜色,直接修改对应数组的RGB值即可,取值范围为0-255。
内容的提问来源于stack exchange,提问作者Kelpie
相关产品推荐
相关产品推荐

