Excel で Python を使用してプロットとグラフを作成する
Applies To
Excel for Microsoft 365 Excel for Microsoft 365 for Mac Excel for the web My Office for iPhone Office.comPython in Excel を初めて使用する場合は、 「 Excel での Python の概要 」と「Excel での Python の概要」から始めます。
オープンソースの Python ライブラリを使用してプロットとグラフを作成する
Python in Excel には、Anacondaによって提供される Python ライブラリのコア セットが付属しています。 この記事では、Seaborn や Matplotlib などの Python ライブラリを使用してプロットとグラフを作成する方法について説明します。 Python in Excel で使用できるオープン ソース ライブラリの詳細については、「オープンソース ライブラリと Python in Excel」を参照してください。
この記事の例では、アヤメの花データ セットを使用します。 このサンプル ブックをダウンロードして、「python-in-excel-iris-dataset.xlsx」の記事に従ってください。
Seaborn を使用してペア プロットを作成する
この例では、アヤメの花データ セットのペア プロットの視覚化を作成する方法を示します。 ペア プロットは、データ セット内の各変数間のリレーションシップを比較するプロットとグラフのマトリックスです。 この場合、アヤメの花データ セットには、sepal_length、sepal_width、petal_length、petal_width の 4 つの数値データ列が含まれます。
Excel の Python は 、シーボーンライブラリを使用して視覚化を作成します。 Seaborn ライブラリは、次の import ステートメントを使用して Python in Excel 用として自動的にインポートされ、エイリアス sns を使用して参照できます。
import seaborn as sns
Seaborn ライブラリを使用してアヤメの花データ セットのペア プロットを作成するには、次の手順を実行します。
-
Python in Excel セルに次のコード スニペットを入力します。 このコード スニペットには、ペア プロットが pairplot と呼ばれる変数として格納されます。 これは、Seaborn ライブラリのエイリアス sns と Seaborn 関数 pairplot を使用してペア プロットを作成します。pairplot = sns.pairplot(xl("Table1[#All]", headers=True)) このコード スニペットは、pairplot 関数の引数として、カスタム Python 関数 xl() を使用し、ワークシート内の最初のテーブル Table1 を参照します。 これには、テーブルの内容全体 ([#All] として) が含まれています。また、テーブルにはヘッダー行 (headers=True として) が含まれていることに注意してください。 この例では、ワークシート内の Table1 にアヤメの花データ セットが含まれています。
注: エラーが発生した場合は、「Python in Excel エラーのトラブルシューティング」を参照してください。
-
Python 式をコミットした後、Python in Excel は、画像オブジェクト内のペア プロットの視覚化を返します。 画像オブジェクト セル内のカード アイコンを選択して、視覚化のプレビューを表示します。
-
視覚化を画像オブジェクトとして保持し、Python の計算に引き続き使用します。 画像を Excel グリッドに抽出し、サイズを変更し、各プロットをより詳細に表示します。 グリッドに画像を抽出するには、画像オブジェクトが含まれるセルを右クリックするか Ctrl キーを押しながらクリックし、メニューから [セルの上にプロットを表示] を選択します。
画像オブジェクトの抽出の詳細については、この記事の「Excel グリッドに画像オブジェクトを抽出する」セクションを参照してください。
Matplotlib を使用して散布図を作成する
この例では、アヤメの花のサンプル データ セットを使用して散布図を作成する方法について説明します。 散布図には、データ セット内の 2 つの数値変数間のリレーションシップが示されます。 この例では、sepal_width と sepal_length の値を比較する、次のスクリーンショットのような散布図を作成します。
Excel の Python では、 Matplotlibオープンソース ライブラリを使用して視覚化が作成されます。 Matplotlib ライブラリは、次の import ステートメントを使用して Python in Excel 用として自動的にインポートされ、plt として参照できます。
import matplotlib.pyplot as plt
Matplotlib ライブラリを使用してアヤメの花データ セットの散布図を作成するには、次の手順を実行します。
-
Excel の Python セルで、Matplotlib 散布図関数を使用し、引数として Iris データ セットの 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')
注: このコード スニペットは、前の手順の同じ Excel セル内で Python 式の後に追加のコード行として追加することも、ブック内の新しい Python in Excel セルに入力することもできます。 新しいセルに入力することを選択する場合は、行優先の計算順序ルールに従い、最初のセルの後に入力してください。
-
Python 式をコミットした後、Python in Excel は、散布図の視覚化を画像オブジェクトとして返します。 画像オブジェクト セル内のカード アイコンを選択して、視覚化のプレビューを表示します。
注: エラーが発生した場合は、「Python in Excel エラーのトラブルシューティング」を参照してください。
-
視覚化を画像オブジェクトとして保持し、Python の計算に引き続き使用します。 画像を Excel グリッドに抽出してサイズを変更し、散布図をより詳細に表示します。 グリッドに画像を抽出するには、画像オブジェクトが含まれるセルを右クリックするか Ctrl キーを押しながらクリックし、メニューから [セルの上にプロットを表示] を選択します。
画像オブジェクトの抽出の詳細については、この記事の「Excel グリッドに画像オブジェクトを抽出する」セクションを参照してください。
Excel グリッドに画像オブジェクトを抽出する
この記事の例で示すように、Seaborn や Matplotlib などの Python ライブラリは、Excel セルにデータの視覚化を返すことができます。 既定では、Python in Excel は、これらの視覚化を画像オブジェクトとして返します。
画像オブジェクト セル内のカード アイコンを選択して、視覚化のプレビューを表示します。
Excel グリッドに画像を抽出するには、2 つの方法があります。すなわち、画像をセル上のプロットとして表示するか、セル内に画像を表示します。
セルの上に画像を表示する
次の手順に従い、画像をセルの上のプロットとして表示します。
-
画像オブジェクトが含まれるセルを右クリックするか Ctrl キーを押しながらクリックし、メニューから [セルの上にプロットを表示] を選択します (または、キーボード ショートカット Ctrl + Alt + Shift + C キーを使用します)。 これにより、Excel グリッド上に浮かび、簡単にサイズ変更できる画像のコピーが作成されます。 元の画像オブジェクトは元のセル内に残ります。
-
プロット画像を選択してドラッグし、ワークシートの周囲に移動します。 画像の角と辺にあるノードを選択してドラッグし、サイズを変更します。
セル内に画像を表示する
セル内に画像を表示するには、次の手順に従います。
-
画像オブジェクトを Excel 値として返します。 画像オブジェクトのセルを選択し、数式バー内の [Python 出力] メニューに移動し、[Excel 値] を選択します。
プロット画像がセル内に表示されるようになりました。ヒント: Python オブジェクトと Excel 値の間で Python 式の結果を切り替えるには、キーボード ショートカット Ctrl + Alt + Shift + M を使用します。 キーボード ショートカットの詳細については、「Python in Excel のキーボード ショートカット」を参照してください。
-
プロット画像のサイズは、セルのサイズによって異なります。 セルのサイズを大きくするか、セルをマージして、画像のサイズを大きくします。
英語以外の言語に異なるフォントを使用する
中国語、韓国語、タイ語などのラテン語以外のアルファベット文字を使用するデータをグラフ化するには、excel.FontPath を使用します。 既定では、Python in Excel では、ラテン語以外のアルファベット文字が空の四角形 ('□') としてレンダリングされます。 これを解決するために、excel.FontPath を使用すると、excel モジュールを使用して別のフォントを呼び出し、文字をレンダリングできます。
次のフォントを使用できます。 この属性は、Python コード内の excel.FontPath に追加されます。 このパスは、この属性によって呼び出されたフォント ファイルを参照します。
属性 |
パス |
---|---|
BENGALI |
/usr/share/fonts/Vrinda.ttf |
簡体中国語 |
/usr/share/fonts/SimSun.ttf |
繁体中国語 |
/usr/share/fonts/MingLiU.ttf |
HINDI |
/usr/share/fonts/Mangal.ttf |
JAPANESE |
/usr/share/fonts/Meiryo.ttf |
KOREAN |
/usr/share/fonts/Batang.ttf |
THAI |
/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()