集合縦棒グラフと積み上げ縦棒グラフは、縦棒グラフの2つの代表的な形式です。集合縦棒グラフは、複数のカテゴリ間で値を比較するのに適しており、積み上げ縦棒グラフはカテゴリごとの合計値とその内訳の割合を視覚的に把握するのに便利です。
この記事では、Spire.XLS for Python を使用して、Python で Excel ワークシートに集合縦棒グラフまたは積み上げ縦棒グラフを作成する方法をご紹介します。
Spire.XLS for Python のインストール
この操作には、Spire.XLS for Python と plum-dispatch v1.7.4 が必要です。これらは、Spire.XLS for Python の公式ウェブサイトから手動でダウンロードするか、以下の pip コマンドでインストールできます。
pip install Spire.XLS
Python で Excel に集合縦棒グラフを作成する方法
ワークシートにグラフを追加するには、Worksheet.Chart.Add(ExcelChartType chartType) メソッドを使用します。ExcelChartType 列挙体には、Microsoft Excel にあらかじめ定義されているさまざまな種類のグラフが含まれています。
以下は、Spire.XLS for Python を使って集合縦棒グラフを作成する手順です:
- Workbook オブジェクトを作成します。
- Workbook.Worksheets.get_Item(index) プロパティを使用して特定のワークシートを取得します。
- 指定したセルにデータを書き込みます。
- Worksheet.Chart.Add(ExcelChartType.ColumnClustered) メソッドを使って、ワークシートに集合縦棒グラフを追加します。
- Chart.DataRange プロパティを使用して、グラフのデータ範囲を設定します。
- Chart オブジェクトのプロパティを通じて、グラフの位置、タイトル、その他の属性を設定します。
- Workbook.SaveToFile() メソッドを使用して、Excel ファイルとして保存します。
from spire.xls import *
from spire.xls.common import *
# Workbook オブジェクトを作成
workbook = Workbook()
# 最初のシートを取得
sheet = workbook.Worksheets.get_Item(0)
# グラフ用データを設定
sheet.Range.get_Item("A1").Value = "製品"
sheet.Range.get_Item("A2").Value = "綾鷹"
sheet.Range.get_Item("A3").Value = "午後の紅茶"
sheet.Range.get_Item("A4").Value = "伊右衛門"
sheet.Range.get_Item("A5").Value = "麦茶"
sheet.Range.get_Item("B1").Value = "店舗 A"
sheet.Range.get_Item("B2").NumberValue = 30000
sheet.Range.get_Item("B3").NumberValue = 45000
sheet.Range.get_Item("B4").NumberValue = 28000
sheet.Range.get_Item("B5").NumberValue = 52000
sheet.Range.get_Item("C1").Value = "店舗 B"
sheet.Range.get_Item("C2").NumberValue = 40000
sheet.Range.get_Item("C3").NumberValue = 35000
sheet.Range.get_Item("C4").NumberValue = 39000
sheet.Range.get_Item("C5").NumberValue = 41000
# セルスタイルの設定
sheet.Range.get_Item("A1:C1").RowHeight = 15
sheet.Range.get_Item("A1:C1").Style.Color = Color.get_Black()
sheet.Range.get_Item("A1:C1").Style.Font.Color = Color.get_White()
sheet.Range.get_Item("A1:C1").Style.VerticalAlignment = VerticalAlignType.Center
sheet.Range.get_Item("A1:C1").Style.HorizontalAlignment = HorizontalAlignType.Center
sheet.AutoFitColumn(1)
# グラフをシートに追加
chart = sheet.Charts.Add(ExcelChartType.ColumnClustered)
# グラフのデータ範囲を設定
chart.DataRange = sheet.Range.get_Item("A1:C5")
chart.SeriesDataFromRange = False
# グラフの位置を設定
chart.LeftColumn = 5
chart.TopRow = 1
chart.RightColumn = 14
chart.BottomRow = 21
# グラフのタイトルを設定
chart.ChartTitle = "店舗別ソフトドリンク売上"
chart.ChartTitleArea.IsBold = True
chart.ChartTitleArea.Size = 12
# 軸タイトルを設定
chart.PrimaryCategoryAxis.Title = "製品"
chart.PrimaryCategoryAxis.Font.IsBold = True
chart.PrimaryCategoryAxis.TitleArea.IsBold = True
chart.PrimaryValueAxis.Title = "売上"
chart.PrimaryValueAxis.HasMajorGridLines = False
chart.PrimaryValueAxis.TitleArea.IsBold = True
chart.PrimaryValueAxis.TitleArea.TextRotationAngle = 90
# 系列の色・重なり・間隔・データラベルを設定
series = chart.Series
for i in range(series.Count):
cs = series.get_Item(i)
cs.Format.Options.IsVaryColor = True
cs.Format.Options.Overlap = -50
cs.Format.Options.GapWidth = 350
cs.DataPoints.DefaultDataPoint.DataLabels.HasValue = True
# 凡例の位置を設定
chart.Legend.Position = LegendPositionType.Top
# ファイルを保存
workbook.SaveToFile("output/集合縦棒グラフ.xlsx", ExcelVersion.Version2016)
workbook.Dispose()
Python で Excel に積み上げ縦棒グラフを作成する方法
積み上げ縦棒グラフの作成手順は、集合縦棒グラフとほぼ同じです。異なる点は、グラフの種類を ColumnClustered ではなく ColumnStacked に変更する必要があることです。
- Workbook オブジェクトを作成します。
- Workbook.Worksheets.get_Item(index) プロパティを使用して特定のワークシートを取得します。
- 指定したセルにデータを書き込みます。
- Worksheet.Chart.Add(ExcelChartType.ColumnStacked) メソッドを使って、ワークシートに積み上げ縦棒グラフを追加します。
- Chart.DataRange プロパティを使用して、グラフのデータ範囲を設定します。
- Chart オブジェクトのプロパティを通じて、グラフの位置、タイトル、その他の属性を設定します。
- Workbook.SaveToFile() メソッドを使用して、Excel ファイルとして保存します。
from spire.xls import *
from spire.xls.common import *
# Workbook オブジェクトを作成
workbook = Workbook()
# 最初のワークシートを取得
sheet = workbook.Worksheets.get_Item(0)
# グラフ用データを設定
sheet.Range.get_Item("A1").Value = "製品"
sheet.Range.get_Item("A2").Value = "綾鷹"
sheet.Range.get_Item("A3").Value = "午後の紅茶"
sheet.Range.get_Item("A4").Value = "伊右衛門"
sheet.Range.get_Item("A5").Value = "麦茶"
sheet.Range.get_Item("B1").Value = "店舗 A"
sheet.Range.get_Item("B2").NumberValue = 30000
sheet.Range.get_Item("B3").NumberValue = 45000
sheet.Range.get_Item("B4").NumberValue = 28000
sheet.Range.get_Item("B5").NumberValue = 52000
sheet.Range.get_Item("C1").Value = "店舗 B"
sheet.Range.get_Item("C2").NumberValue = 40000
sheet.Range.get_Item("C3").NumberValue = 35000
sheet.Range.get_Item("C4").NumberValue = 39000
sheet.Range.get_Item("C5").NumberValue = 41000
# セルのスタイルを設定
sheet.Range.get_Item("A1:C1").RowHeight = 15
sheet.Range.get_Item("A1:C1").Style.Color = Color.get_Black()
sheet.Range.get_Item("A1:C1").Style.Font.Color = Color.get_White()
sheet.Range.get_Item("A1:C1").Style.VerticalAlignment = VerticalAlignType.Center
sheet.Range.get_Item("A1:C1").Style.HorizontalAlignment = HorizontalAlignType.Center
sheet.AutoFitColumn(1)
# グラフを追加(積み上げ縦棒グラフ)
chart = sheet.Charts.Add(ExcelChartType.ColumnStacked)
# グラフのデータ範囲を設定
chart.DataRange = sheet.Range.get_Item("A1:C5")
chart.SeriesDataFromRange = False
# グラフの位置を設定
chart.LeftColumn = 5
chart.TopRow = 1
chart.RightColumn = 14
chart.BottomRow = 21
# グラフのタイトルを設定
chart.ChartTitle = "店舗別ソフトドリンク売上"
chart.ChartTitleArea.IsBold = True
chart.ChartTitleArea.Size = 12
# 軸タイトルを設定
chart.PrimaryCategoryAxis.Title = "製品"
chart.PrimaryCategoryAxis.Font.IsBold = True
chart.PrimaryCategoryAxis.TitleArea.IsBold = True
chart.PrimaryValueAxis.Title = "売上"
chart.PrimaryValueAxis.HasMajorGridLines = False
chart.PrimaryValueAxis.TitleArea.IsBold = True
chart.PrimaryValueAxis.TitleArea.TextRotationAngle = 90
# 系列の色・間隔・データラベルを設定
series = chart.Series
for i in range(series.Count):
cs = series.get_Item(i)
cs.Format.Options.IsVaryColor = True
cs.Format.Options.GapWidth = 270
cs.DataPoints.DefaultDataPoint.DataLabels.HasValue = True
cs.DataPoints.DefaultDataPoint.DataLabels.Position = DataLabelPositionType.Inside
# 凡例の位置を設定
chart.Legend.Position = LegendPositionType.Top
# ファイルを保存
workbook.SaveToFile("output/積み上げ縦棒グラフ.xlsx", ExcelVersion.Version2016)
workbook.Dispose()
一時ライセンスを申請する
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。