首页
/ matplot2tikz 教程:从 matplotlib 到 LaTeX 的平滑过渡

matplot2tikz 教程:从 matplotlib 到 LaTeX 的平滑过渡

2025-05-20 01:08:55作者:田桥桑Industrious

1. 项目介绍

matplot2tikz 是一个 Python 工具,用于将 matplotlib 生成的图形转换为 TikZ/PGFplots 格式,以便无缝集成到 LaTeX 或 ConTeXt 文档中。TikZ/PGFplots 是基于 TeX 的库,可以描述图形的坐标轴、数据等,因此 matplot2tikz 的输出比原始 TikZ 输出更易于理解、编辑和保留更多信息。

2. 项目快速启动

安装

首先,需要安装 Python 和 matplotlib。然后,可以使用 pip 安装 matplot2tikz:

pip install matplot2tikz

创建 matplotlib 图形

使用 matplotlib 创建图形,例如:

import matplotlib.pyplot as plt
import numpy as np

t = np.arange(0.0, 2.0, 0.1)
s = np.sin(2 * np.pi * t)
s2 = np.cos(2 * np.pi * t)

plt.plot(t, s, 'o-', lw=4.1)
plt.plot(t, s2, 'o-', lw=4.1)
plt.xlabel('时间 (s)')
plt.ylabel('电压 (mV)')
plt.title('简单图形')
plt.grid(True)

转换为 TikZ 格式

在 matplotlib 图形上使用 matplot2tikz 的 save 函数将其转换为 TikZ 格式:

import matplot2tikz

matplot2tikz.save('mytikz.tex')

这将生成一个名为 mytikz.tex 的 TikZ 文件。

集成到 LaTeX

将生成的 TikZ 文件内容插入 LaTeX 文档中。确保在文档头部包含 PGFPlots 和适当的 Unicode 支持:

\usepackage[utf8]{inputenc}
\usepackage{pgfplots}
\DeclareUnicodeCharacter{2212}{-}
\usepgfplotslibrary{groupplots,dateplot}
\usetikzlibrary{patterns,shapes.arrows}
\pgfplotsset{compat=newest}

然后,使用 \input 命令将 TikZ 文件内容插入到文档中:

\input{mytikz.tex}

3. 应用案例和最佳实践

清理图形

在导出之前,可以使用 matplot2tikz 的 clean_figure 命令清理图形,例如删除超出坐标轴限制的点、简化曲线和降低点密度:

matplot2tikz.clean_figure()
matplot2tikz.save('mytikz.tex')

使用不同类型的文档

matplot2tikz 可以生成适用于 LaTeX 和 ConTeXt 的输出。可以使用 flavor 参数指定输出类型:

matplot2tikz.save('mytikz.tex', flavor='context')

获取预处理器

可以使用 Flavors 类获取不同类型的文档的预处理器:

import matplot2tikz

matplot2tikz.Flavors.latex.preamble()
matplot2tikz.Flavors.context.preamble()

4. 典型生态项目

matplot2tikz 是一个基于 matplotlib 的项目,因此它适用于任何可以使用 matplotlib 生成图形的场景。例如,可以使用 matplot2tikz 将科学计算、数据分析、机器学习等领域的图形转换为 TikZ 格式,以便在 LaTeX 或 ConTeXt 文档中进行展示和发布。

希望这份教程能够帮助您更好地理解和使用 matplot2tikz。如果您有任何问题或建议,请随时在 GitHub 上提出 issue 或 pull request。

登录后查看全文
热门项目推荐

热门内容推荐

最新内容推荐

项目优选

收起
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
178
262
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
868
513
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
129
183
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
268
308
HarmonyOS-ExamplesHarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
398
373
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.07 K
0
ShopXO开源商城ShopXO开源商城
🔥🔥🔥ShopXO企业级免费开源商城系统,可视化DIY拖拽装修、包含PC、H5、多端小程序(微信+支付宝+百度+头条&抖音+QQ+快手)、APP、多仓库、多商户、多门店、IM客服、进销存,遵循MIT开源协议发布、基于ThinkPHP8框架研发
JavaScript
93
15
note-gennote-gen
一款跨平台的 Markdown AI 笔记软件,致力于使用 AI 建立记录和写作的桥梁。
TSX
83
4
cherry-studiocherry-studio
🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端
TypeScript
599
58
GitNextGitNext
基于可以运行在OpenHarmony的git,提供git客户端操作能力
ArkTS
10
3