使用Matplotlib画元素周期表
621 字
3 分钟
使用Matplotlib画元素周期表
使用Matplotlib画元素周期表
进行材料计算或者查询数据库时,我们有时候想了解或者想向别人展示计算或者查询的元素的分布状况,这个时候,我们可以使用元素周期表来直观地表示元素的分布状况。
pymatviz库内置了元素周期表功能,但它的文档写得很模糊,要看懂如何使用它的元素周期表功能,需要花费一段时间,反而不如直接使用Matplotlib来画元素周期表来的简单。
我们可以使用如下代码来画元素周期表:
1. 导入库并定义全局参数和函数
import matplotlib.pyplot as pltfrom pltsci import whole_plot_set, half_plot_set, set_ticks, cm2. 定义元素周期表
定义元素周期表的方式其实很简单,那就是使用一个二维数组来表示元素周期表。有字的位置是元素,没有字的位置是空格。然后可以使用plt.text()函数来在指定位置添加元素的名称。
# 元素符号二维数组,描述周期表布局element_symbols = [ ['H', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'He'], ['Li', 'Be', '', '', '', '', '', '', '', '', '', '', 'B', 'C', 'N', 'O', 'F', 'Ne'], ['Na', 'Mg', '', '', '', '', '', '', '', '', '', '', 'Al', 'Si', 'P', 'S', 'Cl', 'Ar'], ['K', 'Ca', 'Sc', 'Ti', 'V', 'Cr', 'Mn', 'Fe', 'Co', 'Ni', 'Cu', 'Zn', 'Ga', 'Ge', 'As', 'Se', 'Br', 'Kr'], ['Rb', 'Sr', 'Y', 'Zr', 'Nb', 'Mo', 'Tc', 'Ru', 'Rh', 'Pd', 'Ag', 'Cd', 'In', 'Sn', 'Sb', 'Te', 'I', 'Xe'], ['Cs', 'Ba', '*', 'Hf', 'Ta', 'W', 'Re', 'Os', 'Ir', 'Pt', 'Au', 'Hg', 'Tl', 'Pb', 'Bi', 'Po', 'At', 'Rn'], ['Fr', 'Ra', '**', 'Rf', 'Db', 'Sg', 'Bh', 'Hs', 'Mt', 'Ds', 'Rg', 'Cn', 'Nh', 'Fl', 'Mc', 'Lv', 'Ts', 'Og'], ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '*', 'La', 'Ce', 'Pr', 'Nd', 'Pm', 'Sm', 'Eu', 'Gd', 'Tb', 'Dy', 'Ho', 'Er', 'Tm', 'Yb', 'Lu'], ['', '', '**', 'Ac', 'Th', 'Pa', 'U', 'Np', 'Pu', 'Am', 'Cm', 'Bk', 'Cf', 'Es', 'Fm', 'Md', 'No', 'Lr']]# 创建图形和轴fig, ax = plt.subplots(figsize=(20*cm, 12*cm))# 添加标题ax.text(0.5, 1.05, 'Periodic Table', ha='center', va='center', transform=ax.transAxes, fontsize=14, fontweight='bold')
# 绘制元素周期表for i, row in enumerate(element_symbols): for j, symbol in enumerate(row): if symbol and symbol not in ['*', '**']: # 计算单元格位置 cell_x = j * 1.0 cell_y = -i * 1.0 color = '#F5F9FD' edge_color = 'grey' fontcolor = 'dimgrey' # 绘制矩形 rect = Rectangle((cell_x, cell_y), 0.95, 0.95, facecolor=color, edgecolor=edge_color, lw=1) ax.add_patch(rect) # 添加元素符号 ax.text(cell_x + 0.5, cell_y + 0.6, symbol, ha='center', va='center', fontsize=9, fontweight='bold', color=fontcolor)
# 设置轴范围和隐藏坐标轴ax.set_xlim(-0.5, 18.5) # 如果你的元素周期表显示不全,请尝试修改x、y范围ax.set_ylim(-9.5, 1)ax.axis('off')结果:

使用Matplotlib画元素周期表
https://www.kaimoe.cn/posts/matplotlib画元素周期表/ 相关文章 智能推荐
1
图片来源记录
站点说明 记录站点中使用到的外部图片原始出处,便于后续核对与补充。
2
使用Pymatgen计算PhaseDiagram
Pymatgen 使用 Pymatgen 构建相图时常用的导入与基础代码示例。
3
Pymatgen计算Gibbs自由能
Pymatgen 记录使用 Pymatgen 处理 Gibbs 自由能与相图分析时的基础代码入口。
4
Ubuntu上neovim和lazyvim配置
Linux 记录在 Ubuntu 上安装新版 Neovim 并配置 LazyVim 的实际步骤。
5
如何给matplotlib图片加上渐变背景
Matplotlib 介绍如何用 fig.figimage 为 Matplotlib 图像添加渐变背景并避免导出失真。
随机文章 随机推荐
开萌笔记本