User:Monaneko/Source Code JPY Coin Production

mkgraph.py

import sys
import csv

g_img_w = 2500
g_img_h = 800
g_graph_x_end  = 64 + 31 + 19

g_current_year = 64 + 31 + 6

g_coin_1_a = ['アルミニウム貨','Aluminum coin']
g_coin_5_a = ['無孔黄銅貨','No-holed Brass coin']
g_coin_5_b = ['楷書体黄銅貨','Square type Brass coin']
g_coin_5_c = ['ゴシック体黄銅貨','Gothic type Brass coin']
g_coin_10_a = ['ギザ付青銅貨', 'Milled Bronze coin']
g_coin_10_b = ['ギザ無青銅貨', 'Plain Bronze coin']
g_coin_50_a = ['無孔ニッケル貨','No-holed Nickel coin']
g_coin_50_b = ['有孔ニッケル貨','Holed Nickel coin']
g_coin_50_c = ['白銅貨','Cupronickel coin']
g_coin_100_a = ['鳳凰銀貨','Chinese Phoenix Silver coin']
g_coin_100_b = ['稲穂銀貨','Rice Plant Silver coin']
g_coin_100_c = ['白銅貨', 'Cupronickel coin']
g_coin_500_a = ['白銅貨', 'Cupronickel coin']
g_coin_500_b = ['ニッケル白銅貨', 'Nickel-brass coin']
g_coin_500_c = ['バイカラー・クラッド貨','Bicolor Clad coin']


def getWidth(s,e,x):
    return ((g_img_w - 100) - 150 ) / (e - s) * x + 150

def writeHeader(f,title):
    f.write('<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n')
    f.write('<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')
    f.write('<svg xml:space="default" width="'+str(g_img_w)+'" height="'+str(g_img_h)+'" viewBox="0 0 '+str(g_img_w)+' '+str(g_img_h)+'" xmlns="http://www.w3.org/2000/svg">\n')
    f.write('\t<title>'+title+'</title>\n')
    f.write('\t<defs>\n')
    #Color Universal Design (RGB)
    #Red = 255,75,0
    f.write('\t\t<g>\n')
    f.write('\t\t\t<linearGradient id="fill0" gradientTransform="rotate(90)">\n')
    f.write('\t\t\t\t<stop offset="0" stop-color="rgb(255,75,0)" stop-opacity="0.9" />\n')
    f.write('\t\t\t\t<stop offset="0.075" stop-color="rgb(255,75,0)" stop-opacity="0.2" />\n')
    f.write('\t\t\t</linearGradient>\n')
     
    #Green = 3,175,122
    f.write('\t\t\t<linearGradient id="fill1" gradientTransform="rotate(90)">\n')
    f.write('\t\t\t\t<stop offset="0" stop-color="rgb(3,175,122)" stop-opacity="0.9" />\n')
    f.write('\t\t\t\t<stop offset="0.075" stop-color="rgb(3,175,122)" stop-opacity="0.2" />\n')
    f.write('\t\t\t</linearGradient>\n')
 
    #Sky = 77,196,255
    f.write('\t\t\t<linearGradient id="fill2" gradientTransform="rotate(90)">\n')
    f.write('\t\t\t\t<stop offset="0" stop-color="rgb(77,196,255)" stop-opacity="0.9" />\n')
    f.write('\t\t\t\t<stop offset="0.075" stop-color="rgb(77,196,255)" stop-opacity="0.2" />\n')
    f.write('\t\t\t</linearGradient>\n')
 
    #Blue = 0,90,255
    f.write('\t\t\t<linearGradient id="fill3" gradientTransform="rotate(90)">\n')
    f.write('\t\t\t\t<stop offset="0" stop-color="rgb(0,90,255)" stop-opacity="0.9" />\n')
    f.write('\t\t\t\t<stop offset="0.075" stop-color="rgb(0,90,255)" stop-opacity="0.2" />\n')
    f.write('\t\t\t</linearGradient>\n')
 
    #Yellow = 255,241,0
    f.write('\t\t\t<linearGradient id="fill4" gradientTransform="rotate(90)">\n')
    f.write('\t\t\t\t<stop offset="0" stop-color="rgb(255,241,0)" stop-opacity="0.9" />\n')
    f.write('\t\t\t\t<stop offset="0.075" stop-color="rgb(255,241,0)" stop-opacity="0.2" />\n')
    f.write('\t\t\t</linearGradient>\n')

    f.write('\t\t</g>\n')

    #f.write('\t\t\t<rect x="80" y="420" width="6.8" height="480" id="bar0" fill="url(#fill0)" />\n')

    #Clipping
    f.write('\t\t<clipPath id="clip1">\n')
    f.write('\t\t\t<rect x="150" y="0" width="' + str(g_img_w - 250) + '" height="' + str(g_img_h - 200) + '" />\n')
    f.write('\t\t</clipPath>\n')

    f.write('\t</defs>\n')

def writeBackground(f):
    #Background
    f.write('\t<!-- Background -->\n')
    f.write('\t<rect fill="white" x="0" y="0" width="'+str(g_img_w)+'" height="'+str(g_img_h)+'" />\n')
    
def writeFrame(f,s_year,e_year,y_range):
    #Initialize Nengo
    ar_nengo_ja = []
    ar_nengo_en = []
    ar_y_scale = []
    
    for i in range(1,65):
        ar_nengo_ja.append('昭和'+str(i)+'年')
        ar_nengo_en.append('Showa '+str(i))
    ar_nengo_ja.append('平成元年')
    ar_nengo_en.append('Heisei 1')   
    for i in range(2,32):
        ar_nengo_ja.append('平成'+str(i)+'年')
        ar_nengo_en.append('Heisei '+str(i))
    ar_nengo_ja.append('令和元年')
    ar_nengo_en.append('Reiwa 1')
    for i in range(2,100):
        ar_nengo_ja.append('令和'+str(i)+'年')
        ar_nengo_en.append('Reiwa '+str(i))

    #Axis
    f.write('\t<!-- Frame -->\n')
    f.write('\t<g>\n')
    f.write('\t\t<path fill="none" stroke-width="2px" stroke="black" d="M 150 50 V '+str(g_img_h-200)+' H '+str(g_img_w-100)+'" />\n')
    f.write('\t</g>\n')

    #Y-axis
    f.write('\t<!-- Y-Axis scale -->\n')
    f.write('\t<g fill="black" font-size="24" font-family="sans-serif" text-anchor="end" dominant-baseline="central">\n')
    if y_range == 0:
        ar_y_scale = [ '0', '100', '200', '300', '400', '500' ]
    elif y_range == 1:
        ar_y_scale = [ '0', '200', '400', '600', '800', '1,000' ]
    elif y_range == 2:
        ar_y_scale = [ '0', '500', '1,000', '1,500', '2,000' , '2,500' ]
    else:
        ar_y_scale = [ '0', 'ERROR', 'ERROR', 'ERROR', 'ERROR' ]

    for i in range(len(ar_y_scale)):
        f.write('\t\t<text x="140" y="'+ str(g_img_h - 200 - 100 * i) +'">' + str(ar_y_scale[i]) + '</text>\n')
    f.write('\t</g>\n')
    
    f.write('\t<g>\n')
    for i in range(1,len(ar_y_scale)):
        f.write('\t\t<path fill="none" stroke-width="1px" stroke="gray" stroke-dasharray="3" d="M 150 '+ str(g_img_h - 200 - 100 * i) +' H '+str(g_img_w-100)+'" />\n')
    f.write('\t</g>\n')
 
    f.write('\t<g transform="translate(40,350)">\n')
    f.write('\t\t<switch>\n')
    
    f.write('\t\t\t<text x="0" y="0" font-size="24" text-anchor="middle" dominant-baseline="central" systemLanguage="en" font-family="sans-serif" fill="black" transform="rotate(270)">Number of coin production (x1,000,000)</text>\n')
    f.write('\t\t\t<text x="0" y="0" font-size="24" text-anchor="middle" dominant-baseline="central" systemLanguage="ja" font-family="TakaoGothic" fill="black" transform="rotate(270)">製造枚数 [百万枚]</text>\n')
    f.write('\t\t\t<text x="0" y="0" font-size="24" text-anchor="middle" dominant-baseline="central" font-family="sans-serif" fill="black" transform="rotate(270)">Number of coin production (x1,000,000)</text>\n')
    
    f.write('\t\t</switch>\n')
    f.write('\t</g>\n')


    #X-Axis
    f.write('\t<!-- X-Axis scale -->\n')
    y_width = (g_img_w - 250.0) / (e_year - s_year + 1.0)
    cnt = 0
    for i in range(s_year, e_year+1):
        if i > g_current_year:
            f.write('\t<!--\n')
        f.write('\t<g transform="translate('+format((y_width * cnt + 150.0 + 24),'.2f')+',615)">\n')
        f.write('\t\t<switch>\n')
        f.write('\t\t\t<text x="0" y="0" font-size="24" text-anchor="end" dominant-baseline="text-bottom" systemLanguage="en" font-family="sans-serif" fill="black" transform="rotate(270)">'+ar_nengo_en[i]+'</text>\n')
        f.write('\t\t\t<text x="0" y="0" font-size="24" text-anchor="end" dominant-baseline="text-bottom" systemLanguage="ja" font-family="TakaoGothic" fill="black" transform="rotate(270)">'+ar_nengo_ja[i]+'</text>\n')
        f.write('\t\t\t<text x="0" y="0" font-size="24" text-anchor="end" dominant-baseline="text-bottom" font-family="sans-serif" fill="black" transform="rotate(270)">'+ar_nengo_en[i]+'</text>\n')
        f.write('\t\t</switch>\n')
        f.write('\t</g>\n')
        if i > g_current_year:
            f.write('\t -->\n')
        cnt+=1
def writeLegend(f, index, data):
    l_color = [ 'rgb(255,75,0', 'rgb(3,175,122)', 'rgb(77,196,255)', 'rgb(0,90,255)', 'rgb(255,241,0)' ]
    y = index * 30    
    f.write('\t<g transform="translate('+str(g_img_w - 350)+','+str(110+y)+')">\n')
    f.write('\t\t<rect fill="'+l_color[index]+'" stroke-width="1px" stroke="gray" x="0" y="0" width="20" height="20" />\n')
    f.write('\t\t<switch>\n')
    f.write('\t\t\t<text x="30" y="18" font-size="24" text-anchor="start" dominant-baseline="text-bottom" systemLanguage="en" font-family="sans-serif" fill="black">'+data[1]+'</text>\n')
    f.write('\t\t\t<text x="30" y="18" font-size="24" text-anchor="start" dominant-baseline="text-bottom" systemLanguage="ja" font-family="TakaoGothic" fill="black">'+data[0]+'</text>\n')
    f.write('\t\t\t<text x="30" y="18" font-size="24" text-anchor="start" dominant-baseline="text-bottom" font-family="sans-serif" fill="black">'+data[1]+'</text>\n')
    f.write('\t\t</switch>\n')
    f.write('\t</g>\n')

def writeData(f, s_year, e_year, n_data, y_range, data1, data2, data3, data4, data5):
    bar_x_size = (g_img_w - 250.0) / (e_year - s_year)
    bar_y_scale = 1
    y_width = (g_img_w - 250.0) / (e_year - s_year + 1.0)

    #Range 0 - 500M
    if y_range == 0:
        bar_y_scale = (g_img_h - 300.0) / 500000.0
    #Range 500M - 1G
    elif y_range == 1:
        bar_y_scale = (g_img_h - 300.0) / 1000000.0
    #Range 1G - 5G
    elif y_range == 2:
        bar_y_scale = (g_img_h - 300.0) / 2500000.0
        
    #Draw Bar
    f.write('\t<!-- Data -->\n')
    f.write('\t<g clip-path="url(#clip1)">\n')
    cnt = 0
    for i in range((2 + s_year - 22), len(data1)):
        if data1[i] == '-':
            num1 = 0
        else:
            num1 = float(data1[i])
        x1 = y_width * cnt + 150.0
        y1 = g_img_h - num1 * bar_y_scale - 200.0

        if data2 == None:
            num2 = 0
        elif data2[i] == '-':
            num2 = 0
        else:
            num2 = float(data2[i])
        x2 = y_width * cnt + 150.0
        y2 = g_img_h - num2 * bar_y_scale - 200.0

        if data3 == None:
            num3 = 0
        elif data3[i] == '-':
            num3 = 0
        else:
            num3 = float(data3[i])
        x3 = y_width * cnt + 150.0
        y3 = g_img_h - num3 * bar_y_scale - 200.0

        if data4 == None:
            num4 = 0
        elif data4[i] == '-':
            num4 = 0
        else:
            num4 = float(data4[i])
        x4 = y_width * cnt + 150.0
        y4 = g_img_h - num4 * bar_y_scale - 200.0

        if data5 == None:
            num5 = 0
        elif(data5[i] == '-'):
            num5 = 0
        else:
            num5 = float(data5[i])
        x5 = y_width * cnt + 150.0
        y5 = g_img_h - num5 * bar_y_scale - 200.0

        if (num1 != 0 and num2 != 0) or (num2 != 0 and num3 != 0) or (num3 != 0 and num4 != 0) or (num4 != 0 and num5 != 0):
            if num1 != 0 and num2 != 0:
                f.write('\t\t<rect x="'+ format(x1, '.2f') +'" y="'+ format(y1, '.2f') +'" width="' + format(bar_x_size / 2.0,'.2f') + '" height="' + str(g_img_h) + '" fill="url(#fill0)" />\n')
                f.write('\t\t<rect x="'+ format(x2 + bar_x_size / 2.0, '.2f') +'" y="'+ format(y2, '.2f') +'" width="' + format(bar_x_size / 2.0,'.2f') + '" height="' + str(g_img_h) + '" fill="url(#fill1)" />\n')
            elif num2 != 0 and num3 != 0:
                f.write('\t\t<rect x="'+ format(x2, '.2f') +'" y="'+ format(y2, '.2f') +'" width="' + format(bar_x_size / 2.0,'.2f') + '" height="' + str(g_img_h) + '" fill="url(#fill1)" />\n')
                f.write('\t\t<rect x="'+ format(x3 + bar_x_size / 2.0, '.2f') +'" y="'+ format(y3, '.2f') +'" width="' + format(bar_x_size / 2.0,'.2f') + '" height="' + str(g_img_h) + '" fill="url(#fill2)" />\n')
            elif num3 != 0 and num4 != 0:
                f.write('\t\t<rect x="'+ format(x3, '.2f') +'" y="'+ format(y3, '.2f') +'" width="' + format(bar_x_size / 2.0,'.2f') + '" height="' + str(g_img_h) + '" fill="url(#fill2)" />\n')
                f.write('\t\t<rect x="'+ format(x4 + bar_x_size / 2.0, '.2f') +'" y="'+ format(y4, '.2f') +'" width="' + format(bar_x_size / 2.0,'.2f') + '" height="' + str(g_img_h) + '" fill="url(#fill3)" />\n')
            elif num4 != 0 and num5 != 0:
                f.write('\t\t<rect x="'+ format(x4, '.2f') +'" y="'+ format(y4, '.2f') +'" width="' + format(bar_x_size / 2.0,'.2f') + '" height="' + str(g_img_h) + '" fill="url(#fill3)" />\n')
                f.write('\t\t<rect x="'+ format(x5 + bar_x_size / 2.0, '.2f') +'" y="'+ format(y5, '.2f') +'" width="' + format(bar_x_size / 2.0,'.2f') + '" height="' + str(g_img_h) + '" fill="url(#fill4)" />\n')
        else:
            if num1 != 0:
                f.write('\t\t<rect x="'+ format(x1, '.2f') +'" y="'+ format(y1, '.2f') +'" width="' + format(bar_x_size,'.2f') + '" height="' + str(g_img_h) + '" fill="url(#fill0)" />\n')
            if num2 != 0:
                f.write('\t\t<rect x="'+ format(x2, '.2f') +'" y="'+ format(y2, '.2f') +'" width="' + format(bar_x_size,'.2f') + '" height="' + str(g_img_h) + '" fill="url(#fill1)" />\n')
            if num3 != 0:
                f.write('\t\t<rect x="'+ format(x3, '.2f') +'" y="'+ format(y3, '.2f') +'" width="' + format(bar_x_size,'.2f') + '" height="' + str(g_img_h) + '" fill="url(#fill2)" />\n')
            if num4 != 0:
                f.write('\t\t<rect x="'+ format(x4, '.2f') +'" y="'+ format(y4, '.2f') +'" width="' + format(bar_x_size,'.2f') + '" height="' + str(g_img_h) + '" fill="url(#fill3)" />\n')
            if num5 != 0:
                f.write('\t\t<rect x="'+ format(x5, '.2f') +'" y="'+ format(y5, '.2f') +'" width="' + format(bar_x_size,'.2f') + '" height="' + str(g_img_h) + '" fill="url(#fill4)" />\n')

        
        cnt+=1
    f.write('\t</g>\n')
        
def writeFooter(f):
    f.write('</svg>')

def loadCoinCSV(f):
    reader = csv.reader(f)
    cnt = 0
    for row in reader:
        if cnt != 0:
            #1 Yen
            g_coin_1_a.append(row[1])
            #5 Yen (No-holed)
            g_coin_5_a.append(row[2])
            #5 Yen (Square type)
            g_coin_5_b.append(row[3])
            #5 Yen (Gothic type)
            g_coin_5_c.append(row[4])
            #10 Yen (Milled)
            g_coin_10_a.append(row[5])
            #10 Yen (Plain)
            g_coin_10_b.append(row[6])
            #50 Yen (No-holed Nickel)
            g_coin_50_a.append(row[7])
            #50 Yen (Holed Nickel)
            g_coin_50_b.append(row[8])
            #50 Yen (Cupronickel)
            g_coin_50_c.append(row[9])
            #100 Yen (Phoneix)
            g_coin_100_a.append(row[10])
            #100 Yen (Rice Plant)
            g_coin_100_b.append(row[11])
            #100 Yen (Cupronickel)
            g_coin_100_c.append(row[12])
            #500 Yen (Cupronickel)
            g_coin_500_a.append(row[13])
            #500 Yen (Nickel-brass)
            g_coin_500_b.append(row[14])
            #500 Yen (Bicolor Clad)
            g_coin_500_c.append(row[15])
        cnt+=1
    
     
if __name__ == '__main__':
    args = sys.argv

    #Load CSV File
    print('Loading CSV file...', end='')
    f_data = open('./num_coin_product.csv', mode='r', encoding='utf-8')
    loadCoinCSV(f_data)
    f_data.close()
    print('OK')

    #Make 1 Yen (Since 1955)
    print('Make Number_of_1_yen_coin_production.svg...', end='')   
    f = open('./Number_of_1_yen_coin_production.svg', 'w')
    writeHeader(f,'一円硬貨製造枚数 - Number of 1 yen coin production -')
    writeBackground(f)
    writeData(f,29,g_graph_x_end,1,2,g_coin_1_a,None,None,None,None)
    writeFrame(f,29,g_graph_x_end,2)
    writeLegend(f,0,g_coin_1_a)
    writeFooter(f)
    f.close()
    print('OK')

    #Make 5 Yen (Since 1948)
    print('Make Number_of_5_yen_coin_production.svg...', end='')
    f = open('./Number_of_5_yen_coin_production.svg', 'w')
    writeHeader(f,'五円硬貨製造枚数 - Number of 5 yen coin production -')
    writeBackground(f)
    writeData(f,22,g_graph_x_end,3,1,g_coin_5_a,g_coin_5_b,g_coin_5_c,None,None)
    writeFrame(f,22,g_graph_x_end,1)
    writeLegend(f,0,g_coin_5_a)
    writeLegend(f,1,g_coin_5_b)
    writeLegend(f,2,g_coin_5_c)
    writeFooter(f)
    f.close()
    print('OK')

    #Make 10 Yen (Since 1951)
    print('Make Number_of_10_yen_coin_production.svg...', end='')
    f = open('./Number_of_10_yen_coin_production.svg', 'w')
    writeHeader(f,'十円硬貨製造枚数 - Number of 10 yen coin production -')
    writeBackground(f)
    writeData(f,25,g_graph_x_end,3,2,g_coin_10_a,g_coin_10_b,None,None,None)
    writeFrame(f,25,g_graph_x_end,2)
    writeLegend(f,0,g_coin_10_a)
    writeLegend(f,1,g_coin_10_b)
    writeFooter(f)
    f.close()
    print('OK')

    #Make 50 Yen (Since 1955)
    print('Make Number_of_50_yen_coin_production.svg...', end='')
    f = open('./Number_of_50_yen_coin_production.svg', 'w')
    writeHeader(f,'五十円硬貨製造枚数 - Number of 50 yen coin production -')
    writeBackground(f)
    writeData(f,29,g_graph_x_end,3,0,g_coin_50_a,g_coin_50_b,g_coin_50_c,None,None)
    writeFrame(f,29,g_graph_x_end,0)
    writeLegend(f,0,g_coin_50_a)
    writeLegend(f,1,g_coin_50_b)
    writeLegend(f,2,g_coin_50_c)
    writeFooter(f)
    f.close()
    print('OK')

    #Make 100 Yen (Since 1957)
    print('Make Number_of_100_yen_coin_production.svg...', end='')
    f = open('./Number_of_100_yen_coin_production.svg', 'w')
    writeHeader(f,'百円硬貨製造枚数 - Number of 100 yen coin production -')
    writeBackground(f)
    writeData(f,31,g_graph_x_end,3,1,g_coin_100_a,g_coin_100_b,g_coin_100_c,None,None)
    writeFrame(f,31,g_graph_x_end,1)
    writeLegend(f,0,g_coin_100_a)
    writeLegend(f,1,g_coin_100_b)
    writeLegend(f,2,g_coin_100_c)
    writeFooter(f)
    f.close()
    print('OK')

    #Make 500 Yen (Since 1982)
    print('Make Number_of_500_yen_coin_production.svg...', end='')
    f = open('./Number_of_500_yen_coin_production.svg', 'w')
    writeHeader(f,'五百円硬貨製造枚数 - Number of 500 yen coin production -')
    writeBackground(f)
    writeData(f,56,g_graph_x_end,3,1,g_coin_500_a,g_coin_500_b,g_coin_500_c,None,None)
    writeFrame(f,56,g_graph_x_end,1)
    writeLegend(f,0,g_coin_500_a)
    writeLegend(f,1,g_coin_500_b)
    writeLegend(f,2,g_coin_500_c)
    writeFooter(f)
    f.close()
    print('OK')

num_coin_product.csv

,1円,5円無孔,5円楷書体,5円ゴシック体,10円ギザ付,10円ギザ無し,50円ニッケル無孔,50円ニッケル有孔,50円白銅,100円鳳凰,100円稲穂,100円白銅,500円白銅,500円ニッケル白銅,500円バイカラー
昭和23年,-,74520,-,-,-,-,-,-,-,-,-,-,-,-,-
昭和24年,-,179692,111896,-,-,-,-,-,-,-,-,-,-,-,-
昭和25年,-,-,181824,-,-,-,-,-,-,-,-,-,-,-,-
昭和26年,-,-,197980,-,101068,-,-,-,-,-,-,-,-,-,-
昭和27年,-,-,55000,-,486632,-,-,-,-,-,-,-,-,-,-
昭和28年,-,-,45000,-,466300,-,-,-,-,-,-,-,-,-,-
昭和29年,-,-,0,-,520900,-,-,-,-,-,-,-,-,-,-
昭和30年,381700,-,0,-,123100,-,63700,-,-,-,-,-,-,-,-
昭和31年,500900,-,0,-,0,-,91300,-,-,-,-,-,-,-,-
昭和32年,492000,-,10000,-,50000,-,39000,-,-,30000,-,-,-,-,-
昭和33年,374900,-,50000,-,25000,-,18000,-,-,70000,-,-,-,-,-
昭和34年,208600,-,-,33000,-,62400,-,23900,-,-,110000,-,-,-,-
昭和35年,300000,-,-,34800,-,225900,-,6000,-,-,50000,-,-,-,-
昭和36年,432400,-,-,61000,-,229900,-,16000,-,-,15000,-,-,-,-
昭和37年,572000,-,-,126700,-,284200,-,50300,-,-,0,-,-,-,-
昭和38年,788700,-,-,171800,-,411300,-,55000,-,-,45000,-,-,-,-
昭和39年,1665100,-,-,379700,-,479200,-,69200,-,-,10000,-,-,-,-
昭和40年,1743256,-,-,384200,-,387600,-,189300,-,-,62500,-,-,-,-
昭和41年,807344,-,-,163100,-,395900,-,171500,-,-,97500,-,-,-,-
昭和42年,220600,-,-,26000,-,158900,-,-,238400,-,-,432200,-,-,-
昭和43年,0,-,-,114000,-,363600,-,-,200000,-,-,471000,-,-,-
昭和44年,184700,-,-,240000,-,414800,-,-,210900,-,-,323700,-,-,-
昭和45年,556400,-,-,340000,-,382700,-,-,269800,-,-,237100,-,-,-
昭和46年,904950,-,-,362050,-,610050,-,-,80950,-,-,481050,-,-,-
昭和47年,1274950,-,-,562950,-,634950,-,-,138980,-,-,468950,-,-,-
昭和48年,1470000,-,-,745000,-,1345000,-,-,200970,-,-,680000,-,-,-
昭和49年,1750000,-,-,950000,-,1780000,-,-,470000,-,-,660000,-,-,-
昭和50年,1656150,-,-,970000,-,1280260,-,-,238120,-,-,437160,-,-,-
昭和51年,928850,-,-,200000,-,1369740,-,-,241880,-,-,322840,-,-,-
昭和52年,895000,-,-,340000,-,1467000,-,-,176000,-,-,440000,-,-,-
昭和53年,864000,-,-,318000,-,1435000,-,-,234000,-,-,292000,-,-,-
昭和54年,1015000,-,-,317000,-,1207000,-,-,110000,-,-,382000,-,-,-
昭和55年,1145000,-,-,385000,-,1127000,-,-,51000,-,-,588000,-,-,-
昭和56年,1206000,-,-,95000,-,1369000,-,-,179000,-,-,348000,-,-,-
昭和57年,1017000,-,-,455000,-,890000,-,-,30000,-,-,110000,300000,-,-
昭和58年,1086000,-,-,410000,-,870000,-,-,30000,-,-,50000,240000,-,-
昭和59年,981850,-,-,202850,-,533850,-,-,29850,-,-,41850,342850,-,-
昭和60年,837150,-,-,153150,-,335150,-,-,10150,-,-,58150,97150,-,-
昭和61年,417960,-,-,113960,-,68960,-,-,9960,-,-,99960,49960,-,-
昭和62年,955775,-,-,631775,-,165775,-,-,775,-,-,193775,2775,-,-
昭和63年,1269042,-,-,396120,-,618112,-,-,109112,-,-,363112,148218,-,-
昭和64年,116100,-,-,67332,-,74692,-,-,0,-,-,0,16042,-,-
平成元年,2366970,-,-,960660,-,666308,-,-,245000,-,-,369000,192852,-,-
平成2年,2768953,-,-,520953,-,754953,-,-,274953,-,-,444953,159953,-,-
平成3年,2301120,-,-,517120,-,632120,-,-,209120,-,-,375120,170120,-,-
平成4年,1299130,-,-,301130,-,538130,-,-,49130,-,-,211130,88130,-,-
平成5年,1261240,-,-,413240,-,249240,-,-,51240,-,-,82240,132240,-,-
平成6年,1040767,-,-,197767,-,190767,-,-,65767,-,-,81767,105772,-,-
平成7年,1041874,-,-,351874,-,248874,-,-,111874,-,-,92874,182869,-,-
平成8年,942213,-,-,207213,-,546213,-,-,82213,-,-,237213,99213,-,-
平成9年,783086,-,-,239086,-,491086,-,-,150086,-,-,272086,173090,-,-
平成10年,452612,-,-,172612,-,410612,-,-,100612,-,-,252612,214608,-,-
平成11年,67120,-,-,60120,-,359120,-,-,59120,-,-,179120,165120,-,-
平成12年,12026,-,-,9030,-,315026,-,-,7026,-,-,172026,-,595969,-
平成13年,8024,-,-,78025,-,542024,-,-,8024,-,-,8024,-,608051,-
平成14年,9667,-,-,143662,-,455667,-,-,11667,-,-,10667,-,504661,-
平成15年,117406,-,-,102406,-,551406,-,-,10406,-,-,98406,-,438405,-
平成16年,52903,-,-,70903,-,592903,-,-,9903,-,-,204903,-,356903,-
平成17年,30029,-,-,16029,-,504029,-,-,10029,-,-,300029,-,345030,-
平成18年,129594,-,-,9594,-,440594,-,-,10594,-,-,216594,-,381593,-
平成19年,223904,-,-,9904,-,388904,-,-,9904,-,-,129904,-,409903,-
平成20年,134811,-,-,9811,-,362811,-,-,8811,-,-,93811,-,432811,-
平成21年,48003,-,-,4003,-,338003,-,-,5003,-,-,115003,-,343003,-
平成22年,7905,-,-,510,-,328905,-,-,510,-,-,67905,-,406905,-
平成23年,456,-,-,456,-,255936,-,-,456,-,-,178936,-,301936,-
平成24年,659,-,-,659,-,279211,-,-,659,-,-,402211,-,267211,-
平成25年,554,-,-,554,-,100892,-,-,554,-,-,608892,-,137892,-
平成26年,124013,-,-,87538,-,171013,-,-,7538,-,-,445013,-,167013,-
平成27年,82004,-,-,105004,-,203004,-,-,47004,-,-,410004,-,143004,-
平成28年,574,-,-,35064,-,198064,-,-,46064,-,-,461064,-,221064,-
平成29年,477,-,-,33927,-,124927,-,-,20927,-,-,518927,-,426327,-
平成30年,440,-,-,17960,-,178960,-,-,56960,-,-,567960,-,286192,-
平成31年,566,-,-,16946,-,197594,-,-,1118,-,-,302006,-,126164,-
令和元年,502,-,-,20574,-,137026,-,-,42502,-,-,58614,-,76956,-
令和2年,528,-,-,29528,-,276428,-,-,58428,-,-,453428,-,143928,-
令和3年,845,-,-,10133,-,139133,-,-,9133,-,-,366133,-,184711,170222
令和4年,574,-,-,574,-,129874,-,-,574,-,-,293274,-,-,302474
令和5年,463,-,-,463,-,27927,-,-,463,-,-,192927,-,-,362527

Files