使用 Excel 中的 Python 建立繪圖和圖表
套用到
Excel 中的 Python 現在可供在 Windows 上執行目前通道之企業和商務使用者使用 (從版本 2408 (組建 17928.20114) 開始),以及在 Windows 上執行每月企業通道的使用者使用 (從版本 2408 (組建 17928.20216) 開始)。 企業版和商務版使用者也可在 Excel 網頁版中使用該功能。 從版本 2405 (組建 17628.20164) 開始,Excel 網頁版或在 Windows 上執行目前通道的家用版和個人版使用者,都可以使用 Excel 中的 Python 預覽版。 透過 Microsoft 365 測試人員計劃,該功能的預覽版可供執行目前通道 (預覽) 的教育版使用者使用。 其目前不適用於半年企業通道。
從版本 16.96 (組建 25041326) 開始,在 Mac 版 Excel 上執行目前通道的企業和商務使用者都可以使用 Excel 中的 Python。 透過 Microsoft 365 測試人員計畫,可在 Mac 版 Excel 上為家庭和個人使用者預覽。 選擇 Beta 版通道測試人員層級,並安裝 Excel 的最新組建; 從版本 16.95 (組建 25021921) 開始提供。
如需可用性的詳細資訊,請參閱 Excel 中的 Python 可用性。 如果您在使用 Excel 中的 Python 時遇到任何問題,請選取 Excel 中的 [說明] > [意見反應] 來回報問題。
第一次使用 Excel 中的 Python 嗎? 請先參閱 Excel 中的 Python 簡介和開始使用 Excel 中的 Python。
使用開放原始碼 Python 文件庫建立繪圖和圖表
Excel 中的 Python 隨附由 Anaconda 提供的 Python 核心文件庫集。 本文說明如何使用 Seaborn 和 Matplotlib 等 Python 文件庫來建立繪圖和圖表。 若要深入了解 Excel 中 Python 提供的開放原始碼文件庫,請參閱 開放原始碼文件庫 和 Excel 中的 Python。
本文中的範例是使用鳶尾花朵資料集。 下載此範例活頁簿,並依照下列文章的指示: python-in-excel-iris-dataset.xlsx。
使用 Seaborn 建立配對繪圖
此範例示範如何建立鳶尾花朵資料集的配對繪圖視覺效果。 配對繪圖是一組繪圖和圖表矩陣,可比較資料集中每個變數之間的關係。 在此情況下,鳶尾花朵資料集包含四欄的數值資料:sepal_length、sepal_width、petal_length 和 petal_width。
Excel 中的 Python 會使用 Seaborn 文件庫建立視覺效果。 Seaborn 文件庫會自動匯入 Excel 中的 Python,並附下列匯入陳述式,讓您以 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 方格
如本文範例所示,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.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 |
使用 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()