LoginSignup
8
5

More than 3 years have passed since last update.

plotlyで貸借対照表(BalanceSheet)を描画する

Last updated at Posted at 2020-12-06

Plotlyで貸借対照表(BS)を描画する

 先日某オンラインウェビナーでplotlyのハンズオンに参加して、Plotlyを使ったデータビジュアライゼーションの創作意欲が高まってきたので、練習がてら、以下のブログの記事を参考に、企業決算の貸借対照表(BS、いわゆるBalanceSheet)をplotlyでグラフ描画してみた。

Stacked and Grouped Bar Charts Using Plotly (Python)
https://dev.to/fronkan/stacked-and-grouped-bar-charts-using-plotly-python-a4p
※スウェーデン在住のフレデリク・ベングトソンさんのブログ記事

 企業決算のBSは、右側にある借方の純資産と負債は「Stacked Bar chart(積み上げ棒グラフ)」の要素を持っていて、また左側の貸方の総資産と右側の借方の部分がくっついていて「Grouped bar chart」の要素も持っていて、いわばStacked-BarとGrouped-barの両方を組み合わせた複合的な「Stacked and Grouped Bar chart」といったグラフを描画するイメージになるのだが、これをPlotlyでどのように指定して描画するのか?というのが今回のイシュー。

script

asahi_bs.py
from plotly import graph_objects as go

#朝日新聞社のBSの数値をサンプルのデータとして利用
# (子会社の朝日放送HDもしくはテレビ朝日HDが適時開示に「親会社の決算」を発表している)
data = {
    "総資産":[ 594628,605226,611502 ,607605 ,614114 ,599162,554408],
    "負債": [256320,288806, 278072,234054,231745,223782,217897],
    "純資産": [338307,316419,333429 ,373551 ,382368 ,375380,336511],
    "labels": [
        "2015/03本",
        "2016/03本",
        "2017/03本",
        "2018/03本",
        "2019/03本",
        "2020/03本",
        "2020/09中"
    ]
}

# グラフ描画
fig1 = go.Figure(
   # データの指定
   data=[
        go.Bar(
            name="総資産",
            x=data["labels"],
            y=data["総資産"],
            offsetgroup=0,
        ),
        go.Bar(
            name="負債",
            x=data["labels"],
            y=data["負債"],
            offsetgroup=1,
            base=data["純資産"],
        ),
        go.Bar(
            name="純資産",
            x=data["labels"],
            y=data["純資産"],
            offsetgroup=1,
        )
    ],
   # レイアウトの指定
    layout=go.Layout(
        title="朝日新聞社_貸借対照表(BS)",
        xaxis_title="決算期",
        yaxis_title="JPY(単位:百万円)"
    )
)
fig1.show()

 上記のスクリプトでは、 go.Figure() のDataの指定の箇所で、go.Bar()を3つ、総資産と負債と純資産の3種類の棒グラフを指定するのだが、ポイントはこの時に、offsetgroup句で右側借方と左側貸方の2グループに分類する記述をする点である。
 つまり左側の総資産は単一でグルーピングするoffsetgroup=0とし、また右側の負債と純資産の借方を1つのグループoffsetgroup=1と記述する。
 あとはoffsetgroup=1の右側(借方)の負債Barの記述だが、純資産Barの上に負債Barを積み上げるイメージでグラフを描画するので、負債のgo.Bar()の箇所で、base=data["純資産"]というように、どのデータの上に載せるのかという記述すればよろしい。

描画結果

image.png
※上図は、Google Colaboratory上でplotlyでグラフ描画した結果

2020/9月時点で、総資産を500億円も減らしているようだ...
(とは言っても、総資産5500億円の巨大企業...優良有価証券ないし優良不動産物件を数多く保有していて、リストラする原資は過分にあるものと思われ)

補足

今回サンプルにした朝日新聞社(未上場)の決算だが、朝日新聞社は金融庁のEDINETに有価証券報告書を毎年提出しており、また朝日新聞社の子会社、朝日放送ホールディングス(SIC:9405)もしくは、テレビ朝日ホールディングス(SIC:9409)が、「親会社の決算の状況」をJPX適時開示情報に本決算(3月決算)と中間決算(9月決算)の概況を開示しているので、その開示資料等から朝日新聞社の決算の数値は取得可能である。

参考URL:
・IRbank(朝日放送HD):https://irbank.net/E04380/tdnet
・IRbank(テレビ朝日HD):https://irbank.net/E04414/tdnet

8
5
1

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
8
5