news 2026/10/14 21:23:25

Python实现6阶幻方矩阵热力图可视化

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python实现6阶幻方矩阵热力图可视化

一、简介

幻方(Magic Square)是一类特殊方阵,方阵内每行、每列、两条对角线上所有元素相加的总和完全相等。 本文使用numpy构造6阶幻方矩阵,matplotlib绘制热力图。

二、完整代码

import numpy as np import matplotlib.pyplot as plt # 设置中文显示以及负号正常展示 plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'Arial Unicode MS'] plt.rcParams['axes.unicode_minus'] = False # 定义6阶幻方矩阵 A = np.array([ [35, 1, 6, 26, 19, 24], [3, 32, 7, 21, 23, 25], [31, 9, 2, 22, 27, 20], [8, 28, 33, 17, 10, 15], [30, 5, 34, 12, 14, 16], [4, 36, 29, 13, 18, 11] ]) # 幻方校验模块 print("===== 幻方校验结果 =====") n = A.shape[0] magic_sum = n * (n**2 + 1) / 2 print(f"理论幻和:{magic_sum}") row_sum = np.sum(A, axis=1) print(f"各行之和:{row_sum}") col_sum = np.sum(A, axis=0) print(f"各列之和:{col_sum}") diag1_sum = np.trace(A) diag2_sum = np.trace(np.fliplr(A)) print(f"主对角线和:{diag1_sum}") print(f"反对角线和:{diag2_sum}") is_magic = np.all(row_sum == magic_sum) and np.all(col_sum == magic_sum) and (diag1_sum == magic_sum) and (diag2_sum == magic_sum) if is_magic: print("✅ 校验通过,这是合法6阶幻方!") else: print("❌ 校验失败,不是幻方!") # 绘制热力图 plt.figure(figsize=(6, 6)) im = plt.imshow(A, cmap='jet') plt.colorbar(im, label="数值大小") plt.title('6阶幻方矩阵可视化', fontsize=14) plt.xlabel('列', fontsize=12) plt.ylabel('行', fontsize=12) # 在每个单元格标注数字 for i in range(n): for j in range(n): plt.text(j, i, str(A[i, j]), ha='center', va='center', color='white', fontsize=12) plt.tight_layout() plt.show()

三、代码解析

1. 库导入与中文配置

import numpy as np import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'Arial Unicode MS'] plt.rcParams['axes.unicode_minus'] = False
  • numpy:负责矩阵存储、求和等数值运算;
  • matplotlib.pyplot:绘图库,实现矩阵可视化;
  • rcParams:配置环境,解决 matplotlib 中文方框乱码、负号显示异常问题。

2. 幻方矩阵定义

通过np.array()创建 6×6 二维数组,矩阵元素为 1~36,无重复数字,构成 6 阶幻方。

A = np.array([ [35, 1, 6, 26, 19, 24], [3, 32, 7, 21, 23, 25], [31, 9, 2, 22, 27, 20], [8, 28, 33, 17, 10, 15], [30, 5, 34, 12, 14, 16], [4, 36, 29, 13, 18, 11] ])

3. 幻方校验代码

n = A.shape[0] magic_sum = n * (n**2 + 1) / 2 row_sum = np.sum(A, axis=1) col_sum = np.sum(A, axis=0) diag1_sum = np.trace(A) diag2_sum = np.trace(np.fliplr(A))
  • A.shape[0]:获取矩阵行数;
  • np.sum(A, axis=1):按行求和;np.sum(A, axis=0):按列求和;
  • np.trace():求矩阵迹,即主对角线元素之和;
  • np.fliplr(A):矩阵左右翻转,用于计算反对角线之和;
  • np.all():批量判断数组全部元素是否满足条件,校验所有行、列的和是否等于幻和。

4. 热力图绘制

plt.figure(figsize=(6, 6)) im = plt.imshow(A, cmap='jet') plt.colorbar(im, label="数值大小")
  • plt.figure()创建画布,设置画布尺寸;
  • plt.imshow()将二维矩阵渲染为热力图,cmap='jet'为彩虹配色;
  • plt.colorbar()添加颜色条,建立颜色与数值的映射关系。
for i in range(n): for j in range(n): plt.text(j, i, str(A[i, j]), ha='center', va='center', color='white', fontsize=12)

双重循环遍历矩阵,plt.text()在每个单元格中心写入对应数字。ha='center'水平居中,va='center'垂直居中。plt.tight_layout()自动调整布局,防止文字重叠;plt.show()展示图像。

四、运行结果

  1. 控制台输出程序会打印理论幻和、每行之和、每列之和、两条对角线之和,最后输出幻方校验结果。本案例会输出校验通过。
  2. 图像输出生成一张 6×6 矩阵热力图,颜色代表数值大小,红色代表大数,蓝色代表小数,每个方格内标注幻方数字,右侧附带颜色标尺。

测试小实验:修改矩阵中任意一个数字,重新运行代码,幻方校验模块会直接判定幻方不合法。

五、总结

本文通过 numpy 实现矩阵运算,matplotlib 完成矩阵热力可视化,将抽象的幻方数学模型转为直观图像。 该案例可以帮助初学者理解二维矩阵操作、矩阵求和以及数据可视化的基本思路。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/14 21:23:19

软考中级软件设计师考点笔记:数据结构高频考点与易错点详解

简介:软件设计师(中级)考点笔记精华版为软考中级备考者系统梳理了数据结构、查找与排序等核心模块,覆盖邻接矩阵、顺序/链式/散列存储、二叉树、AVL树、哈夫曼树、二分查找、分块查找以及直接插入、冒泡、希尔、快排、堆排、归并、…

作者头像 李华
网站建设 2026/10/14 21:22:50

Logstash Grok 插件实战:从安装到性能调优,搞定非结构化日志解析

简介:logstash-filter-grok-4.3.0.tar.gz 是 Logstash 生态中用于日志解析的 Grok 过滤器插件包,面向使用 Elastic Stack 进行日志采集、处理与分析的运维及开发人员。Grok 内置大量预定义模式,可将 Web 服务器日志、数据库日志及自定义格式的…

作者头像 李华
网站建设 2026/10/14 21:21:46

一个开源工具,把 MySQL 直接变成“飞书多维表”

在企业数据架构中,MySQL、PostgreSQL 这类关系型数据库非常适合长期存储结构化数据,也拥有成熟的索引、事务、JOIN、聚合和权限体系。但数据库本身并不是一个适合所有用户直接操作的界面。技术人员可以使用 Navicat、DBeaver 或直接编写 SQL,…

作者头像 李华
网站建设 2026/10/14 21:21:30

构建产物深度诊断:ponytail技能树与前端工程健康度分析

1. 这不是发型,是开发者圈里悄悄流传的“ ponytail 技能树”最近在几个技术社区和内部协作群聊里,反复看到“ponytail”这个词被拎出来讨论——不是指马尾辫,也不是美妆教程里的造型技巧,而是一个正在小范围快速渗透、但尚未被主流…

作者头像 李华
网站建设 2026/10/14 21:18:52

医学生转行AI+医疗,斩获礼来30K Offer,揭秘复合人才职业新路径

本文分享一位医学生成功转型AI医疗领域,获得礼来30K岗位的经验。文章指出,随着AI技术进入医疗行业,懂医学又懂AI的复合型人才成为稀缺资源。作者通过三个阶段引导医学生建立AI思维、学习AI应用能力、重新定位职业标签,最终成功转型…

作者头像 李华