1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

openpyxlで円グラフを作成する

Last updated at Posted at 2021-12-04

 openpyxlで円グラフを作る方法は本に書いてあったり、ネットで検索しても情報がたくさん出てきますが、凡例の指定の仕方まで書かれているものはなかなか見つからなかったのでここに書いておきます。

##データ準備
 以下のようなデータ表を用意します。
input_data.png
 参考までに乱数を振って表にまとめるコードを載せておきます。(数字が書いてあればなんでもOKです)

import numpy as np
import pandas as pd

#make DataFtame
test_matrix = np.random.rand(3,3)
row_label = ['row_0','row_1','row_2']
col_label = ['col_0','col_1','col_2']
df = pd.DataFrame(test_matrix,index = row_label,columns=col_label)
df.to_excel('PieChart.xlsx', sheet_name='raw_data')

##円グラフ作成
 以下、円グラフ作成のコードと実行結果です。
 (グラフの大きさが違うのが気になる。揃えるオプションがあるのか、Libreの癖なのか。。。)

import openpyxl
from openpyxl.chart import PieChart, Reference
from openpyxl.chart.label import DataLabelList

#read Excel file
wb = openpyxl.load_workbook('PieChart.xlsx')
ws = wb.copy_worksheet(wb['raw_data'])

for i in range (0,3):
    #set PieChart
    chart = PieChart()
    chart.height = 5
    chart.width  = 10
    data = Reference(ws,min_row=1, min_col=i+2,max_row=4)
    labels = Reference(ws,min_row=2, min_col=1,max_row=4)
    chart.add_data(data, titles_from_data=True)
    chart.set_categories(labels)

    #set DataLabel
    chart.dataLabels = DataLabelList()
    chart.dataLabels.showVal = False
    chart.dataLabels.showPercent = True
    chart.dataLabels.dLblPos = 'outEnd'

    #put graph
    ws.add_chart(chart, ws.cell(row=10*i+6,column=1).coordinate)

#save Excel file
wb.save('PieChart.xlsx')

result2.png
個人的に共有したかったのは凡例を設定する部分。

#set DataLabel
chart.dataLabels = DataLabelList()
chart.dataLabels.showVal = False
chart.dataLabels.showPercent = True
chart.dataLabels.dLblPos = 'outEnd'

 グラフ一個だけなら手で設定しても問題ないが、今回の例のように複数グラフを同じ凡例の設定で並べて見たい時にはコード上で設定できた方がいい。
 因みに今回の設定は「数値の表示」OFF,「割合の%表示」ON,[凡例の表示位置]外側、に設定している。
 
 他の設定や詳細の引数などの情報は以下サイトに書かれています。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?