在 Excel 绘图和图表中创建 Python
Applies To
Microsoft 365 专属 Excel从版本 2407 (内部版本 17830.20128) 开始,Excel 中的 Python 正在向在 Windows 上运行当前频道的企业和企业用户推出。 从版本 2405(内部版本 17628.20164)开始,它面向在 Windows 上运行当前频道的家庭和个人用户提供预览版。 Excel 中的 Python 面向通过 Microsoft 365 会员计划运行当前频道(预览版)的教育版用户提供预览版。 它目前不适用于每月企业频道或 Semi-Annual 企业频道。
它将首先推出到 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。
本文中的示例使用 Iris 花数据集。 下载此示例工作簿,并遵循以下文章: 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 函数 对plot 创建对图。 pairplot = sns.pairplot(xl("Table1[#All]", headers=True)) 作为 pairplot 函数的参数,代码片段使用自定义 Python 函数 xl () 并引用工作表中的第一个表 Table1。 它包括整个表内容 (为 [#All]) ,并指出表包含标题行 (标头= True) 。 在此示例中,工作表中的 Table1 包含 Iris 数据集。
注意: 如果遇到任何错误,请参阅 排查 Excel 中的 Python 错误 ,了解详细信息。
-
提交 Python 公式后,Excel 中的 Python 将在图像对象中返回对图可视化效果。 选择图像对象单元格中的卡图标以查看可视化效果的预览。
-
将可视化效果保留为 Image 对象,以继续使用它进行 Python 计算。 将图像提取到 Excel 网格以调整其大小并更详细地查看每个绘图。 若要将图像提取到网格中,请右键单击或 Ctrl+单击包含图像对象的单元格,然后从菜单中选择“ 在单元格上显示绘图”。
有关提取图像对象的其他信息,请参阅本文中的 将图像对象提取到 Excel 网格 一文部分。
使用 Matplotlib 创建散点图
此示例介绍如何使用鸢尾花样本数据集创建散点图。 散点图显示数据集中两个数值变量之间的关系。 该示例创建类似于以下屏幕截图的散点图,比较 了sepal_width 值和 sepal_length 值。
Excel 中的 Python 使用 Matplotlib开源库创建可视化效果。 Matplotlib库会自动在 Excel 中使用以下 import 语句为 Python 导入,以便将其引用为 plt。
import matplotlib.pyplot as plt
若要使用 Matplotlib 库创建鸢尾花数据集的散点图,请执行以下步骤:
-
在 Excel 中的 Python 单元格中,使用 matplotlib 散点函数并输入 Iris 数据集的sepal_length 和 sepal_width 列作为参数。 在此示例中,工作表中的 Table1 包含 Iris 数据集。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 网格
如本文中的示例所示,seaborn 和 Matplotlib 等 Python 库可以将数据可视化效果返回到 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 |
CHINESE_SIMPLIFIED |
/usr/share/fonts/SimSun.ttf |
CHINESE_TRADITIONAL |
/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 |
胜过。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() |