使用 Excel 中的 Python 建立繪圖和圖表

套用到
Microsoft 365 Excel Mac 版 Microsoft 365 Excel

關於可用性資訊,請參閱 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_lengthsepal_widthpetal_lengthpetal_width

使用 Excel 中的 Python 建立具有 Seaborn 文件庫的配對繪圖。

Python 在 Excel 裡用 seaborn 函式庫來建立視覺化。 Seaborn 函式庫會自動匯入 Python 的 Excel 裡,並透過以下匯入語句來引用,並使用別名 SNS 來參考。

import seaborn as sns

若要使用 Seaborn 文件庫建立鳶尾花朵資料集的配對繪圖,請執行下列步驟:

  1. 在 Excel 中的 Python 儲存格中輸入下列程式碼片段。 程式碼片段會將配對繪圖儲存為稱為 pairplot 的變數。 它會建立與 seaborn 函式庫別名 sns 以及 seaborn 函數 配對圖的對圖。

    pairplot = sns.pairplot(xl("Table1[#All]", headers=True))

    作為 pairplot 函數的參數,程式碼片段使用自訂的Python函式 xl () ,並參考工作表中的第一個表格 Table1。 它包含整個資料表內容 (為 [#All]),以及資料表包含標題列 (為 headers=True) 的記事。 在此範例中,工作表中的 Table1 包含鳶尾花朵資料集。

    在 DataFrame 中查看配對繪圖預覽。

    注意

    如果您遇到任何錯誤,請參閱對 Excel 中的 Python 錯誤進行疑難排解,以取得詳細資訊。

  2. 確認您的 Python 公式之後,Excel 中的 Python 會傳回影像物件中的配對繪製視覺效果。 選取影像物件儲存格中的卡片圖示,以查看視覺效果的預覽。

    在 DataFrame 卡片中查看繪圖預覽。

  3. 將視覺效果保留為影像物件,以繼續用於 Python 計算。 將影像擷取到 Excel 方格以調整其大小,並更詳細地檢視每一個繪圖。 若要將影像擷取到方格,請以滑鼠右鍵按一下或 Ctrl+單擊包含影像物件的儲存格,然後從功能表中選取 [在儲存格上方顯示繪圖]

    若需要擷取影像物件的更多資訊,請參閱本文擷取影像物件到 Excel 方格中的文章部分。

使用 Matplotlib 建立散佈圖

本範例說明如何使用鳶尾花朵範例資料集建立散佈圖。 散佈圖顯示資料集中兩個數值變數之間的關係。 範例中會產生一個散點圖,看起來像以下截圖,比較 sepal_widthsepal_length 值。

使用 Excel 中的 Python 建立包含 matplotlib 文件庫的散佈圖。

Python 在 Excel 中使用 Matplotlib 開源函式庫來建立視覺化。 Matplotlib 函式庫會自動匯入 Python 的 Excel 中,並透過以下匯入說明式,讓你以 pt 來參考。

import matplotlib.pyplot as plt

若要使用 Matplotlib 文件庫建立鳶尾花朵資料集的散佈圖,請採取下列步驟:

  1. 在 Python 的 Excel 儲存格中,使用 Matplotlib 散佈 函式,並將 Iris 資料集的 sepal_length 欄和 sepal_width 欄作為參數輸入。 在此範例中,工作表中的 Table1 包含鳶尾花朵資料集。

    plt.scatter(xl("Table1[sepal_length]"), xl("Table1[sepal_width]"))

  2. 在散佈圖中新增標籤和標題。

    # 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 儲存格中輸入它。 如果您選擇在新的儲存格中輸入,請務必遵循列優先順序計算順序規則,在第一個儲存格後方輸入。

  3. 在認可您的 Python 公式之後,Excel 中的 Python 會將散佈圖視覺效果作為影像物件傳回。 選取影像物件儲存格中的卡片圖示,以查看視覺效果的預覽。

    在 DataFrame 中檢視散佈圖的預覽。

    注意

    如果您遇到任何錯誤,請參閱對 Excel 中的 Python 錯誤進行疑難排解,以取得詳細資訊。

  4. 將視覺效果保留為影像物件,以繼續用於 Python 計算。 將影像擷取到 Excel 方格以調整其大小,並更詳細地檢視繪圖。 若要將影像擷取到方格,請以滑鼠右鍵按一下或 Ctrl+單擊包含影像物件的儲存格,然後從功能表中選取 [在儲存格上方顯示繪圖]

    若需要擷取影像物件的更多資訊,請參閱本文擷取影像物件到 Excel 方格中的文章部分。

將影像物件擷取到 Excel 方格

如本文範例所示,Seaborn 和 Matplotlib 等 Python 文件庫可以將資料視覺效果傳回 Excel 儲存格。 根據預設,Excel 中的 Python 會將這些視覺效果作為影像物件傳回。

選取影像物件儲存格中的卡片圖示,以查看視覺效果的預覽。

在 DataFrame 卡片中查看繪圖預覽。

將影像擷取至 Excel 方格的方法有兩種:將影像顯示為在儲存格上方繪製,或在儲存格內顯示影像。

在儲存格上方顯示影像

請依照下列步驟,將影像顯示為在儲存格上方繪製。

  1. 以滑鼠右鍵按一下或 Ctrl+單擊包含圖像物件的儲存格,然後從功能表選取 [在儲存格上方顯示繪圖] (或使用快速鍵 Ctrl+Alt+Shift+C)。 這會建立一份影像複本,該影像會在 Excel 方格上浮動,而且可以輕鬆地重設大小。 原始影像物件會保留在原始儲存格中。

  2. 選取並拖曳繪圖影像以在工作表中移動它。 選取並拖曳影像角落和側邊的節點,以調整其大小。

    使用 [建立參照] 圖示建立浮動繪圖視覺效果。

在儲存格中顯示影像

請依照下列步驟在儲存格中顯示影像。

  1. 將影像物件作為 Excel 值傳回。 選取影像物件儲存格,移至資料編輯列中的 [Python 輸出] 功能表,然後選取 [Excel 值]

    使用 [資料編輯列] 旁的 Python 輸出選單來變更輸出類型。

    繪圖影像現在會顯示在儲存格內。

    秘訣

    若要在 Python 物件和 Excel 值之間切換 Python 公式結果,請使用快速鍵 Ctrl+Alt+Shift+M。 想了解更多鍵盤快捷鍵,請參考 Excel 中的 Python 鍵盤快捷鍵

  2. 繪製圖像的大小取決於儲存格的大小。 透過增加格子大小或 合併格子來增加影像大小。

針對非英文的語言使用不同的字型

若要繪製使用非拉丁字母(如中文、韓文或泰文)的資料,請使用 excel.FontPath。 根據預設,Excel 中的 Python 會將非拉丁音義符號轉譯為空白方格 (□)。 為了解決這個問題, excel.FontPath 允許你用 excel 模組呼叫不同的字型並渲染字元。

下列字型可供使用。 屬性會附加 excel.FontPath 在你的 Python 程式碼中。 路徑是指以屬性呼叫的字型檔案。

屬性 路徑
孟加拉文 /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

用Excel。FontPath 顯示簡體中文情節標籤

以下截圖展示了一張圖表,劇情標籤以簡體中文標示,使用。excel.FontPath 截圖後的程式碼範例展示了如何顯示 excel.FontPath.CHINESE_SIMPLIFIED 簡體中文庫中的字元。

具有正確呈現字元的圖表

使用 Excel.FontPath 的範例程式碼

此程式碼範例展示了如何生成 excel.FontPath.CHINESE_SIMPLIFIED 劇情及前述截圖中顯示的劇情標籤中的簡體中文漢字。

-

import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties

# Set the font path. This 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()