とりあえずdjangoの復習用に適当にテーブルを作成。
投入データは下記から取得。
日本政府が出してるっぽいデータ
from django.db import models
from datetime import datetime
# 人口テーブル
class Population(models.Model):
prefectures_code = models.CharField(max_length=10,verbose_name="都道府県コード", null=False)
prefectures = models.CharField(max_length=10,verbose_name="都道府県", null=False)
era = models.CharField(max_length=500, verbose_name="元号", null=False)
jp_calendar = models.CharField(max_length=500, verbose_name="和暦", null=False)
year = models.CharField(max_length=500, verbose_name="西暦", null=False)
population = models.CharField(max_length=500, verbose_name="人口", null=False)
man = models.CharField(max_length=500, verbose_name="男", null=False)
woman = models.CharField(max_length=500, verbose_name="女", null=False)
create_date = models.DateTimeField(default=datetime.now, null=True, verbose_name="登録日")
def __str__(self):
return self.prefectures
適当すぎて人口の数値部分も文字列で作成。
問題ないかと思いそのまま続行した結果、色々被害続出。
その辺の話
文字列の問題は置いといて、今回はmatplotで県ごとの人口をグラフにした時のメモ。
適当に作ったらY軸に1e6となってしまった。
分かりにくい。
調べてみるといい記事が見つかった。
MatplotlibのY軸の目盛りを指数表記(10のN乗表記)に変更する
ex3)Y軸の目盛りを10のべき乗表記に変更するを真似するといい具合に動いた。
でもまだ10の6乗と言われてもピンとこないので万人単位で固定しようと下記を真似したが、動かない。
ex4)Y軸の目盛りを1×10^6から1×10^4に変更する
ScalarFormatterの中身を見て確認すると自分の環境だと下記のオーバーライドしてるメソッドが違った。
(記事の)_set_orderOfMagnitude
(自分の)_set_order_of_magnitude
なので_set_orderOfMagnitudeの部分を_set_order_of_magnitudeに書き換えたらうまく動きました。