PythonでExcelに書かれているデータから表を作成する方法を紹介します。これができると見やすい表を作れること間違いなしですね。
グラフを作るときにはいろんなオブジェクトが登場します。グラフのタイトルや位置やサイズをどのオブジェクトに持たせるのかを確認しながら進めていきましょう。
これから紹介するコードは以下のコードの続きになると考えてください。シートまで開いた状態からのスタートになります。
1 2 3 4 5 6 7 8 9 |
import openpyxl path = r"C:\Documents\sample.xlsx" wb = openpyxl.load_workbook(path) sheet = wb['シート1'] #この続きのコードを紹介します。 #最後は必ず保存します。 wb.save(path) |
PythonでExcelにグラフを張り付ける4STEP
全体のコードは以下のようになります。このコードを上から順に解説していきます。また、今回グラフにするデータは画像を確認してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#1.領域を指定 ref_obj = chart.Reference(ws, min_col=2, min_row=3, max_col=2, max_row=12 ) #2.グラフタイトルを決める ser_obj = chart.Series(ref_obj, title='得点') #3.グラフの種類を決める chart_obj = chart.AreaChart3D() chart_obj.append(ser_obj) #4.グラフをシートに張り付ける ws.add_chart(chart_obj, 'D4') #保存 wb.save(path) |
STEP1.データ領域を指定
- Referenceオブジェクトを作成
- 引数にワークシートとデータ領域を渡す
- データ領域は一行または一列
1 2 3 4 5 |
#1.データ領域を指定 ref_obj = chart.Reference(ws, min_col=2, min_row=3, max_col=2, max_row=12 ) |
行や列の指定は数値で行い、列名もA列から順に1、2とカウントします。
指定するデータ領域が1行か1列でないと正しくグラフが表示されません。
STEP2.グラフタイトルを指定
- Seriesオブジェクトを作成
- 引数にReferenceオブジェクトとタイトルを渡す
- タイトルは無くてもOK
1 2 |
#2.グラフタイトルを決める ser_obj = chart.Series(ref_obj, title='得点') |
ここで決めたタイトルが凡例にも使われます。タイトルを設定しなかった場合の凡例は「系列1」と表示されます。完成形は下の画像で確認できます。
STEP3.グラフの種類を決める&追加
- Chartオブジェクトを作成
- グラフの種類によってクラス名が異なる(下表)
- ChartオブジェクトにSeriesオブジェクトを追加
1 2 3 4 5 |
#3.グラフの種類を決める chart_obj = chart.BarChart() #追加する chart_obj.append(ser_obj) |
グラフの種類
クラス名によってグラフの種類が変わります。データに適したグラフを選びましょう。
不明と書いているところは今回紹介している方法でエラーが出たものになります。エラーが解消でき次第追記します。
STEP4.グラフをシートに張り付ける
- Worksheetオブジェクトにグラフを張り付ける
- add_chartメソッドを使う
- 引数はChartオブジェクトと張り付ける位置
- 位置は行列名で指定(なくてもOK)
1 2 |
#4.グラフをシートに張り付ける ws.add_chart(chart_obj, 'D4') |
このコードではグラフの貼り付け位置に「D4」を指定したので、グラフの左上の角が「D4」に来ます。完成形は以下の画像で確認できます。
もし位置を指定しない場合は適当なところに張り付けられます。
必ず保存してからファイルを開いてください。そうしないとグラフが張り付けられません。
まとめ
今回はグラフの張り付け方を見ていきました。他にも凡例やマーカーなど細かいところを指定できそうなので分かり次第追記します。
あとは、データが悪くあまり変化のないグラフになってしまったので訂正版を追加したいと思います。
プログラミング言語のなかでも人気の高いPythonを学習する教材を紹介します。 最近ではプログラミングスククールがたくさんあるので迷うと思います。 ですが、まずは無料教材から始めてみましょう。苦労した分だけ力がつきます。 […]