この SVG ファイルを生成する Python のコードは
# encoding: utf-8 import svg from table import * data=""" 年度 発電電力量(GWH) 発電時間(H) 設備利用率(%) 時間稼働率(%) 累計 533,014 836,521 70.6 72.3 2011 1,065 881 4.6 4.4 2010 16,961 18,778 74.0 72.3 2009 13,639 13,560 59.5 58.4 2008 11,031 12,924 48.1 47.9 2007 14,294 16,278 62.2 63.2 2006 16,304 19,666 71.1 71.5 2005 17,776 20,672 77.5 76.8 2004 19,965 22,647 87.1 86.3 2003 19,485 22,111 84.8 84.2 2002 18,569 21,947 81.0 80.9 2001 18,358 21,836 80.1 81.1 2000 18,863 17,427 82.3 82.5 1999 6,061 7,690 26.4 26.9 1998 20,755 23,134 90.5 91.1 1997 17,824 27,390 73.1 74.6 1996 20,227 28,780 83.0 84.2 1995 18,534 27,004 75.8 77.3 1994 20,157 28,743 82.7 83.9 1993 18,474 20,396 75.8 76.2 1992 19,441 28,124 79.7 81.1 1991 18,564 26,983 75.9 77.4 1990 20,340 29,767 83.4 85.2 1989 18,046 25,758 74.0 75.5 1988 19,153 26,085 78.6 80.1 1987 18,396 26,339 75.3 77.2 1986 12,349 21,995 80.1 82.6 1985 10,966 20,858 77.1 79.4 1984 9,696 18,980 68.2 71.1 1983 10,135 20,324 71.1 75.0 1982 8,264 17,758 58.1 61.8 1981 8,178 16,424 57.5 62.0 1980 10,059 20,361 70.8 75.6 1979 8,845 18,694 62.0 68.0 1978 5,753 16,645 73.2 82.3 1977 2,155 10,926 47.0 54.6 1976 3,154 14,359 68.8 79.9 1975 2,392 12,023 52.1 61.4 1974 2,514 12,361 54.9 65.2 1973 3,494 15,225 76.3 86.4 1972 3,244 14,512 70.8 81.9 1971 3,174 13,999 69.1 77.1 1970 3,288 14,173 74.4 81.3 1969 938 6,227 58.7 69.1 1968 1,037 7,048 71.3 80.5 1967 605 4,310 41.5 49.1 1966 490 4,401 49.2 73.4 """ d = nlist(data) d1 = d[2:] d1.sort() z = col(d1,0,3) # extract columns 0 and 3 c = svg.Canvas(0,0,800,450,map=(1950,110,2020,-20)) c.grid(10,10,range=(1960,0,2015,100)) for n in range(1960,2015,10): c.text(n,0,text=n,anchor="N",pad=0.5) for n in range(0,101,10): c.text(1960,n,text=n,anchor="E",pad=0.5) c.text(1985,-10,text="年度",anchor="C") c.text(1955,55,text="稼働率(%)",rotate=-90,anchor="C") c.text(1970,25,text="日本原子力発電(株)の原発施設稼働率の推移",font="size:16",anchor="W") c.line(z) c.close()
ここに使われている table
も筆者のライブラリで、読み取ったテーブル形式のデータから簡単にリストや辞書を使ったテーブルを作成できる。
グラフのラベル付けなどを自動化したいのであるが、まだ未完成である。
テキストを 90度回転する場面が発生しているか、これをやってみると、SVG の text タグは
<text x="X" y="Y" transform="rotate(A)" .../>
<text transform="translate(X,Y) rotate(A)" .../>