CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
みなさん、こんにちは。
前回は、OpenPyXLライブラリを使用して、セルに色や枠線を設定するスタイルの使い方を説明しました。今回も、引き続きOpenPyXLを用いたExcelファイルの操作について解説しますが、特にチャートに焦点を当てます。Excelでチャートを使うと、データを視覚化し、より分析しやすくなります。ぜひチャートの機能を利用して、Excelを最大限に活用できるようにしましょう。
from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference
# ワークブックを作成し、アクティブなワークシートを取得
wb = Workbook()
ws = wb.active
# データをワークシートに追加
rows = [
("Month", "Sales", "Profit"),
("January", 15000, 4000),
("February", 18000, 5000),
("March", 22000, 7000),
("April", 24000, 8000),
("May", 20000, 6000),
("June", 26000, 9000),
("July", 23000, 7500),
("August", 25000, 8500),
("September", 21000, 6800),
("October", 27000, 9300),
("November", 30000, 10000),
("December", 32000, 12000),
]
# 行ごとにデータを追加
for row in rows:
ws.append(row)
# バーチャートオブジェクトを作成
chart = BarChart()
# データの範囲を設定(2列目から3列目、1行目から13行目まで)
values = Reference(ws, min_col=2, min_row=1, max_col=3, max_row=13)
# ラベルの範囲を設定(1列目、2行目から13行目まで)
labels = Reference(ws, min_col=1, min_row=2, max_row=13)
# データとタイトルをチャートに追加(データのタイトルを含む)
chart.add_data(values, titles_from_data=True)
# カテゴリを設定(x軸のラベル)
chart.set_categories(labels)
# チャートをワークシートの指定した位置に追加
ws.add_chart(chart, "E2")
# ファイルを保存
wb.save("bar_chart.xlsx")
データポイントを線で結んだチャートで、データの推移やトレンドを視覚的に表現するのに適しています。折れ線グラフを作成する際には、インポート部分と、chart = LineChart()という折れ線グラフオブジェクトを作成する部分だけが異なります。他の部分は、棒グラフを作成する手順と同じです。
from openpyxl.chart import LineChart, Reference
# 折れ線グラフを作成
chart = LineChart()
データを円の断片として表示します。データの割合を視覚的に表現するのに適しています。円グラフもインポート部分とオブジェクト作成部分が異なり、PieChart を使用します。
from openpyxl.chart import PieChart, Reference
# 円グラフを作成
chart = PieChart()
折れ線グラフの下の領域を塗りつぶしたチャートです。データのボリュームを視覚的に表現するのに適しています。面グラフもインポート部分とオブジェクト作成部分が異なり、AreaChartを使用します。
from openpyxl.chart import AreaChart, Reference
# 面グラフを作成
chart = AreaChart()
散布図はデータポイントをプロットし、2つの変数の関係を視覚的に表現するのに適しています。以下に、散布図を作成するためのすべてのプログラムを示します。
from openpyxl import Workbook
from openpyxl.chart import ScatterChart, Reference, Series
# ワークブックを作成し、アクティブなワークシートを取得
wb = Workbook()
ws = wb.active
# データを追加
rows = [
("X", "Y"),
(1, 2),
(2, 3),
(3, 5),
(4, 7),
(5, 11),
]
# 行ごとにデータを追加
for row in rows:
ws.append(row)
# 散布図を作成
chart = ScatterChart()
# X軸とY軸のデータ範囲を設定
xvalues = Reference(ws, min_col=1, min_row=2, max_row=6)
yvalues = Reference(ws, min_col=2, min_row=2, max_row=6)
# データシリーズを作成
series = Series(yvalues, xvalues, title="Sample Data")
# シリーズを散布図に追加
chart.series.append(series)
# チャートのタイトルと軸のタイトルを設定
chart.title = "Scatter Chart Example"
chart.x_axis.title = "X Axis"
chart.y_axis.title = "Y Axis"
# マーカーを設定(マーカーが見やすくなるように)
series.marker.symbol = "circle"
series.graphicalProperties.line.noFill = True # 線なし
# チャートをワークシートの指定した位置に追加
ws.add_chart(chart, "E2")
# ファイルを保存
wb.save("scatter_chart.xlsx")
複数のグラフタイプを組み合わせて表示することもできます。以下の例は、折れ線グラフに棒グラフを重ねたものです。
from openpyxl import Workbook
from openpyxl.chart import BarChart, LineChart, Reference, Series
wb = Workbook()
ws = wb.active
# データを追加
rows = [
("Month", "Sales", "Profit"),
("Jan", 30, 5),
("Feb", 40, 10),
("Mar", 50, 15),
("Apr", 60, 20),
]
for row in rows:
ws.append(row)
# バーチャートを作成
bar_chart = BarChart()
values = Reference(ws, min_col=2, min_row=1, max_col=2, max_row=5)
bar_chart.add_data(values, titles_from_data=True)
# 折れ線グラフを作成
line_chart = LineChart()
line_values = Reference(ws, min_col=3, min_row=1, max_col=3, max_row=5)
line_series = Series(line_values, title="Profit")
line_chart.series.append(line_series)
# 折れ線グラフをバーチャートに重ねる
bar_chart.y_axis.title = "Sales"
line_chart.y_axis.axId = 200
line_chart.y_axis.title = "Profit"
bar_chart += line_chart
# カテゴリを設定
categories = Reference(ws, min_col=1, min_row=2, max_row=5)
bar_chart.set_categories(categories)
# チャートをワークシートに追加
ws.add_chart(bar_chart, "E2")
# ファイルを保存
wb.save("combo_chart.xlsx")
今回は、OpenPyXLライブラリを使用してチャートを作成する方法についてコード例を多く示しました。OpenPyXLを利用すると、Excelファイルにデータを追加するだけでなく、データを視覚的に表示するチャートを簡単に作成することができます。データの分析がより効果的になると思うので、ぜひ、データ可視化で試してみてください。
次回は、Excelファイルで数式やフィルタ、ソートなどの機能を使用する方法について説明します。これらの機能を活用して、より効率的にデータを操作する方法を学びましょう。それでは、次回もお楽しみに。
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes