443 lines
6.6 KiB
Python
443 lines
6.6 KiB
Python
|
from __future__ import division
|
||
|
|
||
|
import axi
|
||
|
|
||
|
def main():
|
||
|
W = 8.5
|
||
|
H = 0.5
|
||
|
total = sum(x[1] for x in DATA)
|
||
|
lo = min(x[0] for x in DATA)
|
||
|
hi = max(x[0] for x in DATA)
|
||
|
peak = max(x[1] for x in DATA)
|
||
|
paths = []
|
||
|
path = []
|
||
|
for key, count in DATA:
|
||
|
x = W * (key - lo) / (hi - lo)
|
||
|
y = H * count / peak
|
||
|
path.append((x, -y))
|
||
|
if y > 0.01:
|
||
|
paths.append([(x, 0), (x, -y)])
|
||
|
paths.append(path)
|
||
|
|
||
|
paths.append([(0, 0), (W, 0)])
|
||
|
|
||
|
labels = [0, 1000, 2000, 3000, 3851]
|
||
|
for key in labels:
|
||
|
x = W * (key - lo) / (hi - lo)
|
||
|
paths.append([(x, 0.0), (x, 0.05)])
|
||
|
d = axi.Drawing(axi.text(str(key), axi.FUTURAL))
|
||
|
d = d.scale_to_fit_height(0.1)
|
||
|
d = d.move(x, 0.15, 0.5, 0)
|
||
|
paths.extend(d.paths)
|
||
|
|
||
|
title = 'Elevation Distribution (meters above sea level)'
|
||
|
d = axi.Drawing(axi.text(title, axi.FUTURAL))
|
||
|
d = d.scale_to_fit_height(0.15)
|
||
|
d = d.move(W / 2, 0.3, 0.5, 0)
|
||
|
paths.extend(d.paths)
|
||
|
|
||
|
d = axi.Drawing(paths)
|
||
|
d = d.rotate(180)
|
||
|
d = d.rotate_and_scale_to_fit(8.5, 8.5, step=90)
|
||
|
d = d.move(12, 8.5 / 2, 1, 0.5)
|
||
|
print d.bounds
|
||
|
|
||
|
d = d.sort_paths()
|
||
|
d = d.join_paths(0.01)
|
||
|
d = d.simplify_paths(0.001)
|
||
|
|
||
|
d.render().write_to_png('out.png')
|
||
|
d.dump('out.axi')
|
||
|
|
||
|
DATA = [
|
||
|
(0, 1860),
|
||
|
(10, 616),
|
||
|
(20, 13896),
|
||
|
(30, 7390),
|
||
|
(40, 17106),
|
||
|
(50, 17756),
|
||
|
(60, 19812),
|
||
|
(70, 20846),
|
||
|
(80, 26540),
|
||
|
(90, 32908),
|
||
|
(100, 30895),
|
||
|
(110, 30937),
|
||
|
(120, 34645),
|
||
|
(130, 39987),
|
||
|
(140, 50454),
|
||
|
(150, 43510),
|
||
|
(160, 45186),
|
||
|
(170, 46782),
|
||
|
(180, 48153),
|
||
|
(190, 53051),
|
||
|
(200, 56475),
|
||
|
(210, 67358),
|
||
|
(220, 66581),
|
||
|
(230, 62523),
|
||
|
(240, 63877),
|
||
|
(250, 65760),
|
||
|
(260, 69471),
|
||
|
(270, 68334),
|
||
|
(280, 64205),
|
||
|
(290, 65384),
|
||
|
(300, 67230),
|
||
|
(310, 70015),
|
||
|
(320, 74587),
|
||
|
(330, 79049),
|
||
|
(340, 84143),
|
||
|
(350, 88487),
|
||
|
(360, 92377),
|
||
|
(370, 100498),
|
||
|
(380, 86270),
|
||
|
(390, 82122),
|
||
|
(400, 80603),
|
||
|
(410, 84615),
|
||
|
(420, 92533),
|
||
|
(430, 89329),
|
||
|
(440, 86102),
|
||
|
(450, 87929),
|
||
|
(460, 86567),
|
||
|
(470, 82378),
|
||
|
(480, 81019),
|
||
|
(490, 79468),
|
||
|
(500, 76132),
|
||
|
(510, 76930),
|
||
|
(520, 72169),
|
||
|
(530, 70730),
|
||
|
(540, 72297),
|
||
|
(550, 72928),
|
||
|
(560, 75030),
|
||
|
(570, 77281),
|
||
|
(580, 78832),
|
||
|
(590, 80256),
|
||
|
(600, 82456),
|
||
|
(610, 83901),
|
||
|
(620, 82584),
|
||
|
(630, 84318),
|
||
|
(640, 82161),
|
||
|
(650, 80100),
|
||
|
(660, 79891),
|
||
|
(670, 80065),
|
||
|
(680, 77160),
|
||
|
(690, 72161),
|
||
|
(700, 69511),
|
||
|
(710, 67754),
|
||
|
(720, 65042),
|
||
|
(730, 63870),
|
||
|
(740, 64834),
|
||
|
(750, 64082),
|
||
|
(760, 61971),
|
||
|
(770, 61166),
|
||
|
(780, 60935),
|
||
|
(790, 59000),
|
||
|
(800, 57292),
|
||
|
(810, 56323),
|
||
|
(820, 56212),
|
||
|
(830, 56024),
|
||
|
(840, 62346),
|
||
|
(850, 59583),
|
||
|
(860, 57477),
|
||
|
(870, 56763),
|
||
|
(880, 56891),
|
||
|
(890, 54791),
|
||
|
(900, 55878),
|
||
|
(910, 54383),
|
||
|
(920, 54594),
|
||
|
(930, 54779),
|
||
|
(940, 54721),
|
||
|
(950, 54976),
|
||
|
(960, 54890),
|
||
|
(970, 54921),
|
||
|
(980, 54929),
|
||
|
(990, 55069),
|
||
|
(1000, 55110),
|
||
|
(1010, 55675),
|
||
|
(1020, 57084),
|
||
|
(1030, 58511),
|
||
|
(1040, 58725),
|
||
|
(1050, 59506),
|
||
|
(1060, 60498),
|
||
|
(1070, 62729),
|
||
|
(1080, 63675),
|
||
|
(1090, 64225),
|
||
|
(1100, 64607),
|
||
|
(1110, 65337),
|
||
|
(1120, 67527),
|
||
|
(1130, 65769),
|
||
|
(1140, 65712),
|
||
|
(1150, 65133),
|
||
|
(1160, 64530),
|
||
|
(1170, 65083),
|
||
|
(1180, 65451),
|
||
|
(1190, 64927),
|
||
|
(1200, 66665),
|
||
|
(1210, 68200),
|
||
|
(1220, 70238),
|
||
|
(1230, 72272),
|
||
|
(1240, 74862),
|
||
|
(1250, 77393),
|
||
|
(1260, 90007),
|
||
|
(1270, 89989),
|
||
|
(1280, 90317),
|
||
|
(1290, 89085),
|
||
|
(1300, 89867),
|
||
|
(1310, 89896),
|
||
|
(1320, 88303),
|
||
|
(1330, 88049),
|
||
|
(1340, 87744),
|
||
|
(1350, 88449),
|
||
|
(1360, 89547),
|
||
|
(1370, 90589),
|
||
|
(1380, 93502),
|
||
|
(1390, 93889),
|
||
|
(1400, 94315),
|
||
|
(1410, 95142),
|
||
|
(1420, 98384),
|
||
|
(1430, 99131),
|
||
|
(1440, 103998),
|
||
|
(1450, 102277),
|
||
|
(1460, 103992),
|
||
|
(1470, 106000),
|
||
|
(1480, 105960),
|
||
|
(1490, 109678),
|
||
|
(1500, 110972),
|
||
|
(1510, 110861),
|
||
|
(1520, 114622),
|
||
|
(1530, 119033),
|
||
|
(1540, 122392),
|
||
|
(1550, 121202),
|
||
|
(1560, 121773),
|
||
|
(1570, 124335),
|
||
|
(1580, 128502),
|
||
|
(1590, 130779),
|
||
|
(1600, 132780),
|
||
|
(1610, 135778),
|
||
|
(1620, 141292),
|
||
|
(1630, 141744),
|
||
|
(1640, 136584),
|
||
|
(1650, 140110),
|
||
|
(1660, 141461),
|
||
|
(1670, 139174),
|
||
|
(1680, 142406),
|
||
|
(1690, 150050),
|
||
|
(1700, 156269),
|
||
|
(1710, 157283),
|
||
|
(1720, 158085),
|
||
|
(1730, 158931),
|
||
|
(1740, 154644),
|
||
|
(1750, 155388),
|
||
|
(1760, 152779),
|
||
|
(1770, 151682),
|
||
|
(1780, 149647),
|
||
|
(1790, 144507),
|
||
|
(1800, 143324),
|
||
|
(1810, 144171),
|
||
|
(1820, 144580),
|
||
|
(1830, 141449),
|
||
|
(1840, 139113),
|
||
|
(1850, 135637),
|
||
|
(1860, 129574),
|
||
|
(1870, 124321),
|
||
|
(1880, 119062),
|
||
|
(1890, 114446),
|
||
|
(1900, 109406),
|
||
|
(1910, 105854),
|
||
|
(1920, 104861),
|
||
|
(1930, 102250),
|
||
|
(1940, 98704),
|
||
|
(1950, 97906),
|
||
|
(1960, 98738),
|
||
|
(1970, 98147),
|
||
|
(1980, 94073),
|
||
|
(1990, 88646),
|
||
|
(2000, 83503),
|
||
|
(2010, 81167),
|
||
|
(2020, 78390),
|
||
|
(2030, 73501),
|
||
|
(2040, 71495),
|
||
|
(2050, 68971),
|
||
|
(2060, 66484),
|
||
|
(2070, 64780),
|
||
|
(2080, 62488),
|
||
|
(2090, 59124),
|
||
|
(2100, 56963),
|
||
|
(2110, 55037),
|
||
|
(2120, 52282),
|
||
|
(2130, 50045),
|
||
|
(2140, 48638),
|
||
|
(2150, 46783),
|
||
|
(2160, 48194),
|
||
|
(2170, 46493),
|
||
|
(2180, 45299),
|
||
|
(2190, 44199),
|
||
|
(2200, 42657),
|
||
|
(2210, 41265),
|
||
|
(2220, 38577),
|
||
|
(2230, 36001),
|
||
|
(2240, 33838),
|
||
|
(2250, 31381),
|
||
|
(2260, 30262),
|
||
|
(2270, 28812),
|
||
|
(2280, 27107),
|
||
|
(2290, 25842),
|
||
|
(2300, 25865),
|
||
|
(2310, 25186),
|
||
|
(2320, 23732),
|
||
|
(2330, 21185),
|
||
|
(2340, 18564),
|
||
|
(2350, 17028),
|
||
|
(2360, 16239),
|
||
|
(2370, 15607),
|
||
|
(2380, 14477),
|
||
|
(2390, 13671),
|
||
|
(2400, 12906),
|
||
|
(2410, 12336),
|
||
|
(2420, 11296),
|
||
|
(2430, 10864),
|
||
|
(2440, 9934),
|
||
|
(2450, 9393),
|
||
|
(2460, 8790),
|
||
|
(2470, 8572),
|
||
|
(2480, 8408),
|
||
|
(2490, 8809),
|
||
|
(2500, 8465),
|
||
|
(2510, 8181),
|
||
|
(2520, 8110),
|
||
|
(2530, 8213),
|
||
|
(2540, 8098),
|
||
|
(2550, 7968),
|
||
|
(2560, 7695),
|
||
|
(2570, 7491),
|
||
|
(2580, 7294),
|
||
|
(2590, 6983),
|
||
|
(2600, 6874),
|
||
|
(2610, 6786),
|
||
|
(2620, 6471),
|
||
|
(2630, 6594),
|
||
|
(2640, 6591),
|
||
|
(2650, 6757),
|
||
|
(2660, 7133),
|
||
|
(2670, 7356),
|
||
|
(2680, 7262),
|
||
|
(2690, 6784),
|
||
|
(2700, 6326),
|
||
|
(2710, 6065),
|
||
|
(2720, 5742),
|
||
|
(2730, 5722),
|
||
|
(2740, 5833),
|
||
|
(2750, 6034),
|
||
|
(2760, 5777),
|
||
|
(2770, 5867),
|
||
|
(2780, 6003),
|
||
|
(2790, 5595),
|
||
|
(2800, 4554),
|
||
|
(2810, 3749),
|
||
|
(2820, 3102),
|
||
|
(2830, 2572),
|
||
|
(2840, 2097),
|
||
|
(2850, 1792),
|
||
|
(2860, 1535),
|
||
|
(2870, 1403),
|
||
|
(2880, 1244),
|
||
|
(2890, 1091),
|
||
|
(2900, 994),
|
||
|
(2910, 927),
|
||
|
(2920, 861),
|
||
|
(2930, 693),
|
||
|
(2940, 745),
|
||
|
(2950, 673),
|
||
|
(2960, 673),
|
||
|
(2970, 656),
|
||
|
(2980, 603),
|
||
|
(2990, 615),
|
||
|
(3000, 575),
|
||
|
(3010, 485),
|
||
|
(3020, 491),
|
||
|
(3030, 468),
|
||
|
(3040, 458),
|
||
|
(3050, 484),
|
||
|
(3060, 487),
|
||
|
(3070, 438),
|
||
|
(3080, 378),
|
||
|
(3090, 393),
|
||
|
(3100, 383),
|
||
|
(3110, 331),
|
||
|
(3120, 330),
|
||
|
(3130, 332),
|
||
|
(3140, 303),
|
||
|
(3150, 278),
|
||
|
(3160, 294),
|
||
|
(3170, 273),
|
||
|
(3180, 277),
|
||
|
(3190, 257),
|
||
|
(3200, 243),
|
||
|
(3210, 199),
|
||
|
(3220, 200),
|
||
|
(3230, 174),
|
||
|
(3240, 186),
|
||
|
(3250, 161),
|
||
|
(3260, 151),
|
||
|
(3270, 144),
|
||
|
(3280, 145),
|
||
|
(3290, 117),
|
||
|
(3300, 113),
|
||
|
(3310, 116),
|
||
|
(3320, 90),
|
||
|
(3330, 108),
|
||
|
(3340, 99),
|
||
|
(3350, 89),
|
||
|
(3360, 87),
|
||
|
(3370, 66),
|
||
|
(3380, 71),
|
||
|
(3390, 58),
|
||
|
(3400, 57),
|
||
|
(3410, 54),
|
||
|
(3420, 47),
|
||
|
(3430, 40),
|
||
|
(3440, 38),
|
||
|
(3450, 40),
|
||
|
(3460, 40),
|
||
|
(3470, 19),
|
||
|
(3480, 17),
|
||
|
(3490, 24),
|
||
|
(3500, 22),
|
||
|
(3510, 15),
|
||
|
(3520, 29),
|
||
|
(3530, 17),
|
||
|
(3540, 21),
|
||
|
(3550, 15),
|
||
|
(3560, 12),
|
||
|
(3570, 15),
|
||
|
(3580, 11),
|
||
|
(3590, 13),
|
||
|
(3600, 15),
|
||
|
(3610, 9),
|
||
|
(3620, 6),
|
||
|
(3630, 8),
|
||
|
(3640, 11),
|
||
|
(3650, 9),
|
||
|
(3660, 5),
|
||
|
(3670, 5),
|
||
|
(3680, 5),
|
||
|
(3690, 7),
|
||
|
(3700, 3),
|
||
|
(3710, 3),
|
||
|
(3720, 4),
|
||
|
(3730, 2),
|
||
|
(3740, 2),
|
||
|
(3750, 6),
|
||
|
(3760, 2),
|
||
|
(3770, 1),
|
||
|
(3780, 1),
|
||
|
(3790, 2),
|
||
|
(3800, 2),
|
||
|
(3810, 1),
|
||
|
(3820, 1),
|
||
|
(3830, 1),
|
||
|
(3840, 1),
|
||
|
(3851, 1),
|
||
|
]
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
main()
|