news 2026/5/30 19:24:16

元素周期表的可视化复现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
元素周期表的可视化复现

元素周期表的可视化复现

frombokeh.plottingimportfigurefrombokeh.sampledata.periodic_tableimportelementsfrombokeh.transformimportdodge,factor_cmapfrombokeh.ioimportoutput_notebook,show# 在notebook中展示output_notebook()

数据探索

以下数据如果有需要的同学可关注公众号HsuHeinrich,回复【数据可视化】自动获取~

# 导入数据frombokeh.sampledata.periodic_tableimportelements df=elements.copy()df.head()

# 数据预处理# 基本变量periods=["I","II","III","IV","V","VI","VII"]groups=[str(x)forxinrange(1,19)]cmap={"alkali metal":"#a6cee3","alkaline earth metal":"#1f78b4","metal":"#d93b43","halogen":"#999d9a","metalloid":"#e08d49","noble gas":"#eaeaea","nonmetal":"#f1d4Af","transition metal":"#599d7A",}TOOLTIPS=[("Name","@name"),("Atomic number","@{atomic number}"),("Atomic mass","@{atomic mass}"),("Type","@metal"),("CPK color","$color[hex, swatch]:CPK"),("Electronic configuration","@{electronic configuration}"),]df["atomic mass"]=df["atomic mass"].astype(str)df["group"]=df["group"].astype(str)df["period"]=[periods[x-1]forxindf.period]df=df[df.group!="-"]df=df[df.symbol!="Lr"]df=df[df.symbol!="Lu"]

绘制基本的方块图

# 初始化布局p=figure(title="Periodic Table (omitting LA and AC Series)",width=1000,height=450,x_range=groups,y_range=list(reversed(periods)),tools="hover",toolbar_location=None,tooltips=TOOLTIPS)# 添加方格快r=p.rect("group","period",0.95,0.95,source=df,fill_alpha=0.6,legend_field="metal",color=factor_cmap('metal',palette=list(cmap.values()),factors=list(cmap.keys())))show(p)

# 方格上添加文字# 自定义文字属性text_props=dict(source=df,text_align="left",text_baseline="middle")x=dodge("group",-0.4,range=p.x_range)# 调整"group"所在的坐标,使其向左偏移0.4单位# 添加文字p.text(x=x,y="period",text="symbol",text_font_style="bold",**text_props)# 添加symbolp.text(x=x,y=dodge("period",0.3,range=p.y_range),text="atomic number",# 添加atomic numbertext_font_size="11px",**text_props)p.text(x=x,y=dodge("period",-0.35,range=p.y_range),text="name",# 添加nametext_font_size="7px",**text_props)p.text(x=x,y=dodge("period",-0.2,range=p.y_range),text="atomic mass",# 添加atomic masstext_font_size="7px",**text_props)p.text(x=["3","3"],y=["VI","VII"],text=["LA","AC"],text_align="center",text_baseline="middle")# 添加指定文字show(p)

# 调整下布局p.outline_line_color=Nonep.grid.grid_line_color=Nonep.axis.axis_line_color=Nonep.axis.major_tick_line_color=Nonep.axis.major_label_standoff=0p.legend.orientation="horizontal"p.legend.location="top_center"p.hover.renderers=[r]# 指标悬停只在r(之前绘制的矩形方格)上生效show(p)

参考:A rendering of the Periodic table

共勉~

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

Streamlit vs Flask:机器学习可视化Web开发谁更胜一筹?

第一章:Streamlit 机器学习可视化 Web 开发 Streamlit 是一个专为数据科学和机器学习领域设计的开源 Python 框架,能够快速将脚本转化为交互式 Web 应用。它无需前端开发经验,开发者只需编写纯 Python 代码即可构建具备可视化能力的界面&…

作者头像 李华
网站建设 2026/5/28 17:44:15

Asyncio + FastAPI高并发部署方案(生产环境避坑指南)

第一章:Asyncio 高并发系统底层开发在构建高并发网络服务时,Python 的 asyncio 库提供了基于事件循环的异步编程模型,能够以单线程高效处理成千上万的并发连接。其核心在于非阻塞 I/O 与协程调度的结合,使得开发者可以在不依赖多线…

作者头像 李华
网站建设 2026/5/28 17:44:14

3种提升无人机传感器响应速度的C语言编程方法,第2种最隐蔽

第一章:C语言在无人机传感器系统中的核心作用在现代无人机系统中,传感器模块承担着环境感知、姿态检测与飞行控制等关键任务。由于对实时性、资源占用和执行效率的极高要求,C语言成为开发传感器驱动与数据处理逻辑的首选编程语言。其贴近硬件…

作者头像 李华
网站建设 2026/5/28 20:43:14

Folo智能聚合平台:重塑信息管理新范式

在信息爆炸的时代,你是否感到每天都在与碎片化的内容作斗争?Folo作为一款革命性的AI驱动信息聚合平台,正在重新定义我们获取和管理信息的方式。这款开源工具通过智能算法将分散在各处的信息源整合为统一的信息流,帮助用户从繁杂的…

作者头像 李华
网站建设 2026/5/29 0:01:39

从零搭建个人技术博客:使用Markdown写TensorFlow入门教程

从零搭建个人技术博客:使用 Markdown 写 TensorFlow 入门教程 在深度学习的学习道路上,很多人曾经历过这样的窘境:好不容易找到一篇教程,兴冲冲地复制代码运行,结果却卡在环境配置上——“ModuleNotFoundError”、“CU…

作者头像 李华
网站建设 2026/5/28 15:58:13

ERA-GLONASS认证标准:从入门到精通的完整指南 [特殊字符]

ERA-GLONASS认证标准:从入门到精通的完整指南 🚗 【免费下载链接】GOST33464-2015-2.pdf资源介绍 本仓库提供一份关键资源文件:GOST 33464-2015-2.pdf,这是ERA-GLONASS认证标准的英文版。原版为俄文,为方便查阅&#x…

作者头像 李华