创建 Excel 中的 Python 绘图和图表
Applies To
Microsoft 365 专属 Excel从版本 2407(内部版本 17830.20128)开始,Excel 中的 Python 可供在 Windows 上运行当前频道的企业和企业用户使用。从版本 2408(内部版本 17928.20216)开始,在 Windows 上运行每月企业频道的企业和企业用户可以使用 Excel 中的 Python。从版本 2405(内部版本 17628.20164)开始,它面向在 Windows 上运行当前频道的家庭和个人用户提供预览版。 Excel 中的 Python 面向通过 Microsoft 365 会员计划运行当前频道(预览版)的教育版用户提供预览版。 它目前不适用于半年企业频道。
它将首先推出到 Excel for Windows,然后在以后推出到其他平台。 有关更多可用性信息,请参阅 Excel 中的 Python 的可用性。
如果在使用 Excel 中的 Python 时遇到任何问题,请通过在 Excel 中选择帮助 > 反馈来报告这些问题。
不熟悉 Excel 中的 Python? 从 Excel 中的 Python 简介和 Excel 中的 Python 入门开始。
使用开源 Python 库创建绘图和图表
Excel 中的 Python 附带一组由 Anaconda提供的核心 Python 库。 本文将介绍如何使用 Python 库(如 seaborn和 matplotlib)创建绘图和图表。 若要详细了解 Excel 中的 Python 可用的开源库,请参阅开源库和 Excel 中的 Python。
本文中的示例使用了鸢尾花数据集。 下载此示例工作簿,与文章一起配合参考:python-in-excel-iris-dataset.xlsx。
使用 seaborn 创建配对绘图
此示例将演示如何创建鸢尾花数据集的配对绘图的可视化效果。 配对绘图是绘图和图表的矩阵,用于比较数据集中每个变量之间的关系。 在这种情况下,鸢尾花数据集包含四列数值数据:sepal_length、sepal_width、petal_length 和 petal_width。
Excel 中的 Python 将使用 seaborn 库创建可视化效果。 将使用以下导入语句为 Excel 中的 Python 自动导入 seaborn库,以便使用别名 SNS 引用它。
import seaborn as sns
要使用 seaborn 库创建鸢尾花数据集的配对绘图,请执行以下步骤:
-
在 Excel 单元格的 Python 中输入以下代码片段。 此代码片段会将配对绘图存储为名为 pairplot 的变量。 它将使用 seaborn 库(别名 sns)和 seaborn 函数 pairplot 创建配对绘图。 pairplot = sns.pairplot(xl("Table1[#All]", headers=True)) 作为 pairplot 函数的参数,此代码片段会使用自定义 Python 函数 xl(),并引用工作表中的第一个表 Table1。 它将包括整个表的内容(如 [#All]),并表明该表包含标题行(如 headers=True)。 在此示例中,工作表中的 Table1 包含鸢尾花数据集。
注意: 如果遇到任何错误,请参阅排查 Excel 中的 Python 错误了解详细信息。
-
提交 Python 公式后,Excel 中的 Python 将返回图像对象中的配对绘图可视化效果。 你可以选择图像对象单元格中的卡片图标以查看可视化效果的预览。
-
将可视化效果保留为图像对象,以继续将其用于 Python 计算。 将图像提取到 Excel 网格以调整其大小,并详细地查看每个绘图。 若要将图像提取到网格,请右键单击或按 Ctrl+单击包含图像对象的单元格,然后从菜单中选择在单元格上显示绘图。
有关提取图像对象的其他信息,请参阅本文将图像对象提取到 Excel 网格文章部分。
使用 Matplotlib 创建散点图
本示例将介绍如何使用鸢尾花样本数据集创建散点图。 散点图将显示数据集中两个数值变量之间的关系。 该示例创建类似于以下屏幕截图的散点图,比较 sepal_width 值和 sepal_length 值。
Excel 中的 Python 将使用 Matplotlib 开源库创建可视化效果。 将使用以下导入语句为 Excel 中的 Python 自动导入 Matplotlib库,你可以通过 plt 引用它。
import matplotlib.pyplot as plt
要使用 Matplotlib 库创建鸢尾花数据集的散点图,请执行以下步骤:
-
在 Excel 单元格中的 Python 中,使用 matplotlib scatter 函数,并输入鸢尾花数据集的 sepal_length 和 sepal_width 列作为参数。 在此示例中,工作表中的 Table1 包含鸢尾花数据集。plt.scatter(xl("Table1[sepal_length]"), xl("Table1[sepal_width]"))
-
将标签和标题添加到散点图。 # Label the x and y axes of the plot. plt.xlabel('sepal_length') plt.ylabel('sepal_width') # Add a title to the plot. plt.title('Sepal length and width analysis')
注意: 你可以将此代码片段添加为上一步中的 Python 公式后的附加代码行,在同一 Excel 单元格中,也可以在工作簿的 Excel 单元格中的新 Python 中输入它。 如果选择在新单元格中输入它,请确保遵循行主计算顺序规则,并在第一个单元格后输入它。
-
提交 Python 公式后,Excel 中的 Python 将以图像对象形式返回散点图可视化效果。 你可以选择图像对象单元格中的卡片图标以查看可视化效果的预览。
注意: 如果遇到任何错误,请参阅排查 Excel 中的 Python 错误了解详细信息。
-
将可视化效果保留为图像对象,以继续将其用于 Python 计算。 将图像提取到 Excel 网格以调整其大小,并详细地查看绘图。 若要将图像提取到网格,请右键单击或按 Ctrl+单击包含图像对象的单元格,然后从菜单中选择在单元格上显示绘图。
有关提取图像对象的其他信息,请参阅本文将图像对象提取到 Excel 网格文章部分。
将图像对象提取到 Excel 网格
如本文中的示例所示,Python 库(如 seachron 和 Matplotlib)可以将数据可视化效果返回到 Excel 单元格。 默认情况下,Excel 中的 Python 会将这些可视化效果作为图像对象返回。
选择图像对象单元格中的卡片图标以查看可视化效果的预览。
可通过两种方法将图像提取到 Excel 网格:将图像显示为单元格上的绘图或在单元格中显示图像。
在单元格上显示图像
请按照以下步骤将图像显示为单元格上的绘图。
-
右键单击或按 Ctrl+单击包含图像对象的单元格,然后从菜单中选择在单元格上显示绘图(或使用快捷方式 Ctrl+Alt+Shift+C)。 这会创建图像的副本,该副本将浮在 Excel 网格上,并且可以轻松调整大小。 原始图像对象将保留在原始单元格中。
-
选择并拖动绘图图像,可以使其在工作表中移动。 选择并拖动图像四角和侧面的节点,即可调整图像大小。
在单元格中显示图像
请按照以下步骤在单元格中显示图像。
-
将图像对象作为 Excel 值返回。 选择图像对象单元格,转到编辑栏中的 Python 输出菜单,然后选择 Excel 值。
绘图图像即可显示在单元格中。提示: 要在 Python 对象和 Excel 值之间切换 Python 公式结果,请使用快捷方式 Ctrl+Alt+Shift+M。 如需了解更多快捷方式,请参阅 Excel 中的 Python 快捷方式。
-
绘图图像的大小取决于单元格的大小。 你可通过增大单元格或合并单元格来增加图像的大小。
创建自己的绘图和图表
你已了解如何使用示例数据集创建 Excel 中的 Python 绘图和图表,现在你可以在 Excel 工作簿中输入自己的数据并创建自定义可视化效果。
若要导入外部数据供 Excel 中的 Python 使用,请使用 Power Query。 若要详细了解这一点,请参阅使用 Power Query 为 Excel 中的 Python 导入数据。
对非英语语言使用不同的字体
若要绘制使用非拉丁字母字符(如中文、韩语或泰语)的数据图表,请使用 excel.FontPath。 默认情况下,Excel 中的 Python 将非拉丁字母字符呈现为空正方形(“□”)。 若要解决此问题,excel.FontPath 可以使用 excel 模块调用其他字体并呈现字符。
以下字体可用。 在 Python 代码中,该属性会附加到 excel.FontPath 上。 路径将引用属性调用的字体文件。
属性 |
路径 |
---|---|
孟加拉语 |
/usr/share/fonts/Vrinda.ttf |
简体中文 |
/usr/share/fonts/SimSun.ttf |
繁体中文 |
/usr/share/fonts/MingLiU.ttf |
印地语 |
/usr/share/fonts/Mangal.ttf |
日语 |
/usr/share/fonts/Meiryo.ttf |
韩语 |
/usr/share/fonts/Batang.ttf |
泰语 |
/usr/share/fonts/THSarabunPSK.ttf |
excel.FontPath 示例
之前
此图表无法呈现正确的绘图标签,因为默认字体不支持提供的字符。
不正确呈现图表标签的代码示例:
import matplotlib.pyplot as plt # Make the plot. myplot = pd.DataFrame({'欧文': [1,2,3], '比尔': [1,2,3]}).plot(x='欧文') # Show the plot. plt.show() |
段后
若要修复本示例中的图表标签,请使用 excel.FontPath.CHINESE_SIMPLIFIED 正确呈现提供的中文字符。
正确呈现图表标签的代码示例:
import matplotlib.pyplot as plt from matplotlib.font_manager import FontProperties # Set the font path. # Returns '/usr/share/fonts/simsun.ttf' font_path = excel.FontPath.CHINESE_SIMPLIFIED # Point the properties to the font path. font_properties = FontProperties(fname=font_path) plt.rcParams['font.family'] = font_properties.get_name() # Make the plot. myplot = pd.DataFrame({'欧文': [1,2,3], '比尔': [1,2,3]}).plot(x='欧文') # Show the plot. plt.show() |