如何在 LaTeX 中将样式器写入文件、缓冲区或字符串?

使用 Pandas 库的方法 Styler.to_Latex 可以轻松将 Styler 转换为 LaTeX。此方法将 pandas 对象作为输入,设置其样式,然后从中渲染 LaTeX 对象。

新创建的 LaTeX 输出可以在 LaTeX 编辑器中进行处理并进一步使用。

LaTeX 是一种用于科学研究、论文写作和报告格式化的纯文本格式。我们可以使用 LaTeX 编辑器创建演示文稿、求职信等模板。

在这篇文章中,我们将研究如何借助 Styler 类将数据帧转换为 Latex 格式。

相关:从数据帧渲染 LaTeX 对象。

什么是造型器?

Styler 类主要用于对表格形式的任何数据进行可视化或样式化。

它可用于向数据框添加颜色,使其看起来更漂亮。样式数据框可以导出为 HTML 文件、LaTeX 文件、Excel 文件等。

请访问这篇文章以了解 Pandas 数据框架。

Styler 类可以通过使用名为 的属性来实现.style

使用 Styler 对象时需要注意的一点是,应在数据框最终确定后应用它。因为如果在启动类后对数据框进行任何更改,则 Styler 对象不会更新。

您可以使用 Styler 做很多事情。通过添加彩色边框和单元格,它可以使看起来沉闷的数据框变成漂亮的东西。

除了装饰之外,样式器类还用于可视化数据框。使用 Styler,您可以添加条形图、图表等。

让我们看一个如何使用 Styler 类的示例。

import pandas as pd
res = {'Name': ['Arun','Arjun','Bhavya','Chaitra','Deeksha','Fathima','Ganga'],
          'Subject': ['Physics', 'Maths', 'Chemistry', 'History', 'Maths', 'English', 'Civics'],
      'Marks': [82, 93, 84, 68, 91, 45, 56]}
df = pd.DataFrame(res)
df

第一行导入的 panda 库用于将名为 的字典转换res为名为 的数据框df

该数据框包含七名学生的姓名、科目和分数。

在设计样式之前,让我们先看看数据框。

数据框

让我们添加背景颜色和单元格的颜色,使其更有趣。

df.style.set_properties(**{'background-color': 'yellow',
                           'color': 'red'})

我们使用该df.style属性为背景和每个单元格添加颜色。

样式数据框

现在让我们看看如何使用此 Styler 类并在将数据框转换为 LaTeX 格式之前对其进行样式设置。

Styler 到 LaTeX 方法解释

该方法的语法如下。

Styler.to_latex(buf=None, *, column_format=None, position=None, position_float=None, hrules=None, clines=None, label=None, caption=None, sparse_index=None, sparse_columns=None, multirow_align=None, multicol_align=None, siunitx=False, environment=None, encoding=None, convert_css=False)
争论 描述 默认值/类型 必要性
缓冲区 就像 hrules
用于在列的开头、列的末尾、甚至索引之间添加垂直线
没有任何 必需的
列格式 如果该列是数字列,则使用“r”对其进行格式化
对于每隔一个列,使用“l”
斯特 选修的
位置 这个参数要放在 \begin() LaTeX 文档中的之后
它是表格的位置参数
斯特 选修的
浮动位置 指定表格的位置
可以是 {“centering”, “raggedleft”, “raggedright” } 中的任何一个但设置为 longtable
时不能使用environment
斯特 选修的
赫鲁斯 Styler 类的标志变量,用于使用 booktabs 包的 toprule、midrule 和 Bottomrule 在 LaTeX 文档中给出水平线 布尔/假 选修的
克莱恩斯 就像 hrules
用于在列的开头、列的末尾甚至索引之间添加垂直线
斯特 选修的
标签 您想要放置在 \label() LaTeX 文档中的标签 斯特 选修的
标题 用于为输出提供标题语法
是 \caption[short_caption]{full_caption} 这样的,如果仅传递一个字符串,则不会设置短标题
字符串,元组 选修的
稀疏索引 该参数决定是否应稀疏分层数据
当设置为 True(默认值)时,重复的索引每组仅显示一次
布尔/真 选修的
多行对齐 就像 hrules
用于在列的开头、列的末尾、甚至索引之间添加垂直线
C 选修的
多列对齐 用于对齐分布在多条水平线上的列 r 选修的
西尤尼克斯 该参数用于根据 siunitx 包构建或格式化 LaTeX 表 布尔/假 必需的
编码 buf 当参数具有将输出写入的文件路径时使用此字段 
在编码中,原始消息或字符串以其他形式写入以避免误用
UTF-8 选修的
环境 使用此字段时,它会替换 \\begin{table} 的开头
。设置 None 时,不会替换任何内容
字符串/无 选修的
转换CSS 用于将任意 CSS 代码转换为 LaTeX 格式
当未找到 CSS 时,该表格将被删除
布尔/假 选修的
Styler 与 LaTeX 的参数

让我们看一下这种方法的几个例子。

为 LaTeX 编写一个简单的样式器

在此示例中,我们将从 CSV 文件创建一个数据框,对其进行样式设置,然后从中获取一个 LaTeX 表。

请参阅本文以了解如何将 CSV 文件读入数据框中。

我们要使用的数据集是糖尿病数据集,它有 8 个标签和一个预测变量,用于根据一个人的 BMI、血糖水平等对是否患有糖尿病进行分类。我们稍后将查看这个数据集。

让我们在设置样式之前查看代码和数据框。

import pandas as pd
df = pd.read_csv("diabetes.csv")
df.head(10)

在这里,导入 Pandas 库以便能够将 CSV 文件读取到数据框中。在下一行中,我们正在初始化一个对象来存储通过 获得的数据帧pd.read_csv该对象名为 df。

下一行很有趣。df.head()默认情况下用于打印大型数据集的前五行。但它是可定制的;这里我们尝试打印数据框的前 10 行。同样,您还可以尝试df.tail()打印数据框的最后几行。

让我们看看数据框。

数据框

现在让我们看看如何设计这个无聊的数据框的样式。

print(df
  .head(10).style.set_properties(
     **{"tiny": "--latex--rwrap"}
  ).to_latex(label="Diabetes dataset"))

在上面的代码中,我们尝试对数据框的前 10 行应用样式。style是 Styler 类的实例。我们正在尝试使用该方法将字体大小设置为很小set_properties

在该.to_latex方法中,我们还提供了要包含在 LaTeX 表中的标签。

首先,让我们看看这段代码的输出。

造型器到乳胶

看到输出后担心吗?让我们尝试将这个输出放入 LaTeX 编辑器中,看看会发生什么。

乳胶表

当您尝试在编辑器中合并通过 styler 生成的 LaTeX 代码时,可能会出现一些警告。我们需要包含在编辑器中获得所需输出所需的任何包。

将样式器写入 LaTeX 并突出显示最小值 和最大值

在此示例中,我们将采用具有不同类型数值数据类型(整数和浮点数)的数据框,并突出显示每列的最大值和最小值。

import pandas as pd
df = pd.DataFrame([[1, 2.2], [3, 4.4], [2, 6.6]],
                  index=["i1", "i2", "i3"],
                  columns=["Integers", "Floats"])
s = df.style\
    .highlight_max(props='background-color: #F5B041; color: #FFFFFF; font-weight: bold;')\
    .highlight_min(props='background-color: #3498DB; color: #FFFFFF; font-weight: bold;')
s.to_latex(caption="Types of Numbers")

在前两行中,我们导入 Pandas 库并根据数字、索引和列名值的字典创建数据框。该数据框名为 df。

接下来,我们创建一个变量 s 来存储在 的帮助下创建的样式数据框.style我们尝试将表中的最大数字涂成橙色,将最小数字涂成蓝色。表元素的颜色是白色。我们还用粗体书写元素。颜色用它们各自的颜色代码指定。

这是使用 Styler 类。现在我们需要使用这个样式的数据框来生成乳胶表。我们还添加了表格的标题。

Styler 到 LaTeX 带标题

让我们看看 LaTeX 表。

颜色编码乳胶桌

很酷不是吗?您甚至可以自定义颜色、添加更多数据并使其更具视觉吸引力。

将 Styler 写入 LaTeX 并将其存储在文件中

这个例子也将是相同的。但我们不会尝试将输出存储在 .tex 文件中,而是在笔记本中以单元格的形式显示输出。

import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]})
s = df.style.highlight_max(axis=None,
                           props='cellcolor:{red}; bfseries: ;')
with open('output1.tex', 'w') as f:
    f.write(s.to_latex())

像往常一样,我们导入了 pandas 的库以开始使用数据框。我们获取的数据框由 9 个值组成,样式器代码应该用红色突出显示最大值。

接下来,我们创建一个名为 output1.tex 的新文件,将输出写入其中。该文件简称为 f。该文件是在您的环境中创建的,名称为output1.tex

让我们看看该文件。

造型器到 LaTeX 文件

现在让我们尝试在 LaTeX 编辑器中编写此输出。

乳胶表

由于最大的数字是 9,因此它被标记为红色。所有其他数字保持不变。

概括

总结这篇文章,我们已经了解了如何在 Styler 类的帮助下将相同的旧无聊数据框架美化为更有趣的东西。Styler 类是 Pandas 库的一个工具,用于设置 pandas 对象的样式。我们不能直接使用它,但可以实例化一个名为 style 的对象来实现它的属性。我们已经通过示例了解了 Styler 类的用法。

在此示例中,我们使用了一个看起来暗淡的数据框来创建一个彩色且结构化的数据框。

在这篇文章中,我们学习了如何使用方法从 styler 数据框中渲染 LaTeX 表Styler.to_latexLaTeX 本身就是一个非常强大的书写工具。与 MSWord 和其他文本编辑器等普通写作工具不同,您可以使用 LaTeX 编辑器编写代码来开发文档!这也是撰写科学和数学研究论文、大学水平文档甚至求职信的一种非常复杂的方法。

接下来,我们已经了解了该方法的语法和参数 – Styler.to_latex在本节中,我们讨论了语法中的每个参数并了解了其默认值。

接下来,我们看到了该方法的几个示例。

在第一个示例中,我们获取了一个 CSV 文件,将其读入数据框,并设置了该数据框的样式。然后将该数据框渲染到 LaTeX 表中。我们使用字体大小设置了该数据框的样式tiny

在第二个示例中,我们采用了具有数值数据类型(整数和浮点数)的数据框。使用此数据框,我们创建了一个 Styler 对象,它突出显示数据框的最大值和最小值。使用此处获得的输出,我们创建了一个 LaTeX 文档。

在上一个示例中,我们采用了一个简单的数据框,其样式以突出显示最大值的方式进行。但为了进行更改,我们已将此输出存储在文件中。要记住的一件事是,当我们尝试为 LaTeX 文档创建文件时,应使用 .tex 扩展名保存该文件。我们在 LaTeX 编辑器中使用了这个输出,并从中获得了一个表格。

参考

要了解有关 Styler 类的更多信息,请参阅 Pandas 官方文档。

您可以在此处找到本文中使用的数据集。

您可以在此处找到有关本文中讨论的方法的更多信息。

想亲自尝试一下上面的例子吗?

另外,请查看此网站以获取标准颜色代码。