├── .gitignore ├── README.md ├── data ├── 2018-11-metropolitan-street.csv ├── BES-2017-General-Election-results-file-v1.0.xlsx ├── EU-referendum-result-data.csv ├── EconomistUK2017.csv ├── airpollutioneuston.csv ├── civcas.csv ├── e748ca99dacb2e0e67501d7ad1531665caf891c1 │ ├── 2018-10 │ │ └── 2018-10-metropolitan-street.csv │ └── 2018-11 │ │ └── 2018-11-metropolitan-street.csv ├── export_765673286280c76ffd08d10d31126349.csv ├── exportmap.csv ├── uk_650_wpc_2017_full_res_v1.8 │ ├── uk_650_wpc_2017_full_res_v1.8.dbf │ ├── uk_650_wpc_2017_full_res_v1.8.prj │ ├── uk_650_wpc_2017_full_res_v1.8.qml │ ├── uk_650_wpc_2017_full_res_v1.8.shp │ └── uk_650_wpc_2017_full_res_v1.8.shx └── ukmye2015 │ ├── Correction_MYEB3_23.03.17.docx │ ├── Correction_MYEB3_23.03.17.pdf │ ├── MYE1_population_summary_for_UK_2015.xls │ ├── MYE2_population_by_sex_and_age_for_local_authorities_UK_2015.xls │ ├── MYE3_population_change_for_local_authorities_UK_2015.xls │ ├── MYE4_population_summary_for_UK_countries_(7115).xls │ ├── MYE5_population_density_series_UK_(0115).xls │ ├── MYEB1_detailed_population_estimates_series_UK_(0115).csv │ ├── MYEB2_detailed_components_of_change_series_EW_(0215).csv │ ├── MYEB3_summary_components_of_change_series_UK_(0215).csv │ ├── MYEB_information_note.doc │ └── MYEB_information_note.pdf ├── figures ├── airpollution.png ├── airpollution1.png ├── airpollution2.png ├── airpollution3.png ├── airpollution4.png ├── changeturnoutandmajority.png ├── crime.png ├── crime01.png ├── crime02.png ├── crime03.png ├── crime04.png ├── crime05.png ├── crime06.png ├── crime07.png ├── crime08.png ├── crime09.png ├── crime10.png ├── devtools.png ├── lgbtmap.png ├── lgbtmap01.png ├── lgbtmap02.png ├── lgbtmap03.png ├── lgbtmap04.png ├── lgbtmap05.png ├── lgbtmap06.png ├── lgbtmap07.png ├── screenshot.png ├── simpledistributions.png ├── trump.png └── trump01.png ├── interactive-journalism-module.Rproj ├── module.org ├── presentation └── mozilla-devrel-light.css ├── website-template ├── index.html └── style.css ├── week1-intro.org ├── week2-ggplot.org ├── week3-map.org ├── week4-ge2019.org ├── week5-scraping-crime.org └── week7-web-scraping.org /.gitignore: -------------------------------------------------------------------------------- 1 | .Rproj.user 2 | .Rhistory 3 | .RData 4 | .Ruserdata 5 | .DS_Store 6 | .ipynb_checkpoints/ 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Interactive Journalism MA - Advanced Data and Coding module 2 | 3 | Module code: JOM299 4 | City University 5 | 2018-2019 6 | 7 | --- 8 | 9 | In this repo you will find all the course material and presentations for the 2017-2018 Advanced Data and Coding Module for City University MA in Interactive Journalism. 10 | 11 | ## Module outline and aims 12 | 13 | > Digital journalists increasingly need a complex skillset of developer knowledge, as well as a native understanding of application programming interfaces (APIs) and ‘scraping’ of online sources to be able to interrogate and investigate ‘big data’ in the public interest. 14 | 15 | > This module, which follows on from ‘Introduction to Data Reporting aims to train you to work effectively a professional digital journalist. By the end of this module you will have an advanced knowledge of data journalism, including skills to investigate and interrogate ‘big data’; demonstrate developer skills in a range of coding languages; be able to interrogate application programme interfaces (APIs) and deploy scraping tools; critically evaluate data sets and complex investigations; and appreciate the accountability role of digital data reporting for civil society in advanced democracies. 16 | 17 | from the module handbook 18 | 19 | ## What will i be expected to achieve? 20 | 21 | Upon successful completion of this module, you will be expected to be able to: 22 | 23 | #### Knowledge and understanding: 24 | 25 | * Demonstrate a critical understanding of the importance of digital data reporting as aform of accountability journalism in democratic society 26 | * Display an understanding of the roles, priorities and workflows of journalists, developers, and programmers who work with and enable the publication of digital journalism 27 | 28 | #### Skills: 29 | 30 | * Use judgment to analyse and evaluate suitable sources of data and datasets 31 | * Develop suitable problem-solving approaches to address typical challenges in a digitalnewsroom 32 | * Complexity in the use of skills using technologies application programme interfaces (APIs) and ‘scraping’ 33 | * Demonstrate developer skills in a range of coding languages 34 | 35 | #### Values and attitudes: 36 | 37 | * Display a comprehensive understanding of the ethical responsibilities of sourcing and publishing data 38 | * Be self-directed in learing and skills-training, particular in coding 39 | * Be cognisant of ongoing developments in current practice, scholarship and research of developer lead journalism 40 | 41 | --- 42 | 43 | # Teaching plan 44 | 45 | ## Weeks 1 to 7 - Project-based learning 46 | 47 | ## Weeks 8, 9, 10 - Final project work 48 | 49 | We will go round the room and take questions about final project. Come prepared with actual problems, be happy to work collaboratively and to make progress in class while we tackle challenges collectively, on the big screen. 50 | 51 | --- 52 | 53 | # Previous years' archive 54 | 55 | * [2016-2017](https://github.com/basilesimon/interactive-journalism-module/releases/tag/v1.0) 56 | * [2017-2018](https://github.com/basilesimon/interactive-journalism-module/releases/tag/v2.0) 57 | * [2018-2019](https://github.com/basilesimon/interactive-journalism-module/releases/tag/3.0) 58 | -------------------------------------------------------------------------------- /data/BES-2017-General-Election-results-file-v1.0.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/data/BES-2017-General-Election-results-file-v1.0.xlsx -------------------------------------------------------------------------------- /data/EU-referendum-result-data.csv: -------------------------------------------------------------------------------- 1 | "id","Region_Code","Region","Area_Code","Area","Electorate","ExpectedBallots","VerifiedBallotPapers","Pct_Turnout","Votes_Cast","Valid_Votes","Remain","Leave","Rejected_Ballots","No_official_mark","Voting_for_both_answers","Writing_or_mark","Unmarked_or_void","Pct_Remain","Pct_Leave","Pct_Rejected" 2 | "108","E12000006","East","E06000031","Peterborough","120892","87474","87469","72.35","87469","87392","34176","53216","77","0","32","7","38","39.11","60.89","0.09" 3 | "109","E12000006","East","E06000032","Luton","127612","84633","84636","66.31","84616","84481","36708","47773","135","0","85","0","50","43.45","56.55","0.16" 4 | "112","E12000006","East","E06000033","Southend-on-Sea","128856","93948","93939","72.90","93939","93870","39348","54522","69","0","21","0","48","41.92","58.08","0.07" 5 | "113","E12000006","East","E06000034","Thurrock","109897","79969","79954","72.75","79950","79916","22151","57765","34","0","8","3","23","27.72","72.28","0.04" 6 | "110","E12000006","East","E06000055","Bedford","119530","86136","86136","72.06","86135","86066","41497","44569","69","0","26","1","42","48.22","51.78","0.08" 7 | "111","E12000006","East","E06000056","Central Bedfordshire","204004","158904","158896","77.89","158894","158804","69670","89134","90","0","34","1","55","43.87","56.13","0.06" 8 | "184","E12000006","East","E07000008","Cambridge","80108","57871","57860","72.22","57852","57799","42682","15117","53","0","13","0","40","73.85","26.15","0.09" 9 | "185","E12000006","East","E07000009","East Cambridgeshire","62435","48129","48120","77.08","48124","48086","23599","24487","38","0","18","0","20","49.08","50.92","0.08" 10 | "186","E12000006","East","E07000010","Fenland","71447","52653","52649","73.69","52649","52626","15055","37571","23","0","10","1","12","28.61","71.39","0.04" 11 | "187","E12000006","East","E07000011","Huntingdonshire","128486","99996","99990","77.82","99990","99927","45729","54198","63","0","31","0","32","45.76","54.24","0.06" 12 | "188","E12000006","East","E07000012","South Cambridgeshire","114830","93268","93263","81.21","93250","93189","56128","37061","61","0","24","0","37","60.23","39.77","0.07" 13 | "222","E12000006","East","E07000066","Basildon","132771","98087","98071","73.86","98062","97999","30748","67251","63","3","26","2","32","31.38","68.62","0.06" 14 | "223","E12000006","East","E07000067","Braintree","112562","86316","86309","76.67","86303","86236","33523","52713","67","0","23","0","44","38.87","61.13","0.08" 15 | "224","E12000006","East","E07000068","Brentwood","58777","46726","46724","79.50","46725","46704","19077","27627","21","0","3","1","17","40.85","59.15","0.04" 16 | "225","E12000006","East","E07000069","Castle Point","68860","51909","51909","75.38","51909","51845","14154","37691","64","0","15","1","48","27.30","72.70","0.12" 17 | "226","E12000006","East","E07000070","Chelmsford","129971","100867","100866","77.60","100852","100794","47545","53249","58","0","23","2","33","47.17","52.83","0.06" 18 | "227","E12000006","East","E07000071","Colchester","127520","95805","95802","75.11","95782","95719","44414","51305","63","2","17","5","39","46.40","53.60","0.07" 19 | "228","E12000006","East","E07000072","Epping Forest","100016","76905","76900","76.89","76900","76852","28676","48176","48","0","21","2","25","37.31","62.69","0.06" 20 | "229","E12000006","East","E07000073","Harlow","59124","43493","43489","73.56","43489","43469","13867","29602","20","0","1","0","19","31.90","68.10","0.05" 21 | "230","E12000006","East","E07000074","Maldon","49073","38851","38850","79.17","38850","38831","14529","24302","19","1","9","1","8","37.42","62.58","0.05" 22 | "231","E12000006","East","E07000075","Rochford","66589","52487","52479","78.81","52479","52447","17510","34937","32","0","13","1","18","33.39","66.61","0.06" 23 | "232","E12000006","East","E07000076","Tendring","111167","82724","82725","74.40","82703","82657","25210","57447","46","0","17","2","27","30.50","69.50","0.06" 24 | "233","E12000006","East","E07000077","Uttlesford","64735","51973","51972","80.28","51972","51943","25619","26324","29","0","5","0","24","49.32","50.68","0.06" 25 | "251","E12000006","East","E07000095","Broxbourne","68997","50915","50907","73.78","50907","50872","17166","33706","35","0","14","0","21","33.74","66.26","0.07" 26 | "252","E12000006","East","E07000096","Dacorum","108965","86313","86308","79.21","86307","86244","42542","43702","63","4","24","0","35","49.33","50.67","0.07" 27 | "254","E12000006","East","E07000098","Hertsmere","73295","56161","56159","76.62","56159","56125","27593","28532","34","0","12","0","22","49.16","50.84","0.06" 28 | "255","E12000006","East","E07000099","North Hertfordshire","99316","77748","77741","78.27","77737","77672","42234","35438","65","0","29","1","35","54.37","45.63","0.08" 29 | "258","E12000006","East","E07000102","Three Rivers","67380","52900","52898","78.50","52896","52848","25751","27097","48","4","15","4","25","48.73","51.27","0.09" 30 | "259","E12000006","East","E07000103","Watford","65060","46635","46635","71.68","46635","46586","23167","23419","49","0","23","4","22","49.73","50.27","0.11" 31 | "299","E12000006","East","E07000143","Breckland","98989","73593","73593","74.34","73593","73548","26313","47235","45","0","10","0","35","35.78","64.22","0.06" 32 | "300","E12000006","East","E07000144","Broadland","99254","77785","77783","78.37","77781","77737","35469","42268","44","0","0","0","44","45.63","54.37","0.06" 33 | "301","E12000006","East","E07000145","Great Yarmouth","72634","50157","50156","69.06","50158","50128","14284","35844","30","0","14","7","9","28.50","71.50","0.06" 34 | "302","E12000006","East","E07000146","King's Lynn and West Norfolk","113884","85134","85128","74.75","85128","85080","28587","56493","48","0","13","3","32","33.60","66.40","0.06" 35 | "303","E12000006","East","E07000147","North Norfolk","83065","63841","63838","76.84","63829","63790","26214","37576","39","0","4","2","33","41.09","58.91","0.06" 36 | "304","E12000006","East","E07000148","Norwich","96091","66420","66423","69.12","66422","66366","37326","29040","56","0","17","1","38","56.24","43.76","0.08" 37 | "305","E12000006","East","E07000149","South Norfolk","102395","80418","80418","78.54","80418","80358","38817","41541","60","0","24","1","35","48.31","51.69","0.07" 38 | "345","E12000006","East","E07000200","Babergh","70628","55274","55274","78.26","55272","55242","25309","29933","30","0","13","0","17","45.81","54.19","0.05" 39 | "346","E12000006","East","E07000201","Forest Heath","38527","27976","27977","72.62","27977","27951","9791","18160","26","2","4","2","18","35.03","64.97","0.09" 40 | "347","E12000006","East","E07000202","Ipswich","91574","66405","66405","72.51","66400","66353","27698","38655","47","0","1","7","39","41.74","58.26","0.07" 41 | "348","E12000006","East","E07000203","Mid Suffolk","78325","61231","61231","78.16","61222","61185","27391","33794","37","0","4","0","33","44.77","55.23","0.06" 42 | "349","E12000006","East","E07000204","St Edmundsbury","81148","62258","62256","76.72","62255","62210","26986","35224","45","1","14","0","30","43.38","56.62","0.07" 43 | "350","E12000006","East","E07000205","Suffolk Coastal","98195","79234","79231","80.68","79226","79184","37218","41966","42","0","15","3","24","47.00","53.00","0.05" 44 | "351","E12000006","East","E07000206","Waveney","90391","65690","65687","72.67","65687","65646","24356","41290","41","0","11","0","30","37.10","62.90","0.06" 45 | "256","E12000006","East","E07000240","St Albans","104859","86519","86516","82.51","86524","86445","54208","32237","79","0","31","0","48","62.71","37.29","0.09" 46 | "260","E12000006","East","E07000241","Welwyn Hatfield","78146","58649","58641","75.04","58641","58610","27550","31060","31","0","10","0","21","47.01","52.99","0.05" 47 | "253","E12000006","East","E07000242","East Hertfordshire","106260","85446","85435","80.40","85433","85366","42372","42994","67","0","26","5","36","49.64","50.36","0.08" 48 | "257","E12000006","East","E07000243","Stevenage","62156","45811","45811","73.70","45811","45785","18659","27126","26","0","12","2","12","40.75","59.25","0.06" 49 | "88","E12000004","East Midlands","E06000015","Derby","171246","120807","120798","70.53","120772","120655","51612","69043","117","0","41","10","66","42.78","57.22","0.10" 50 | "89","E12000004","East Midlands","E06000016","Leicester","213819","139319","139309","65.15","139307","138972","70980","67992","335","0","154","8","173","51.08","48.92","0.24" 51 | "90","E12000004","East Midlands","E06000017","Rutland","29390","22989","22986","78.20","22984","22966","11353","11613","18","0","9","2","7","49.43","50.57","0.08" 52 | "91","E12000004","East Midlands","E06000018","Nottingham","195394","120792","120792","61.82","120791","120661","59318","61343","130","0","47","4","79","49.16","50.84","0.11" 53 | "195","E12000004","East Midlands","E07000032","Amber Valley","96760","73870","73868","76.34","73864","73820","29319","44501","44","0","7","1","36","39.72","60.28","0.06" 54 | "196","E12000004","East Midlands","E07000033","Bolsover","58063","41999","42000","72.33","41999","41972","12242","29730","27","0","5","1","21","29.17","70.83","0.06" 55 | "197","E12000004","East Midlands","E07000034","Chesterfield","79905","57472","57470","71.92","57470","57424","22946","34478","46","0","16","2","28","39.96","60.04","0.08" 56 | "198","E12000004","East Midlands","E07000035","Derbyshire Dales","57075","46756","46756","81.92","46756","46728","22633","24095","28","0","5","0","23","48.44","51.56","0.06" 57 | "199","E12000004","East Midlands","E07000036","Erewash","87596","66566","66566","75.99","66566","66530","25791","40739","36","0","15","1","20","38.77","61.23","0.05" 58 | "200","E12000004","East Midlands","E07000037","High Peak","72487","54864","54864","75.69","54864","54833","27116","27717","31","0","10","3","18","49.45","50.55","0.06" 59 | "201","E12000004","East Midlands","E07000038","North East Derbyshire","78855","59341","59341","75.25","59341","59310","22075","37235","31","0","13","2","16","37.22","62.78","0.05" 60 | "202","E12000004","East Midlands","E07000039","South Derbyshire","73856","56718","56718","76.80","56718","56695","22479","34216","23","0","5","0","18","39.65","60.35","0.04" 61 | "285","E12000004","East Midlands","E07000129","Blaby","73832","56517","56514","76.54","56512","56471","22888","33583","41","0","13","2","26","40.53","59.47","0.07" 62 | "286","E12000004","East Midlands","E07000130","Charnwood","133780","94265","94258","70.46","94257","94172","43500","50672","85","0","47","0","38","46.19","53.81","0.09" 63 | "287","E12000004","East Midlands","E07000131","Harborough","67420","54922","54918","81.44","54910","54878","27028","27850","32","0","1","2","29","49.25","50.75","0.06" 64 | "288","E12000004","East Midlands","E07000132","Hinckley and Bosworth","85305","65517","65516","76.80","65516","65470","25969","39501","46","0","6","0","40","39.67","60.33","0.07" 65 | "289","E12000004","East Midlands","E07000133","Melton","37273","30322","30322","81.36","30327","30305","12695","17610","22","0","9","1","12","41.89","58.11","0.07" 66 | "290","E12000004","East Midlands","E07000134","North West Leicestershire","73944","57655","57655","77.95","57638","57611","22642","34969","27","0","6","0","21","39.30","60.70","0.05" 67 | "291","E12000004","East Midlands","E07000135","Oadby and Wigston","42684","31488","31488","73.77","31489","31465","14292","17173","24","0","9","0","15","45.42","54.58","0.08" 68 | "292","E12000004","East Midlands","E07000136","Boston","39363","30417","30417","77.27","30416","30404","7430","22974","12","0","1","1","10","24.44","75.56","0.04" 69 | "293","E12000004","East Midlands","E07000137","East Lindsey","107009","80180","80179","74.93","80178","80128","23515","56613","50","2","21","0","27","29.35","70.65","0.06" 70 | "294","E12000004","East Midlands","E07000138","Lincoln","63351","43928","43928","69.34","43928","43894","18902","24992","34","0","17","0","17","43.06","56.94","0.08" 71 | "295","E12000004","East Midlands","E07000139","North Kesteven","86468","67791","67791","78.40","67791","67753","25570","42183","38","0","13","1","24","37.74","62.26","0.06" 72 | "296","E12000004","East Midlands","E07000140","South Holland","65701","49518","49518","75.37","49518","49497","13074","36423","21","0","8","0","13","26.41","73.59","0.04" 73 | "297","E12000004","East Midlands","E07000141","South Kesteven","105457","82527","82525","78.25","82523","82471","33047","49424","52","0","14","4","34","40.07","59.93","0.06" 74 | "298","E12000004","East Midlands","E07000142","West Lindsey","73499","54785","54781","74.53","54781","54753","20906","33847","28","0","7","4","17","38.18","61.82","0.05" 75 | "306","E12000004","East Midlands","E07000150","Corby","43313","32103","32100","74.10","32097","32081","11470","20611","16","0","4","0","12","35.75","64.25","0.05" 76 | "307","E12000004","East Midlands","E07000151","Daventry","61004","49421","49420","81.01","49420","49381","20443","28938","39","0","10","2","27","41.40","58.60","0.08" 77 | "308","E12000004","East Midlands","E07000152","East Northamptonshire","68334","52619","52614","76.99","52607","52574","21680","30894","33","0","6","2","25","41.24","58.76","0.06" 78 | "309","E12000004","East Midlands","E07000153","Kettering","70570","53946","53941","76.43","53940","53907","21030","32877","33","1","12","0","20","39.01","60.99","0.06" 79 | "310","E12000004","East Midlands","E07000154","Northampton","144948","105352","105350","72.68","105354","105259","43805","61454","95","0","35","7","53","41.62","58.38","0.09" 80 | "311","E12000004","East Midlands","E07000155","South Northamptonshire","71309","56666","56659","79.46","56664","56624","25853","30771","40","0","18","1","21","45.66","54.34","0.07" 81 | "312","E12000004","East Midlands","E07000156","Wellingborough","54572","41184","41177","75.46","41178","41141","15462","25679","37","0","18","2","17","37.58","62.42","0.09" 82 | "320","E12000004","East Midlands","E07000170","Ashfield","91916","66948","66947","72.83","66946","66899","20179","46720","47","1","15","1","30","30.16","69.84","0.07" 83 | "321","E12000004","East Midlands","E07000171","Bassetlaw","85547","64006","64005","74.82","64003","63967","20575","43392","36","1","10","5","20","32.17","67.83","0.06" 84 | "322","E12000004","East Midlands","E07000172","Broxtowe","83593","65468","65468","78.32","65468","65426","29672","35754","42","0","8","1","33","45.35","54.65","0.06" 85 | "323","E12000004","East Midlands","E07000173","Gedling","88298","67639","67635","76.60","67635","67577","30035","37542","58","2","17","1","38","44.45","55.55","0.09" 86 | "324","E12000004","East Midlands","E07000174","Mansfield","77624","56371","56369","72.62","56370","56344","16417","39927","26","0","8","0","18","29.14","70.86","0.05" 87 | "325","E12000004","East Midlands","E07000175","Newark and Sherwood","87338","67133","67128","76.86","67128","67087","26571","40516","41","0","14","2","25","39.61","60.39","0.06" 88 | "326","E12000004","East Midlands","E07000176","Rushcliffe","86401","70472","70470","81.56","70470","70410","40522","29888","60","0","20","0","40","57.55","42.45","0.09" 89 | "1","E12000007","London","E09000001","City of London","5987","4405","4405","73.58","4405","4399","3312","1087","6","0","2","0","4","75.29","24.71","0.14" 90 | "2","E12000007","London","E09000002","Barking and Dagenham","115812","73943","73941","63.85","73941","73880","27750","46130","61","0","21","0","40","37.56","62.44","0.08" 91 | "3","E12000007","London","E09000003","Barnet","223467","161209","161208","72.14","161218","161033","100210","60823","185","0","54","12","119","62.23","37.77","0.11" 92 | "4","E12000007","London","E09000004","Bexley","170779","128571","128570","75.28","128570","128489","47603","80886","81","5","35","0","41","37.05","62.95","0.06" 93 | "5","E12000007","London","E09000005","Brent","186793","121676","121678","65.14","121671","121404","72523","48881","267","0","157","0","110","59.74","40.26","0.22" 94 | "6","E12000007","London","E09000006","Bromley","231473","182570","182570","78.87","182570","182432","92398","90034","138","0","43","0","95","50.65","49.35","0.08" 95 | "7","E12000007","London","E09000007","Camden","145425","95288","95282","65.52","95281","95133","71295","23838","148","0","54","8","86","74.94","25.06","0.16" 96 | "8","E12000007","London","E09000008","Croydon","245349","171295","171292","69.81","171289","171134","92913","78221","155","0","73","5","77","54.29","45.71","0.09" 97 | "9","E12000007","London","E09000009","Ealing","212991","149267","149267","70.08","149268","149041","90024","59017","227","0","115","3","109","60.40","39.60","0.15" 98 | "10","E12000007","London","E09000010","Enfield","198387","137054","137056","69.09","137056","136906","76425","60481","150","0","69","1","80","55.82","44.18","0.11" 99 | "11","E12000007","London","E09000011","Greenwich","168967","117470","117472","69.52","117470","117365","65248","52117","105","0","35","1","69","55.59","44.41","0.09" 100 | "12","E12000007","London","E09000012","Hackney","163284","106422","106422","65.18","106422","106266","83398","22868","156","7","44","35","70","78.48","21.52","0.15" 101 | "13","E12000007","London","E09000013","Hammersmith and Fulham","114863","80351","80350","69.95","80347","80242","56188","24054","105","0","32","8","65","70.02","29.98","0.13" 102 | "14","E12000007","London","E09000014","Haringey","150098","106043","106034","70.64","106032","105846","79991","25855","186","0","71","0","115","75.57","24.43","0.18" 103 | "15","E12000007","London","E09000015","Harrow","162397","117363","117361","72.26","117352","117225","64042","53183","127","0","50","6","71","54.63","45.37","0.11" 104 | "16","E12000007","London","E09000016","Havering","183082","139179","139176","76.02","139175","139086","42201","96885","89","1","25","1","62","30.34","69.66","0.06" 105 | "17","E12000007","London","E09000017","Hillingdon","193033","133171","133171","68.99","133170","133022","58040","74982","148","0","55","16","77","43.63","56.37","0.11" 106 | "18","E12000007","London","E09000018","Hounslow","165050","115211","115209","69.80","115208","115076","58755","56321","132","0","39","6","87","51.06","48.94","0.11" 107 | "19","E12000007","London","E09000019","Islington","144514","101739","101726","70.39","101723","101600","76420","25180","123","0","47","2","74","75.22","24.78","0.12" 108 | "20","E12000007","London","E09000020","Kensington and Chelsea","83042","54803","54801","65.99","54801","54739","37601","17138","62","0","14","2","46","68.69","31.31","0.11" 109 | "21","E12000007","London","E09000021","Kingston upon Thames","108838","85334","85335","78.40","85330","85270","52533","32737","60","0","16","3","41","61.61","38.39","0.07" 110 | "22","E12000007","London","E09000022","Lambeth","210800","142162","142162","67.44","142162","141924","111584","30340","238","0","104","0","134","78.62","21.38","0.17" 111 | "23","E12000007","London","E09000023","Lewisham","197514","124634","124622","63.10","124637","124473","86955","37518","164","0","61","1","102","69.86","30.14","0.13" 112 | "24","E12000007","London","E09000024","Merton","136352","100215","100207","73.49","100207","100100","63003","37097","107","0","45","0","62","62.94","37.06","0.11" 113 | "25","E12000007","London","E09000025","Newham","176985","104869","104861","59.25","104864","104699","55328","49371","165","9","87","0","69","52.84","47.16","0.16" 114 | "26","E12000007","London","E09000026","Redbridge","189843","128439","128423","67.63","128397","128233","69213","59020","164","0","78","3","83","53.97","46.03","0.13" 115 | "27","E12000007","London","E09000027","Richmond upon Thames","132632","108892","108888","82.09","108876","108806","75396","33410","70","0","26","2","42","69.29","30.71","0.06" 116 | "28","E12000007","London","E09000028","Southwark","195875","129688","129680","66.20","129677","129502","94293","35209","175","0","60","5","110","72.81","27.19","0.13" 117 | "29","E12000007","London","E09000029","Sutton","140288","106633","106630","76.01","106633","106560","49319","57241","73","0","25","7","41","46.28","53.72","0.07" 118 | "30","E12000007","London","E09000030","Tower Hamlets","167820","108421","108403","64.60","108420","108235","73011","35224","185","0","105","6","74","67.46","32.54","0.17" 119 | "31","E12000007","London","E09000031","Waltham Forest","162983","108695","108689","66.69","108689","108551","64156","44395","138","4","44","9","81","59.10","40.90","0.13" 120 | "32","E12000007","London","E09000032","Wandsworth","219521","158018","158018","71.98","158018","157884","118463","39421","134","0","55","0","79","75.03","24.97","0.08" 121 | "33","E12000007","London","E09000033","Westminster","120524","78325","78325","64.99","78325","78196","53928","24268","129","0","47","1","81","68.97","31.03","0.16" 122 | "70","E12000001","North East","E06000001","Hartlepool","70341","46137","46134","65.59","46134","46100","14029","32071","34","0","12","6","16","30.43","69.57","0.07" 123 | "71","E12000001","North East","E06000002","Middlesbrough","94612","61395","61393","64.89","61393","61358","21181","40177","35","0","16","1","18","34.52","65.48","0.06" 124 | "72","E12000001","North East","E06000003","Redcar and Cleveland","103529","72741","72741","70.26","72741","72714","24586","48128","27","0","6","0","21","33.81","66.19","0.04" 125 | "73","E12000001","North East","E06000004","Stockton-on-Tees","141486","100462","100460","71.00","100460","100415","38433","61982","45","2","13","2","28","38.27","61.73","0.04" 126 | "74","E12000001","North East","E06000005","Darlington","77662","55194","55195","71.07","55195","55166","24172","30994","29","0","0","0","29","43.82","56.18","0.05" 127 | "75","E12000001","North East","E06000047","County Durham","389507","267577","267546","68.69","267546","267398","113521","153877","148","3","35","1","109","42.45","57.55","0.06" 128 | "76","E12000001","North East","E06000057","Northumberland","240496","178830","178815","74.35","178815","178721","82022","96699","94","3","30","6","55","45.89","54.11","0.05" 129 | "54","E12000001","North East","E08000021","Newcastle upon Tyne","190735","129072","129072","67.67","129072","129003","65405","63598","69","0","20","5","44","50.70","49.30","0.05" 130 | "55","E12000001","North East","E08000022","North Tyneside","156993","113527","113507","72.30","113507","113462","52873","60589","45","0","17","3","25","46.60","53.40","0.04" 131 | "56","E12000001","North East","E08000023","South Tyneside","115893","79126","79117","68.27","79117","79079","30014","49065","38","0","10","1","27","37.95","62.05","0.05" 132 | "57","E12000001","North East","E08000024","Sunderland","207221","134404","134400","64.86","134400","134324","51930","82394","76","0","13","2","61","38.66","61.34","0.06" 133 | "53","E12000001","North East","E08000037","Gateshead","145866","103009","103007","70.62","103007","102958","44429","58529","49","0","13","3","33","43.15","56.85","0.05" 134 | "78","E12000002","North West","E06000006","Halton","95289","65047","65047","68.26","65047","65005","27678","37327","42","0","7","1","34","42.58","57.42","0.06" 135 | "79","E12000002","North West","E06000007","Warrington","157042","115206","115206","73.36","115205","115144","52657","62487","61","0","17","1","43","45.73","54.27","0.05" 136 | "81","E12000002","North West","E06000008","Blackburn with Darwen","100117","65416","65408","65.33","65408","65321","28522","36799","87","0","40","4","43","43.66","56.34","0.13" 137 | "82","E12000002","North West","E06000009","Blackpool","102354","66959","66959","65.42","66959","66927","21781","45146","32","0","8","3","21","32.54","67.46","0.05" 138 | "77","E12000002","North West","E06000049","Cheshire East","285957","221229","221229","77.36","221229","221125","107962","113163","104","19","40","3","42","48.82","51.18","0.05" 139 | "80","E12000002","North West","E06000050","Cheshire West and Chester","259878","193640","193633","74.51","193633","193537","95455","98082","96","0","27","11","58","49.32","50.68","0.05" 140 | "189","E12000002","North West","E07000026","Allerdale","74426","54268","54268","72.92","54268","54238","22429","31809","30","0","13","0","17","41.35","58.65","0.06" 141 | "190","E12000002","North West","E07000027","Barrow-in-Furness","53194","36104","36101","67.87","36101","36074","14207","21867","27","0","9","0","18","39.38","60.62","0.07" 142 | "191","E12000002","North West","E07000028","Carlisle","80124","59723","59721","74.54","59721","59683","23788","35895","38","0","13","2","23","39.86","60.14","0.06" 143 | "192","E12000002","North West","E07000029","Copeland","54206","37974","37975","70.06","37975","37947","14419","23528","28","0","9","3","16","38.00","62.00","0.07" 144 | "193","E12000002","North West","E07000030","Eden","41872","31746","31746","75.82","31746","31718","14807","16911","28","0","12","1","15","46.68","53.32","0.09" 145 | "194","E12000002","North West","E07000031","South Lakeland","81948","65375","65375","79.78","65375","65331","34531","30800","44","0","12","2","30","52.86","47.14","0.07" 146 | "273","E12000002","North West","E07000117","Burnley","64461","43354","43350","67.25","43350","43316","14462","28854","34","0","11","0","23","33.39","66.61","0.08" 147 | "274","E12000002","North West","E07000118","Chorley","84159","63564","63562","75.52","63560","63515","27417","36098","45","4","6","5","30","43.17","56.83","0.07" 148 | "275","E12000002","North West","E07000119","Fylde","61174","46227","46227","75.57","46227","46206","19889","26317","21","0","5","1","15","43.04","56.96","0.05" 149 | "276","E12000002","North West","E07000120","Hyndburn","62042","40173","40168","64.74","40168","40137","13569","26568","31","0","13","3","15","33.81","66.19","0.08" 150 | "277","E12000002","North West","E07000121","Lancaster","100567","73102","73098","72.69","73098","73041","35732","37309","57","0","12","2","43","48.92","51.08","0.08" 151 | "278","E12000002","North West","E07000122","Pendle","64534","45389","45388","70.33","45388","45335","16704","28631","53","0","15","7","31","36.85","63.15","0.12" 152 | "279","E12000002","North West","E07000123","Preston","94284","64794","64794","68.72","64794","64745","30227","34518","49","2","19","0","28","46.69","53.31","0.08" 153 | "280","E12000002","North West","E07000124","Ribble Valley","46148","36473","36466","79.02","36466","36442","15892","20550","24","3","6","1","14","43.61","56.39","0.07" 154 | "281","E12000002","North West","E07000125","Rossendale","52750","38205","38204","72.43","38205","38181","15012","23169","24","0","9","1","14","39.32","60.68","0.06" 155 | "282","E12000002","North West","E07000126","South Ribble","84573","63756","63755","75.38","63755","63724","26406","37318","31","0","15","2","14","41.44","58.56","0.05" 156 | "283","E12000002","North West","E07000127","West Lancashire","85834","63921","63918","74.47","63918","63869","28546","35323","49","0","13","1","35","44.69","55.31","0.08" 157 | "284","E12000002","North West","E07000128","Wyre","84471","63031","63028","74.61","63028","62979","22816","40163","49","3","19","8","19","36.23","63.77","0.08" 158 | "34","E12000002","North West","E08000001","Bolton","197109","138206","138180","70.10","138180","138080","57589","80491","100","2","43","2","53","41.71","58.29","0.07" 159 | "35","E12000002","North West","E08000002","Bury","141600","101153","101144","71.43","101144","101028","46354","54674","116","0","34","10","72","45.88","54.12","0.11" 160 | "36","E12000002","North West","E08000003","Manchester","338064","202073","202067","59.77","202067","201814","121823","79991","253","0","78","0","175","60.36","39.64","0.13" 161 | "37","E12000002","North West","E08000004","Oldham","158084","107493","107493","68.00","107493","107403","42034","65369","90","0","24","2","64","39.14","60.86","0.08" 162 | "38","E12000002","North West","E08000005","Rochdale","156621","103319","103319","65.97","103319","103231","41217","62014","88","0","48","2","38","39.93","60.07","0.09" 163 | "39","E12000002","North West","E08000006","Salford","173668","109926","109926","63.30","109926","109815","47430","62385","111","0","34","4","73","43.19","56.81","0.10" 164 | "40","E12000002","North West","E08000007","Stockport","221162","163586","163584","73.97","163584","163489","85559","77930","95","0","27","4","64","52.33","47.67","0.06" 165 | "41","E12000002","North West","E08000008","Tameside","168047","111018","111016","66.06","111016","110947","43118","67829","69","0","14","5","50","38.86","61.14","0.06" 166 | "42","E12000002","North West","E08000009","Trafford","165294","125400","125400","75.86","125400","125311","72293","53018","89","0","23","5","61","57.69","42.31","0.07" 167 | "43","E12000002","North West","E08000010","Wigan","235982","163381","163381","69.23","163381","163273","58942","104331","108","7","32","2","67","36.10","63.90","0.07" 168 | "44","E12000002","North West","E08000011","Knowsley","111647","70939","70937","63.54","70937","70903","34345","36558","34","4","14","1","15","48.44","51.56","0.05" 169 | "45","E12000002","North West","E08000012","Liverpool","317924","203733","203728","64.08","203728","203554","118453","85101","174","0","60","4","110","58.19","41.81","0.09" 170 | "46","E12000002","North West","E08000013","St. Helens","136096","93730","93721","68.86","93721","93679","39322","54357","42","0","13","3","26","41.98","58.02","0.04" 171 | "47","E12000002","North West","E08000014","Sefton","206298","147970","147970","71.73","147970","147878","76702","71176","92","0","26","0","66","51.87","48.13","0.06" 172 | "48","E12000002","North West","E08000015","Wirral","242568","172137","172137","70.96","172137","172000","88931","83069","137","0","31","4","102","51.70","48.30","0.08" 173 | "381","N92000002","Northern Ireland","N92000002","Northern Ireland","1260955","790647","790523","62.69","790523","790149","440707","349442","374","18","148","1","207","55.78","44.22","0.05" 174 | "153","S92000003","Scotland","S12000005","Clackmannanshire","37841","25439","25439","67.23","25439","25427","14691","10736","12","0","6","0","6","57.78","42.22","0.05" 175 | "155","S92000003","Scotland","S12000006","Dumfries and Galloway","115837","82718","82715","71.41","82715","82667","43864","38803","48","0","13","1","34","53.06","46.94","0.06" 176 | "157","S92000003","Scotland","S12000008","East Ayrshire","91977","57859","57859","62.91","57859","57833","33891","23942","26","0","8","0","18","58.60","41.40","0.04" 177 | "159","S92000003","Scotland","S12000010","East Lothian","77788","55822","55800","71.73","55800","55764","36026","19738","36","0","12","0","24","64.60","35.40","0.06" 178 | "160","S92000003","Scotland","S12000011","East Renfrewshire","69575","52970","52969","76.13","52969","52941","39345","13596","28","0","7","0","21","74.32","25.68","0.05" 179 | "179","S92000003","Scotland","S12000013","Eilean Siar","21259","14919","14919","70.18","14919","14903","8232","6671","16","0","3","0","13","55.24","44.76","0.11" 180 | "162","S92000003","Scotland","S12000014","Falkirk","117392","79304","79302","67.55","79302","79258","44987","34271","44","0","7","2","35","56.76","43.24","0.06" 181 | "163","S92000003","Scotland","S12000015","Fife","272995","182307","182307","66.78","182307","182220","106754","75466","87","2","29","4","52","58.59","41.41","0.05" 182 | "165","S92000003","Scotland","S12000017","Highland","175563","125728","125728","71.61","125728","125657","70308","55349","71","0","27","2","42","55.95","44.05","0.06" 183 | "166","S92000003","Scotland","S12000018","Inverclyde","58624","38722","38722","66.05","38722","38698","24688","14010","24","0","6","0","18","63.80","36.20","0.06" 184 | "167","S92000003","Scotland","S12000019","Midlothian","66758","45505","45497","68.15","45497","45468","28217","17251","29","0","8","0","21","62.06","37.94","0.06" 185 | "168","S92000003","Scotland","S12000020","Moray","71370","48148","48139","67.45","48139","48106","24114","23992","33","0","16","3","14","50.13","49.87","0.07" 186 | "169","S92000003","Scotland","S12000021","North Ayrshire","104572","67548","67548","64.59","67548","67504","38394","29110","44","0","16","0","28","56.88","43.12","0.07" 187 | "171","S92000003","Scotland","S12000023","Orkney Islands","16658","11402","11402","68.45","11402","11382","7189","4193","20","0","8","0","12","63.16","36.84","0.18" 188 | "172","S92000003","Scotland","S12000024","Perth and Kinross","110224","81294","81294","73.75","81294","81255","49641","31614","39","1","14","0","24","61.09","38.91","0.05" 189 | "152","S92000003","Scotland","S12000026","Scottish Borders","88440","64953","64953","73.44","64953","64914","37952","26962","39","0","14","0","25","58.47","41.53","0.06" 190 | "174","S92000003","Scotland","S12000027","Shetland Islands","17375","12231","12231","70.39","12231","12222","6907","5315","9","0","2","0","7","56.51","43.49","0.07" 191 | "175","S92000003","Scotland","S12000028","South Ayrshire","88116","61542","61542","69.84","61542","61506","36265","25241","36","0","14","2","20","58.96","41.04","0.06" 192 | "176","S92000003","Scotland","S12000029","South Lanarkshire","248949","162691","162683","65.35","162683","162592","102568","60024","91","0","30","1","60","63.08","36.92","0.06" 193 | "177","S92000003","Scotland","S12000030","Stirling","66100","48931","48931","74.03","48931","48899","33112","15787","32","0","11","1","20","67.72","32.28","0.07" 194 | "148","S92000003","Scotland","S12000033","Aberdeen City","154266","104809","104809","67.94","104809","104714","63985","40729","95","0","34","2","59","61.10","38.90","0.09" 195 | "149","S92000003","Scotland","S12000034","Aberdeenshire","196809","139014","139014","70.63","139014","138961","76445","62516","53","0","19","1","33","55.01","44.99","0.04" 196 | "151","S92000003","Scotland","S12000035","Argyll and Bute","66642","48734","48734","73.13","48734","48696","29494","19202","38","0","16","1","21","60.57","39.43","0.08" 197 | "161","S92000003","Scotland","S12000036","City of Edinburgh","346073","252490","252481","72.96","252481","252294","187796","64498","187","0","71","1","115","74.44","25.56","0.07" 198 | "173","S92000003","Scotland","S12000038","Renfrewshire","127294","88203","88197","69.29","88197","88129","57119","31010","68","0","17","5","46","64.81","35.19","0.08" 199 | "154","S92000003","Scotland","S12000039","West Dunbartonshire","67595","43250","43245","63.98","43245","43220","26794","16426","25","0","9","0","16","61.99","38.01","0.06" 200 | "178","S92000003","Scotland","S12000040","West Lothian","130925","88556","88556","67.64","88556","88508","51560","36948","48","0","22","2","24","58.25","41.75","0.05" 201 | "150","S92000003","Scotland","S12000041","Angus","87137","59295","59282","68.03","59282","59258","32747","26511","24","0","9","1","14","55.26","44.74","0.04" 202 | "156","S92000003","Scotland","S12000042","Dundee City","105554","66418","66418","62.92","66418","66385","39688","26697","33","0","12","0","21","59.78","40.22","0.05" 203 | "170","S92000003","Scotland","S12000044","North Lanarkshire","254567","155045","155045","60.91","155045","154949","95549","59400","96","2","19","2","73","61.66","38.34","0.06" 204 | "158","S92000003","Scotland","S12000045","East Dunbartonshire","83031","62418","62418","75.17","62418","62374","44534","17840","44","0","7","0","37","71.40","28.60","0.07" 205 | "164","S92000003","Scotland","S12000046","Glasgow City","449806","253000","253000","56.25","253000","252809","168335","84474","191","1","67","7","116","66.59","33.41","0.08" 206 | "114","E12000008","South East","E06000035","Medway","192524","138975","138975","72.18","138973","138886","49889","88997","87","0","27","9","51","35.92","64.08","0.06" 207 | "115","E12000008","South East","E06000036","Bracknell Forest","85298","64928","64922","76.11","64922","64890","29888","35002","32","0","10","0","22","46.06","53.94","0.05" 208 | "116","E12000008","South East","E06000037","West Berkshire","116757","93347","93345","79.95","93345","93277","48300","44977","68","0","27","4","37","51.78","48.22","0.07" 209 | "117","E12000008","South East","E06000038","Reading","103172","74832","74825","72.53","74826","74767","43385","31382","59","0","32","0","27","58.03","41.97","0.08" 210 | "118","E12000008","South East","E06000039","Slough","87873","54605","54604","62.13","54598","54542","24911","29631","56","1","32","2","21","45.67","54.33","0.10" 211 | "119","E12000008","South East","E06000040","Windsor and Maidenhead","102665","81866","81865","79.73","81855","81792","44086","37706","63","0","14","2","47","53.90","46.10","0.08" 212 | "120","E12000008","South East","E06000041","Wokingham","121891","97559","97551","80.03","97551","97501","55272","42229","50","0","23","2","25","56.69","43.31","0.05" 213 | "121","E12000008","South East","E06000042","Milton Keynes","177211","130535","130536","73.66","130534","130456","63393","67063","78","0","32","1","45","48.59","51.41","0.06" 214 | "122","E12000008","South East","E06000043","Brighton and Hove","198293","146846","146840","74.05","146829","146675","100648","46027","154","0","49","6","99","68.62","31.38","0.10" 215 | "123","E12000008","South East","E06000044","Portsmouth","140517","98799","98786","70.30","98786","98720","41384","57336","66","0","27","0","39","41.92","58.08","0.07" 216 | "124","E12000008","South East","E06000045","Southampton","158171","107775","107772","68.14","107775","107665","49738","57927","110","0","42","25","43","46.20","53.80","0.10" 217 | "125","E12000008","South East","E06000046","Isle of Wight","109844","79431","79430","72.31","79430","79380","30207","49173","50","0","24","2","24","38.05","61.95","0.06" 218 | "180","E12000008","South East","E07000004","Aylesbury Vale","136235","106908","106895","78.46","106895","106833","52877","53956","62","0","25","2","35","49.50","50.50","0.06" 219 | "181","E12000008","South East","E07000005","Chiltern","70185","58655","58651","83.57","58651","58604","32241","26363","47","0","15","0","32","55.02","44.98","0.08" 220 | "182","E12000008","South East","E07000006","South Bucks","52194","40755","40755","78.08","40755","40724","20077","20647","31","0","10","5","16","49.30","50.70","0.08" 221 | "183","E12000008","South East","E07000007","Wycombe","125260","94869","94869","75.74","94869","94790","49261","45529","79","0","26","1","52","51.97","48.03","0.08" 222 | "217","E12000008","South East","E07000061","Eastbourne","71726","53600","53598","74.73","53598","53545","22845","30700","53","2","15","5","31","42.67","57.33","0.10" 223 | "218","E12000008","South East","E07000062","Hastings","61957","44390","44387","71.64","44387","44350","20011","24339","37","0","12","4","21","45.12","54.88","0.08" 224 | "219","E12000008","South East","E07000063","Lewes","76428","59528","59531","77.89","59531","59482","30974","28508","49","0","20","0","29","52.07","47.93","0.08" 225 | "220","E12000008","South East","E07000064","Rother","72755","57717","57715","79.33","57715","57669","23916","33753","46","0","16","0","30","41.47","58.53","0.08" 226 | "221","E12000008","South East","E07000065","Wealden","121141","96966","96958","80.03","96944","96892","44084","52808","52","1","16","0","35","45.50","54.50","0.05" 227 | "240","E12000008","South East","E07000084","Basingstoke and Deane","128677","100395","100395","78.02","100395","100328","48257","52071","67","0","25","2","40","48.10","51.90","0.07" 228 | "241","E12000008","South East","E07000085","East Hampshire","90588","73971","73971","81.65","73967","73922","37346","36576","45","0","12","1","32","50.52","49.48","0.06" 229 | "242","E12000008","South East","E07000086","Eastleigh","97280","76148","76148","78.28","76148","76074","36172","39902","74","0","29","1","44","47.55","52.45","0.10" 230 | "243","E12000008","South East","E07000087","Fareham","90175","71772","71772","79.59","71772","71735","32210","39525","37","0","9","4","24","44.90","55.10","0.05" 231 | "244","E12000008","South East","E07000088","Gosport","62781","46150","46150","73.51","46150","46127","16671","29456","23","0","10","3","10","36.14","63.86","0.05" 232 | "245","E12000008","South East","E07000089","Hart","69946","57836","57822","82.67","57827","57795","30282","27513","32","0","9","0","23","52.40","47.60","0.06" 233 | "246","E12000008","South East","E07000090","Havant","95366","70672","70670","74.10","70670","70629","26582","44047","41","0","24","0","17","37.64","62.36","0.06" 234 | "247","E12000008","South East","E07000091","New Forest","141061","111786","111786","79.25","111786","111740","47199","64541","46","0","8","2","36","42.24","57.76","0.04" 235 | "248","E12000008","South East","E07000092","Rushmoor","65790","48803","48800","74.18","48800","48780","20384","28396","20","0","6","1","13","41.79","58.21","0.04" 236 | "249","E12000008","South East","E07000093","Test Valley","94559","75316","75316","79.65","75316","75261","36170","39091","55","0","13","4","38","48.06","51.94","0.07" 237 | "250","E12000008","South East","E07000094","Winchester","89595","72801","72801","81.26","72801","72764","42878","29886","37","0","12","2","23","58.93","41.07","0.05" 238 | "261","E12000008","South East","E07000105","Ashford","90516","69828","69828","77.14","69827","69786","28314","41472","41","0","13","0","28","40.57","59.43","0.06" 239 | "262","E12000008","South East","E07000106","Canterbury","109399","82105","82105","75.05","82105","82048","40169","41879","57","0","21","1","35","48.96","51.04","0.07" 240 | "263","E12000008","South East","E07000107","Dartford","73951","55884","55883","75.57","55883","55855","19985","35870","28","0","9","1","18","35.78","64.22","0.05" 241 | "264","E12000008","South East","E07000108","Dover","85011","65057","65057","76.53","65057","65016","24606","40410","41","0","10","0","31","37.85","62.15","0.06" 242 | "265","E12000008","South East","E07000109","Gravesham","72808","54554","54553","74.93","54553","54519","18876","35643","34","0","6","0","28","34.62","65.38","0.06" 243 | "266","E12000008","South East","E07000110","Maidstone","117298","89177","89173","76.02","89173","89127","36762","52365","46","3","8","1","34","41.25","58.75","0.05" 244 | "267","E12000008","South East","E07000111","Sevenoaks","87253","70399","70393","80.68","70393","70349","32091","38258","44","0","18","4","22","45.62","54.38","0.06" 245 | "268","E12000008","South East","E07000112","Shepway","80879","60659","60659","75.00","60659","60613","22884","37729","46","0","13","2","31","37.75","62.25","0.08" 246 | "269","E12000008","South East","E07000113","Swale","102209","75913","75913","74.27","75913","75869","28481","47388","44","0","16","0","28","37.54","62.46","0.06" 247 | "270","E12000008","South East","E07000114","Thanet","99108","72149","72146","72.80","72146","72102","26065","46037","44","0","14","1","29","36.15","63.85","0.06" 248 | "271","E12000008","South East","E07000115","Tonbridge and Malling","93019","74070","74066","79.62","74066","74021","32792","41229","45","0","15","1","29","44.30","55.70","0.06" 249 | "272","E12000008","South East","E07000116","Tunbridge Wells","82181","65051","65047","79.14","65039","64996","35676","29320","43","0","13","2","28","54.89","45.11","0.07" 250 | "327","E12000008","South East","E07000177","Cherwell","108342","81909","81912","75.60","81908","81836","40668","41168","72","0","29","1","42","49.69","50.31","0.09" 251 | "328","E12000008","South East","E07000178","Oxford","97331","70421","70411","72.34","70411","70337","49424","20913","74","0","29","1","44","70.27","29.73","0.11" 252 | "329","E12000008","South East","E07000179","South Oxfordshire","104231","84167","84167","80.75","84167","84110","46245","37865","57","0","18","0","39","54.98","45.02","0.07" 253 | "330","E12000008","South East","E07000180","Vale of White Horse","94487","76706","76706","81.18","76706","76654","43462","33192","52","0","13","0","39","56.70","43.30","0.07" 254 | "331","E12000008","South East","E07000181","West Oxfordshire","82441","65721","65719","79.72","65719","65671","35236","30435","48","0","8","1","39","53.66","46.34","0.07" 255 | "352","E12000008","South East","E07000207","Elmbridge","98613","77069","77063","78.14","77058","77003","45841","31162","55","0","16","3","36","59.53","40.47","0.07" 256 | "353","E12000008","South East","E07000208","Epsom and Ewell","56382","45348","45343","80.42","45343","45303","23596","21707","40","0","11","5","24","52.08","47.92","0.09" 257 | "354","E12000008","South East","E07000209","Guildford","102209","78672","78671","76.96","78657","78613","44155","34458","44","0","19","6","19","56.17","43.83","0.06" 258 | "355","E12000008","South East","E07000210","Mole Valley","66730","54832","54830","82.17","54829","54796","29088","25708","33","0","11","0","22","53.08","46.92","0.06" 259 | "356","E12000008","South East","E07000211","Reigate and Banstead","103731","81200","81200","78.28","81200","81161","40181","40980","39","1","9","1","28","49.51","50.49","0.05" 260 | "357","E12000008","South East","E07000212","Runnymede","58272","44328","44326","76.07","44326","44294","20259","24035","32","0","10","2","20","45.74","54.26","0.07" 261 | "358","E12000008","South East","E07000213","Spelthorne","72674","56635","56639","77.93","56638","56609","22474","34135","29","0","13","2","14","39.70","60.30","0.05" 262 | "359","E12000008","South East","E07000214","Surrey Heath","65569","52330","52330","79.81","52330","52305","25638","26667","25","0","8","1","16","49.02","50.98","0.05" 263 | "360","E12000008","South East","E07000215","Tandridge","64044","51468","51466","80.36","51466","51420","24251","27169","46","0","16","0","30","47.16","52.84","0.09" 264 | "361","E12000008","South East","E07000216","Waverley","92291","75999","75999","82.35","75999","75942","44341","31601","57","0","19","1","37","58.39","41.61","0.08" 265 | "362","E12000008","South East","E07000217","Woking","71313","55261","55261","77.49","55261","55221","31007","24214","40","0","18","1","21","56.15","43.85","0.07" 266 | "368","E12000008","South East","E07000223","Adur","48755","37253","37251","76.40","37251","37229","16914","20315","22","0","8","0","14","45.43","54.57","0.06" 267 | "369","E12000008","South East","E07000224","Arun","117138","91203","91198","77.86","91199","91129","34193","56936","70","0","22","2","46","37.52","62.48","0.08" 268 | "370","E12000008","South East","E07000225","Chichester","91659","71411","71406","77.91","71407","71337","35011","36326","70","3","27","1","39","49.08","50.92","0.10" 269 | "371","E12000008","South East","E07000226","Crawley","73575","53884","53883","73.24","53884","53835","22388","31447","49","0","19","9","21","41.59","58.41","0.09" 270 | "372","E12000008","South East","E07000227","Horsham","104270","85131","85133","81.65","85132","85088","43785","41303","44","2","16","5","21","51.46","48.54","0.05" 271 | "373","E12000008","South East","E07000228","Mid Sussex","108416","87588","87588","80.79","87588","87528","46471","41057","60","0","40","2","18","53.09","46.91","0.07" 272 | "374","E12000008","South East","E07000229","Worthing","81384","61420","61416","75.46","61416","61366","28851","32515","50","0","11","1","38","47.01","52.99","0.08" 273 | "96","E12000009","South West","E06000022","Bath and North East Somerset","136522","105300","105298","77.13","105300","105230","60878","44352","70","0","20","5","45","57.85","42.15","0.07" 274 | "97","E12000009","South West","E06000023","Bristol, City of","312465","228704","228678","73.17","228646","228445","141027","87418","201","0","63","6","132","61.73","38.27","0.09" 275 | "98","E12000009","South West","E06000024","North Somerset","160860","124637","124622","77.47","124622","124548","59572","64976","74","0","33","0","41","47.83","52.17","0.06" 276 | "99","E12000009","South West","E06000025","South Gloucestershire","207793","158444","158424","76.24","158427","158333","74928","83405","94","0","28","4","62","47.32","52.68","0.06" 277 | "102","E12000009","South West","E06000026","Plymouth","186989","133537","133524","71.41","133523","133455","53458","79997","68","1","18","1","48","40.06","59.94","0.05" 278 | "103","E12000009","South West","E06000027","Torbay","102961","75873","75868","73.69","75868","75824","27935","47889","44","0","18","0","26","36.84","63.16","0.06" 279 | "104","E12000009","South West","E06000028","Bournemouth","132752","92002","91998","69.30","91997","91926","41473","50453","71","0","31","1","39","45.12","54.88","0.08" 280 | "105","E12000009","South West","E06000029","Poole","113421","85500","85494","75.38","85493","85448","35741","49707","45","2","12","0","31","41.83","58.17","0.05" 281 | "106","E12000009","South West","E06000030","Swindon","148960","113064","113060","75.90","113060","112965","51220","61745","95","0","33","5","57","45.34","54.66","0.08" 282 | "100","E12000009","South West","E06000052","Cornwall","419755","323528","323491","77.05","323442","323205","140540","182665","237","0","71","0","166","43.48","56.52","0.07" 283 | "101","E12000009","South West","E06000053","Isles of Scilly","1799","1424","1424","79.16","1424","1424","803","621","0","0","0","0","0","56.39","43.61","0.00" 284 | "107","E12000009","South West","E06000054","Wiltshire","366555","289110","289102","78.87","289102","288895","137258","151637","207","0","70","9","128","47.51","52.49","0.07" 285 | "203","E12000009","South West","E07000040","East Devon","112527","88831","88831","78.94","88831","88783","40743","48040","48","0","23","0","25","45.89","54.11","0.05" 286 | "204","E12000009","South West","E07000041","Exeter","86417","63888","63877","73.91","63867","63803","35270","28533","64","0","19","3","42","55.28","44.72","0.10" 287 | "205","E12000009","South West","E07000042","Mid Devon","60532","48049","48049","79.38","48049","48006","22400","25606","43","0","7","3","33","46.66","53.34","0.09" 288 | "206","E12000009","South West","E07000043","North Devon","75548","58054","58056","76.85","58056","58031","24931","33100","25","0","10","1","14","42.96","57.04","0.04" 289 | "207","E12000009","South West","E07000044","South Hams","69121","55488","55486","80.27","55485","55450","29308","26142","35","0","15","0","20","52.85","47.15","0.06" 290 | "208","E12000009","South West","E07000045","Teignbridge","103740","82383","82377","79.40","82369","82312","37949","44363","57","0","19","0","38","46.10","53.90","0.07" 291 | "209","E12000009","South West","E07000046","Torridge","52881","41462","41461","78.41","41462","41429","16229","25200","33","0","11","1","21","39.17","60.83","0.08" 292 | "210","E12000009","South West","E07000047","West Devon","43823","35613","35613","81.26","35612","35595","16658","18937","17","0","5","1","11","46.80","53.20","0.05" 293 | "211","E12000009","South West","E07000048","Christchurch","39176","31071","31066","79.30","31066","31050","12782","18268","16","0","6","2","8","41.17","58.83","0.05" 294 | "212","E12000009","South West","E07000049","East Dorset","71966","58530","58530","81.33","58530","58488","24786","33702","42","0","12","2","28","42.38","57.62","0.07" 295 | "213","E12000009","South West","E07000050","North Dorset","52980","42228","42223","79.71","42228","42201","18399","23802","27","0","0","0","27","43.60","56.40","0.06" 296 | "214","E12000009","South West","E07000051","Purbeck","36418","28736","28736","78.91","28736","28720","11754","16966","16","0","6","0","10","40.93","59.07","0.06" 297 | "215","E12000009","South West","E07000052","West Dorset","82071","65237","65237","79.49","65237","65191","31924","33267","46","0","14","1","31","48.97","51.03","0.07" 298 | "216","E12000009","South West","E07000053","Weymouth and Portland","50442","38273","38271","75.87","38271","38255","14903","23352","16","0","6","0","10","38.96","61.04","0.04" 299 | "234","E12000009","South West","E07000078","Cheltenham","87060","66060","66059","75.88","66057","66013","37081","28932","44","0","18","2","24","56.17","43.83","0.07" 300 | "235","E12000009","South West","E07000079","Cotswold","68734","54847","54847","79.80","54847","54821","28015","26806","26","0","10","2","14","51.10","48.90","0.05" 301 | "236","E12000009","South West","E07000080","Forest of Dean","66705","51679","51678","77.47","51677","51643","21392","30251","34","0","17","1","16","41.42","58.58","0.07" 302 | "237","E12000009","South West","E07000081","Gloucester","89661","64605","64608","72.06","64606","64577","26801","37776","29","0","14","1","14","41.50","58.50","0.04" 303 | "238","E12000009","South West","E07000082","Stroud","92631","74129","74128","80.03","74128","74064","40446","33618","64","0","20","5","39","54.61","45.39","0.09" 304 | "239","E12000009","South West","E07000083","Tewkesbury","67831","53687","53686","79.15","53686","53652","25084","28568","34","0","16","2","16","46.75","53.25","0.06" 305 | "332","E12000009","South West","E07000187","Mendip","85068","65529","65509","77.01","65509","65455","33427","32028","54","0","16","5","33","51.07","48.93","0.08" 306 | "333","E12000009","South West","E07000188","Sedgemoor","89714","68451","68448","76.30","68450","68414","26545","41869","36","1","13","1","21","38.80","61.20","0.05" 307 | "334","E12000009","South West","E07000189","South Somerset","126495","99535","99535","78.69","99535","99467","42527","56940","68","0","22","0","46","42.75","57.25","0.07" 308 | "335","E12000009","South West","E07000190","Taunton Deane","84164","65789","65785","78.16","65786","65733","30944","34789","53","0","21","1","31","47.08","52.92","0.08" 309 | "336","E12000009","South West","E07000191","West Somerset","27478","21755","21752","79.17","21753","21734","8566","13168","19","1","10","0","8","39.41","60.59","0.09" 310 | "382","E12000009","South West","GI","Gibraltar","24119","20172","20172","83.64","20172","20145","19322","823","27","0","8","0","19","95.91","4.09","0.13" 311 | "126","W92000004","Wales","W06000001","Isle of Anglesey","51445","37980","37981","73.82","37978","37951","18618","19333","27","0","11","0","16","49.06","50.94","0.07" 312 | "127","W92000004","Wales","W06000002","Gwynedd","84575","61245","61245","72.42","61245","61182","35517","25665","63","14","17","2","30","58.05","41.95","0.10" 313 | "128","W92000004","Wales","W06000003","Conwy","91368","65558","65558","71.75","65554","65504","30147","35357","50","0","19","0","31","46.02","53.98","0.08" 314 | "129","W92000004","Wales","W06000004","Denbighshire","75362","52108","52108","69.14","52108","52072","23955","28117","36","1","10","0","25","46.00","54.00","0.07" 315 | "130","W92000004","Wales","W06000005","Flintshire","115964","86857","86854","74.90","86854","86797","37867","48930","57","0","22","2","33","43.63","56.37","0.07" 316 | "131","W92000004","Wales","W06000006","Wrexham","98384","70409","70407","71.56","70407","70366","28822","41544","41","0","17","0","24","40.96","59.04","0.06" 317 | "133","W92000004","Wales","W06000008","Ceredigion","53400","39775","39772","74.48","39772","39742","21711","18031","30","0","8","1","21","54.63","45.37","0.08" 318 | "134","W92000004","Wales","W06000009","Pembrokeshire","92155","68556","68555","74.39","68555","68522","29367","39155","33","0","15","0","18","42.86","57.14","0.05" 319 | "135","W92000004","Wales","W06000010","Carmarthenshire","139227","103129","103126","74.07","103126","103035","47654","55381","91","0","30","0","61","46.25","53.75","0.09" 320 | "136","W92000004","Wales","W06000011","Swansea","172941","120371","120362","69.60","120362","120243","58307","61936","119","0","52","3","64","48.49","51.51","0.10" 321 | "137","W92000004","Wales","W06000012","Neath Port Talbot","105766","75695","75694","71.57","75694","75652","32651","43001","42","1","17","0","24","43.16","56.84","0.06" 322 | "138","W92000004","Wales","W06000013","Bridgend","104492","74379","74380","71.18","74378","74345","33723","40622","33","0","12","1","20","45.36","54.64","0.04" 323 | "139","W92000004","Wales","W06000014","Vale of Glamorgan","95011","72348","72347","76.15","72348","72309","36681","35628","39","0","12","0","27","50.73","49.27","0.05" 324 | "147","W92000004","Wales","W06000015","Cardiff","243689","169762","169753","69.66","169745","169604","101788","67816","141","0","56","3","82","60.02","39.98","0.08" 325 | "140","W92000004","Wales","W06000016","Rhondda Cynon Taf","172890","116645","116645","67.47","116645","116563","53973","62590","82","0","34","0","48","46.30","53.70","0.07" 326 | "142","W92000004","Wales","W06000018","Caerphilly","130801","92531","92528","70.74","92525","92473","39178","53295","52","1","19","3","29","42.37","57.63","0.06" 327 | "143","W92000004","Wales","W06000019","Blaenau Gwent","51136","34812","34812","68.08","34812","34802","13215","21587","10","0","3","0","7","37.97","62.03","0.03" 328 | "144","W92000004","Wales","W06000020","Torfaen","68957","48177","48172","69.86","48172","48144","19363","28781","28","0","11","2","15","40.22","59.78","0.06" 329 | "145","W92000004","Wales","W06000021","Monmouthshire","71607","55670","55670","77.74","55670","55630","28061","27569","40","19","0","0","21","50.44","49.56","0.07" 330 | "146","W92000004","Wales","W06000022","Newport","104977","73708","73708","70.21","73708","73649","32413","41236","59","3","29","2","25","44.01","55.99","0.08" 331 | "132","W92000004","Wales","W06000023","Powys","103270","79519","79517","77.00","79515","79469","36762","42707","46","0","17","7","22","46.26","53.74","0.06" 332 | "141","W92000004","Wales","W06000024","Merthyr Tydfil","42855","28881","28881","67.39","28881","28865","12574","16291","16","0","7","1","8","43.56","56.44","0.06" 333 | "92","E12000005","West Midlands","E06000019","Herefordshire, County of","138247","108336","108336","78.36","108336","108270","44148","64122","66","0","22","1","43","40.78","59.22","0.06" 334 | "93","E12000005","West Midlands","E06000020","Telford and Wrekin","124338","89707","89704","72.15","89704","89603","32954","56649","101","0","11","0","90","36.78","63.22","0.11" 335 | "95","E12000005","West Midlands","E06000021","Stoke-on-Trent","179010","117691","117680","65.74","117674","117590","36027","81563","84","0","19","6","59","30.64","69.36","0.07" 336 | "94","E12000005","West Midlands","E06000051","Shropshire","236788","183328","183324","77.42","183323","183153","78987","104166","170","0","42","0","128","43.13","56.87","0.09" 337 | "337","E12000005","West Midlands","E07000192","Cannock Chase","75010","53610","53610","71.47","53607","53578","16684","36894","29","0","15","2","12","31.14","68.86","0.05" 338 | "338","E12000005","West Midlands","E07000193","East Staffordshire","83558","62164","62160","74.39","62161","62116","22850","39266","45","0","9","1","35","36.79","63.21","0.07" 339 | "339","E12000005","West Midlands","E07000194","Lichfield","80369","63324","63318","78.78","63318","63278","26064","37214","40","0","16","1","23","41.19","58.81","0.06" 340 | "340","E12000005","West Midlands","E07000195","Newcastle-under-Lyme","92816","68966","68966","74.30","68966","68934","25477","43457","32","0","13","0","19","36.96","63.04","0.05" 341 | "341","E12000005","West Midlands","E07000196","South Staffordshire","85777","66741","66741","77.81","66739","66692","23444","43248","47","0","6","2","39","35.15","64.85","0.07" 342 | "342","E12000005","West Midlands","E07000197","Stafford","99612","77524","77527","77.83","77527","77484","34098","43386","43","0","11","3","29","44.01","55.99","0.06" 343 | "343","E12000005","West Midlands","E07000198","Staffordshire Moorlands","79347","59794","59793","75.36","59793","59760","21076","38684","33","0","13","0","20","35.27","64.73","0.06" 344 | "344","E12000005","West Midlands","E07000199","Tamworth","56825","42152","42151","74.18","42151","42129","13705","28424","22","0","12","0","10","32.53","67.47","0.05" 345 | "363","E12000005","West Midlands","E07000218","North Warwickshire","49790","37975","37975","76.27","37975","37954","12569","25385","21","0","9","0","12","33.12","66.88","0.06" 346 | "364","E12000005","West Midlands","E07000219","Nuneaton and Bedworth","93978","69878","69876","74.35","69876","69831","23736","46095","45","0","20","2","23","33.99","66.01","0.06" 347 | "365","E12000005","West Midlands","E07000220","Rugby","74137","58599","58593","79.03","58593","58549","25350","33199","44","0","13","2","29","43.30","56.70","0.08" 348 | "366","E12000005","West Midlands","E07000221","Stratford-on-Avon","98014","79223","79217","80.82","79217","79158","38341","40817","59","0","9","0","50","48.44","51.56","0.07" 349 | "367","E12000005","West Midlands","E07000222","Warwick","103099","81695","81695","79.22","81680","81618","47976","33642","62","0","33","0","29","58.78","41.22","0.08" 350 | "375","E12000005","West Midlands","E07000234","Bromsgrove","74170","58855","58855","79.35","58855","58815","26252","32563","40","0","11","2","27","44.63","55.37","0.07" 351 | "376","E12000005","West Midlands","E07000235","Malvern Hills","60217","48538","48538","80.61","48538","48497","23203","25294","41","0","10","0","31","47.84","52.16","0.08" 352 | "377","E12000005","West Midlands","E07000236","Redditch","61038","45914","45913","75.22","45912","45882","17303","28579","30","0","7","0","23","37.71","62.29","0.07" 353 | "378","E12000005","West Midlands","E07000237","Worcester","73516","54293","54289","73.85","54290","54239","25125","29114","51","7","22","2","20","46.32","53.68","0.09" 354 | "379","E12000005","West Midlands","E07000238","Wychavon","94497","76428","76425","80.88","76425","76389","32188","44201","36","0","15","0","21","42.14","57.86","0.05" 355 | "380","E12000005","West Midlands","E07000239","Wyre Forest","77878","57668","57666","74.05","57666","57632","21240","36392","34","0","6","0","28","36.85","63.15","0.06" 356 | "58","E12000005","West Midlands","E08000025","Birmingham","707293","451422","451336","63.81","451316","450702","223451","227251","614","0","311","17","286","49.58","50.42","0.14" 357 | "59","E12000005","West Midlands","E08000026","Coventry","221389","153241","153234","69.21","153234","153064","67967","85097","170","0","85","0","85","44.40","55.60","0.11" 358 | "60","E12000005","West Midlands","E08000027","Dudley","244516","175351","175333","71.71","175333","175226","56780","118446","107","0","41","2","64","32.40","67.60","0.06" 359 | "61","E12000005","West Midlands","E08000028","Sandwell","221429","147428","147418","66.58","147418","147254","49004","98250","164","0","90","2","72","33.28","66.72","0.11" 360 | "62","E12000005","West Midlands","E08000029","Solihull","160425","122026","122017","76.06","122020","121950","53466","68484","70","0","25","0","45","43.84","56.16","0.06" 361 | "63","E12000005","West Midlands","E08000030","Walsall","194729","135690","135684","69.68","135685","135579","43572","92007","106","0","59","3","44","32.14","67.86","0.08" 362 | "64","E12000005","West Midlands","E08000031","Wolverhampton","174760","118038","118037","67.54","118037","117936","44138","73798","101","0","45","7","49","37.43","62.57","0.09" 363 | "83","E12000003","Yorkshire and The Humber","E06000010","Kingston upon Hull, City of","180230","113439","113439","62.94","113436","113355","36709","76646","81","0","23","4","54","32.38","67.62","0.07" 364 | "84","E12000003","Yorkshire and The Humber","E06000011","East Riding of Yorkshire","266047","199056","199039","74.81","199036","198915","78779","120136","121","0","36","3","82","39.60","60.40","0.06" 365 | "85","E12000003","Yorkshire and The Humber","E06000012","North East Lincolnshire","116302","79016","79013","67.94","79011","78982","23797","55185","29","1","4","1","23","30.13","69.87","0.04" 366 | "86","E12000003","Yorkshire and The Humber","E06000013","North Lincolnshire","123611","88912","88907","71.92","88906","88862","29947","58915","44","0","11","3","30","33.70","66.30","0.05" 367 | "87","E12000003","Yorkshire and The Humber","E06000014","York","155157","109695","109691","70.69","109681","109600","63617","45983","81","0","20","5","56","58.04","41.96","0.07" 368 | "313","E12000003","Yorkshire and The Humber","E07000163","Craven","44320","35907","35907","81.02","35907","35891","16930","18961","16","0","6","0","10","47.17","52.83","0.04" 369 | "314","E12000003","Yorkshire and The Humber","E07000164","Hambleton","70133","55016","55016","78.45","55016","54982","25480","29502","34","0","18","1","15","46.34","53.66","0.06" 370 | "315","E12000003","Yorkshire and The Humber","E07000165","Harrogate","119987","94669","94665","78.89","94653","94585","48211","46374","68","2","25","3","38","50.97","49.03","0.07" 371 | "316","E12000003","Yorkshire and The Humber","E07000166","Richmondshire","36794","27652","27652","75.15","27652","27636","11945","15691","16","0","6","0","10","43.22","56.78","0.06" 372 | "317","E12000003","Yorkshire and The Humber","E07000167","Ryedale","41529","32069","32069","77.22","32069","32050","14340","17710","19","0","5","2","12","44.74","55.26","0.06" 373 | "318","E12000003","Yorkshire and The Humber","E07000168","Scarborough","82900","60540","60539","73.03","60539","60511","22999","37512","28","0","6","0","22","38.01","61.99","0.05" 374 | "319","E12000003","Yorkshire and The Humber","E07000169","Selby","65278","51641","51639","79.10","51636","51603","21071","30532","33","0","7","2","24","40.83","59.17","0.06" 375 | "49","E12000003","Yorkshire and The Humber","E08000016","Barnsley","175809","122982","122972","69.95","122972","122909","38951","83958","63","0","17","1","45","31.69","68.31","0.05" 376 | "50","E12000003","Yorkshire and The Humber","E08000017","Doncaster","217432","151254","151246","69.56","151246","151182","46922","104260","64","0","19","0","45","31.04","68.96","0.04" 377 | "51","E12000003","Yorkshire and The Humber","E08000018","Rotherham","197623","137478","137474","69.56","137470","137387","44115","93272","83","0","30","4","49","32.11","67.89","0.06" 378 | "52","E12000003","Yorkshire and The Humber","E08000019","Sheffield","396406","266954","266951","67.34","266951","266753","130735","136018","198","0","76","6","116","49.01","50.99","0.07" 379 | "65","E12000003","Yorkshire and The Humber","E08000032","Bradford","342817","228729","228729","66.72","228727","228488","104575","123913","239","0","121","5","113","45.77","54.23","0.10" 380 | "66","E12000003","Yorkshire and The Humber","E08000033","Calderdale","149195","106005","106008","71.05","106004","105925","46950","58975","79","0","22","15","42","44.32","55.68","0.07" 381 | "67","E12000003","Yorkshire and The Humber","E08000034","Kirklees","307081","217460","217449","70.80","217428","217240","98485","118755","188","0","86","7","95","45.33","54.67","0.09" 382 | "68","E12000003","Yorkshire and The Humber","E08000035","Leeds","543033","387730","387730","71.39","387677","387337","194863","192474","340","39","116","8","177","50.31","49.69","0.09" 383 | "69","E12000003","Yorkshire and The Humber","E08000036","Wakefield","246096","175261","175259","71.17","175155","175042","58877","116165","113","0","46","4","63","33.64","66.36","0.06" 384 | -------------------------------------------------------------------------------- /data/airpollutioneuston.csv: -------------------------------------------------------------------------------- 1 | Site,Species,ReadingDateTime,Value,Units,Provisional or Ratified 2 | CD9,NO2,01/01/2017 00:00,69.90000,ug m-3,R 3 | CD9,NO2,02/01/2017 00:00,57.50000,ug m-3,R 4 | CD9,NO2,03/01/2017 00:00,91.90000,ug m-3,R 5 | CD9,NO2,04/01/2017 00:00,67.90000,ug m-3,R 6 | CD9,NO2,05/01/2017 00:00,108.70000,ug m-3,R 7 | CD9,NO2,06/01/2017 00:00,145.00000,ug m-3,R 8 | CD9,NO2,07/01/2017 00:00,78.00000,ug m-3,R 9 | CD9,NO2,08/01/2017 00:00,92.60000,ug m-3,R 10 | CD9,NO2,09/01/2017 00:00,101.20000,ug m-3,R 11 | CD9,NO2,10/01/2017 00:00,90.00000,ug m-3,R 12 | CD9,NO2,11/01/2017 00:00,69.50000,ug m-3,R 13 | CD9,NO2,12/01/2017 00:00,90.90000,ug m-3,R 14 | CD9,NO2,13/01/2017 00:00,51.90000,ug m-3,R 15 | CD9,NO2,14/01/2017 00:00,75.10000,ug m-3,R 16 | CD9,NO2,15/01/2017 00:00,74.00000,ug m-3,R 17 | CD9,NO2,16/01/2017 00:00,118.70000,ug m-3,R 18 | CD9,NO2,17/01/2017 00:00,136.70000,ug m-3,R 19 | CD9,NO2,18/01/2017 00:00,167.00000,ug m-3,R 20 | CD9,NO2,19/01/2017 00:00,146.70000,ug m-3,R 21 | CD9,NO2,20/01/2017 00:00,140.39999,ug m-3,R 22 | CD9,NO2,21/01/2017 00:00,128.80000,ug m-3,R 23 | CD9,NO2,22/01/2017 00:00,153.30000,ug m-3,R 24 | CD9,NO2,23/01/2017 00:00,166.30000,ug m-3,R 25 | CD9,NO2,24/01/2017 00:00,161.60001,ug m-3,R 26 | CD9,NO2,25/01/2017 00:00,155.39999,ug m-3,R 27 | CD9,NO2,26/01/2017 00:00,111.20000,ug m-3,R 28 | CD9,NO2,27/01/2017 00:00,119.80000,ug m-3,R 29 | CD9,NO2,28/01/2017 00:00,113.50000,ug m-3,R 30 | CD9,NO2,29/01/2017 00:00,106.20000,ug m-3,R 31 | CD9,NO2,30/01/2017 00:00,92.80000,ug m-3,R 32 | CD9,NO2,31/01/2017 00:00,99.00000,ug m-3,R 33 | CD9,NO2,01/02/2017 00:00,112.20000,ug m-3,R 34 | CD9,NO2,02/02/2017 00:00,88.10000,ug m-3,R 35 | CD9,NO2,03/02/2017 00:00,103.60000,ug m-3,R 36 | CD9,NO2,04/02/2017 00:00,135.30000,ug m-3,R 37 | CD9,NO2,05/02/2017 00:00,82.90000,ug m-3,R 38 | CD9,NO2,06/02/2017 00:00,109.80000,ug m-3,R 39 | CD9,NO2,07/02/2017 00:00,104.00000,ug m-3,R 40 | CD9,NO2,08/02/2017 00:00,90.20000,ug m-3,R 41 | CD9,NO2,09/02/2017 00:00,108.10000,ug m-3,R 42 | CD9,NO2,10/02/2017 00:00,86.90000,ug m-3,R 43 | CD9,NO2,11/02/2017 00:00,69.90000,ug m-3,R 44 | CD9,NO2,12/02/2017 00:00,76.00000,ug m-3,R 45 | CD9,NO2,13/02/2017 00:00,71.80000,ug m-3,R 46 | CD9,NO2,14/02/2017 00:00,94.50000,ug m-3,R 47 | CD9,NO2,15/02/2017 00:00,105.40000,ug m-3,R 48 | CD9,NO2,16/02/2017 00:00,108.40000,ug m-3,R 49 | CD9,NO2,17/02/2017 00:00,108.80000,ug m-3,R 50 | CD9,NO2,18/02/2017 00:00,107.10000,ug m-3,R 51 | CD9,NO2,19/02/2017 00:00,88.70000,ug m-3,R 52 | CD9,NO2,20/02/2017 00:00,73.70000,ug m-3,R 53 | CD9,NO2,21/02/2017 00:00,77.70000,ug m-3,R 54 | CD9,NO2,22/02/2017 00:00,77.80000,ug m-3,R 55 | CD9,NO2,23/02/2017 00:00,49.50000,ug m-3,R 56 | CD9,NO2,24/02/2017 00:00,77.10000,ug m-3,R 57 | CD9,NO2,25/02/2017 00:00,87.20000,ug m-3,R 58 | CD9,NO2,26/02/2017 00:00,70.60000,ug m-3,R 59 | CD9,NO2,27/02/2017 00:00,92.10000,ug m-3,R 60 | CD9,NO2,28/02/2017 00:00,81.90000,ug m-3,R 61 | CD9,NO2,01/03/2017 00:00,106.00000,ug m-3,R 62 | CD9,NO2,02/03/2017 00:00,91.60000,ug m-3,R 63 | CD9,NO2,03/03/2017 00:00,99.10000,ug m-3,R 64 | CD9,NO2,04/03/2017 00:00,97.70000,ug m-3,R 65 | CD9,NO2,05/03/2017 00:00,70.20000,ug m-3,R 66 | CD9,NO2,06/03/2017 00:00,65.40000,ug m-3,R 67 | CD9,NO2,07/03/2017 00:00,88.70000,ug m-3,R 68 | CD9,NO2,08/03/2017 00:00,100.10000,ug m-3,R 69 | CD9,NO2,09/03/2017 00:00,81.50000,ug m-3,R 70 | CD9,NO2,10/03/2017 00:00,120.30000,ug m-3,R 71 | CD9,NO2,11/03/2017 00:00,110.60000,ug m-3,R 72 | CD9,NO2,12/03/2017 00:00,80.30000,ug m-3,R 73 | CD9,NO2,13/03/2017 00:00,68.30000,ug m-3,R 74 | CD9,NO2,14/03/2017 00:00,86.60000,ug m-3,R 75 | CD9,NO2,15/03/2017 00:00,108.20000,ug m-3,R 76 | CD9,NO2,16/03/2017 00:00,96.50000,ug m-3,R 77 | CD9,NO2,17/03/2017 00:00,75.80000,ug m-3,R 78 | CD9,NO2,18/03/2017 00:00,63.30000,ug m-3,R 79 | CD9,NO2,19/03/2017 00:00,59.00000,ug m-3,R 80 | CD9,NO2,20/03/2017 00:00,87.70000,ug m-3,R 81 | CD9,NO2,21/03/2017 00:00,83.40000,ug m-3,R 82 | CD9,NO2,22/03/2017 00:00,94.00000,ug m-3,R 83 | CD9,NO2,23/03/2017 00:00,91.80000,ug m-3,R 84 | CD9,NO2,24/03/2017 00:00,84.30000,ug m-3,R 85 | CD9,NO2,25/03/2017 00:00,89.20000,ug m-3,R 86 | CD9,NO2,26/03/2017 00:00,70.70000,ug m-3,R 87 | CD9,NO2,27/03/2017 00:00,87.20000,ug m-3,R 88 | CD9,NO2,28/03/2017 00:00,100.50000,ug m-3,R 89 | CD9,NO2,29/03/2017 00:00,105.00000,ug m-3,R 90 | CD9,NO2,30/03/2017 00:00,125.20000,ug m-3,R 91 | CD9,NO2,31/03/2017 00:00,124.20000,ug m-3,R 92 | CD9,NO2,01/04/2017 00:00,105.10000,ug m-3,R 93 | CD9,NO2,02/04/2017 00:00,55.70000,ug m-3,R 94 | CD9,NO2,03/04/2017 00:00,115.10000,ug m-3,R 95 | CD9,NO2,04/04/2017 00:00,63.50000,ug m-3,R 96 | CD9,NO2,05/04/2017 00:00,45.60000,ug m-3,R 97 | CD9,NO2,06/04/2017 00:00,86.70000,ug m-3,R 98 | CD9,NO2,07/04/2017 00:00,85.50000,ug m-3,R 99 | CD9,NO2,08/04/2017 00:00,136.10001,ug m-3,R 100 | CD9,NO2,09/04/2017 00:00,94.80000,ug m-3,R 101 | CD9,NO2,10/04/2017 00:00,33.70000,ug m-3,R 102 | CD9,NO2,11/04/2017 00:00,62.20000,ug m-3,R 103 | CD9,NO2,12/04/2017 00:00,59.40000,ug m-3,R 104 | CD9,NO2,13/04/2017 00:00,47.40000,ug m-3,R 105 | CD9,NO2,14/04/2017 00:00,69.10000,ug m-3,R 106 | CD9,NO2,15/04/2017 00:00,29.00000,ug m-3,R 107 | CD9,NO2,16/04/2017 00:00,39.70000,ug m-3,R 108 | CD9,NO2,17/04/2017 00:00,53.30000,ug m-3,R 109 | CD9,NO2,18/04/2017 00:00,68.70000,ug m-3,R 110 | CD9,NO2,19/04/2017 00:00,112.40000,ug m-3,R 111 | CD9,NO2,20/04/2017 00:00,97.10000,ug m-3,R 112 | CD9,NO2,21/04/2017 00:00,59.70000,ug m-3,R 113 | CD9,NO2,22/04/2017 00:00,63.90000,ug m-3,R 114 | CD9,NO2,23/04/2017 00:00,70.30000,ug m-3,R 115 | CD9,NO2,24/04/2017 00:00,66.60000,ug m-3,R 116 | CD9,NO2,25/04/2017 00:00,41.90000,ug m-3,R 117 | CD9,NO2,26/04/2017 00:00,60.60000,ug m-3,R 118 | CD9,NO2,27/04/2017 00:00,79.20000,ug m-3,R 119 | CD9,NO2,28/04/2017 00:00,68.60000,ug m-3,R 120 | CD9,NO2,29/04/2017 00:00,104.80000,ug m-3,R 121 | CD9,NO2,30/04/2017 00:00,66.10000,ug m-3,R 122 | CD9,NO2,01/05/2017 00:00,69.10000,ug m-3,R 123 | CD9,NO2,02/05/2017 00:00,78.10000,ug m-3,R 124 | CD9,NO2,03/05/2017 00:00,71.20000,ug m-3,R 125 | CD9,NO2,04/05/2017 00:00,86.20000,ug m-3,R 126 | CD9,NO2,05/05/2017 00:00,86.20000,ug m-3,R 127 | CD9,NO2,06/05/2017 00:00,65.00000,ug m-3,R 128 | CD9,NO2,07/05/2017 00:00,44.60000,ug m-3,R 129 | CD9,NO2,08/05/2017 00:00,59.20000,ug m-3,R 130 | CD9,NO2,09/05/2017 00:00,84.40000,ug m-3,R 131 | CD9,NO2,10/05/2017 00:00,102.90000,ug m-3,R 132 | CD9,NO2,11/05/2017 00:00,117.40000,ug m-3,R 133 | CD9,NO2,12/05/2017 00:00,107.10000,ug m-3,R 134 | CD9,NO2,13/05/2017 00:00,106.00000,ug m-3,R 135 | CD9,NO2,14/05/2017 00:00,71.80000,ug m-3,R 136 | CD9,NO2,15/05/2017 00:00,102.50000,ug m-3,R 137 | CD9,NO2,16/05/2017 00:00,91.40000,ug m-3,R 138 | CD9,NO2,17/05/2017 00:00,81.70000,ug m-3,R 139 | CD9,NO2,18/05/2017 00:00,79.60000,ug m-3,R 140 | CD9,NO2,19/05/2017 00:00,74.10000,ug m-3,R 141 | CD9,NO2,20/05/2017 00:00,106.80000,ug m-3,R 142 | CD9,NO2,21/05/2017 00:00,96.30000,ug m-3,R 143 | CD9,NO2,22/05/2017 00:00,115.30000,ug m-3,R 144 | CD9,NO2,23/05/2017 00:00,73.00000,ug m-3,R 145 | CD9,NO2,24/05/2017 00:00,101.60000,ug m-3,R 146 | CD9,NO2,25/05/2017 00:00,113.50000,ug m-3,R 147 | CD9,NO2,26/05/2017 00:00,105.80000,ug m-3,R 148 | CD9,NO2,27/05/2017 00:00,103.20000,ug m-3,R 149 | CD9,NO2,28/05/2017 00:00,78.80000,ug m-3,R 150 | CD9,NO2,29/05/2017 00:00,83.00000,ug m-3,R 151 | CD9,NO2,30/05/2017 00:00,73.50000,ug m-3,R 152 | CD9,NO2,31/05/2017 00:00,86.20000,ug m-3,R 153 | CD9,NO2,01/06/2017 00:00,114.30000,ug m-3,R 154 | CD9,NO2,02/06/2017 00:00,107.30000,ug m-3,R 155 | CD9,NO2,03/06/2017 00:00,52.40000,ug m-3,R 156 | CD9,NO2,04/06/2017 00:00,70.70000,ug m-3,R 157 | CD9,NO2,05/06/2017 00:00,84.30000,ug m-3,R 158 | CD9,NO2,06/06/2017 00:00,69.90000,ug m-3,R 159 | CD9,NO2,07/06/2017 00:00,74.30000,ug m-3,R 160 | CD9,NO2,08/06/2017 00:00,103.70000,ug m-3,R 161 | CD9,NO2,09/06/2017 00:00,88.60000,ug m-3,R 162 | CD9,NO2,10/06/2017 00:00,70.80000,ug m-3,R 163 | CD9,NO2,11/06/2017 00:00,57.90000,ug m-3,R 164 | CD9,NO2,12/06/2017 00:00,62.30000,ug m-3,R 165 | CD9,NO2,13/06/2017 00:00,73.30000,ug m-3,R 166 | CD9,NO2,14/06/2017 00:00,102.10000,ug m-3,R 167 | CD9,NO2,15/06/2017 00:00,77.10000,ug m-3,R 168 | CD9,NO2,16/06/2017 00:00,50.80000,ug m-3,R 169 | CD9,NO2,17/06/2017 00:00,72.20000,ug m-3,R 170 | CD9,NO2,18/06/2017 00:00,102.30000,ug m-3,R 171 | CD9,NO2,19/06/2017 00:00,141.20000,ug m-3,R 172 | CD9,NO2,20/06/2017 00:00,124.80000,ug m-3,R 173 | CD9,NO2,21/06/2017 00:00,152.60001,ug m-3,R 174 | CD9,NO2,22/06/2017 00:00,74.20000,ug m-3,R 175 | CD9,NO2,23/06/2017 00:00,67.40000,ug m-3,R 176 | CD9,NO2,24/06/2017 00:00,66.10000,ug m-3,R 177 | CD9,NO2,25/06/2017 00:00,42.20000,ug m-3,R 178 | CD9,NO2,26/06/2017 00:00,70.50000,ug m-3,R 179 | CD9,NO2,27/06/2017 00:00,88.00000,ug m-3,R 180 | CD9,NO2,28/06/2017 00:00,39.90000,ug m-3,R 181 | CD9,NO2,29/06/2017 00:00,65.40000,ug m-3,R 182 | CD9,NO2,30/06/2017 00:00,41.90000,ug m-3,R 183 | CD9,NO2,01/07/2017 00:00,39.50000,ug m-3,R 184 | CD9,NO2,02/07/2017 00:00,34.90000,ug m-3,R 185 | CD9,NO2,03/07/2017 00:00,59.30000,ug m-3,R 186 | CD9,NO2,04/07/2017 00:00,89.20000,ug m-3,R 187 | CD9,NO2,05/07/2017 00:00,93.10000,ug m-3,R 188 | CD9,NO2,06/07/2017 00:00,122.40000,ug m-3,R 189 | CD9,NO2,07/07/2017 00:00,62.60000,ug m-3,R 190 | CD9,NO2,08/07/2017 00:00,50.10000,ug m-3,R 191 | CD9,NO2,09/07/2017 00:00,105.70000,ug m-3,R 192 | CD9,NO2,10/07/2017 00:00,60.30000,ug m-3,R 193 | CD9,NO2,11/07/2017 00:00,86.30000,ug m-3,R 194 | CD9,NO2,12/07/2017 00:00,60.10000,ug m-3,R 195 | CD9,NO2,13/07/2017 00:00,110.70000,ug m-3,R 196 | CD9,NO2,14/07/2017 00:00,40.70000,ug m-3,R 197 | CD9,NO2,15/07/2017 00:00,66.60000,ug m-3,R 198 | CD9,NO2,16/07/2017 00:00,36.60000,ug m-3,R 199 | CD9,NO2,17/07/2017 00:00,71.90000,ug m-3,R 200 | CD9,NO2,18/07/2017 00:00,78.50000,ug m-3,R 201 | CD9,NO2,19/07/2017 00:00,93.70000,ug m-3,R 202 | CD9,NO2,20/07/2017 00:00,67.60000,ug m-3,R 203 | CD9,NO2,21/07/2017 00:00,80.50000,ug m-3,R 204 | CD9,NO2,22/07/2017 00:00,89.60000,ug m-3,R 205 | CD9,NO2,23/07/2017 00:00,65.40000,ug m-3,R 206 | CD9,NO2,24/07/2017 00:00,33.20000,ug m-3,R 207 | CD9,NO2,25/07/2017 00:00,53.70000,ug m-3,R 208 | CD9,NO2,26/07/2017 00:00,88.10000,ug m-3,R 209 | CD9,NO2,27/07/2017 00:00,79.30000,ug m-3,R 210 | CD9,NO2,28/07/2017 00:00,76.00000,ug m-3,R 211 | CD9,NO2,29/07/2017 00:00,87.30000,ug m-3,R 212 | CD9,NO2,30/07/2017 00:00,61.40000,ug m-3,R 213 | CD9,NO2,31/07/2017 00:00,78.90000,ug m-3,R 214 | CD9,NO2,01/08/2017 00:00,81.70000,ug m-3,R 215 | CD9,NO2,02/08/2017 00:00,78.10000,ug m-3,R 216 | CD9,NO2,03/08/2017 00:00,73.10000,ug m-3,R 217 | CD9,NO2,04/08/2017 00:00,79.90000,ug m-3,R 218 | CD9,NO2,05/08/2017 00:00,47.50000,ug m-3,R 219 | CD9,NO2,06/08/2017 00:00,73.90000,ug m-3,R 220 | CD9,NO2,07/08/2017 00:00,80.50000,ug m-3,R 221 | CD9,NO2,08/08/2017 00:00,48.00000,ug m-3,R 222 | CD9,NO2,09/08/2017 00:00,46.10000,ug m-3,R 223 | CD9,NO2,10/08/2017 00:00,60.60000,ug m-3,R 224 | CD9,NO2,11/08/2017 00:00,83.00000,ug m-3,R 225 | CD9,NO2,12/08/2017 00:00,38.40000,ug m-3,R 226 | CD9,NO2,13/08/2017 00:00,52.80000,ug m-3,R 227 | CD9,NO2,14/08/2017 00:00,108.10000,ug m-3,R 228 | CD9,NO2,15/08/2017 00:00,60.80000,ug m-3,R 229 | CD9,NO2,16/08/2017 00:00,87.90000,ug m-3,R 230 | CD9,NO2,17/08/2017 00:00,76.30000,ug m-3,R 231 | CD9,NO2,18/08/2017 00:00,66.70000,ug m-3,R 232 | CD9,NO2,19/08/2017 00:00,49.50000,ug m-3,R 233 | CD9,NO2,20/08/2017 00:00,62.90000,ug m-3,R 234 | CD9,NO2,21/08/2017 00:00,70.60000,ug m-3,R 235 | CD9,NO2,22/08/2017 00:00,75.90000,ug m-3,R 236 | CD9,NO2,23/08/2017 00:00,77.90000,ug m-3,R 237 | CD9,NO2,24/08/2017 00:00,68.80000,ug m-3,R 238 | CD9,NO2,25/08/2017 00:00,99.70000,ug m-3,R 239 | CD9,NO2,26/08/2017 00:00,80.50000,ug m-3,R 240 | CD9,NO2,27/08/2017 00:00,70.90000,ug m-3,R 241 | CD9,NO2,28/08/2017 00:00,106.20000,ug m-3,R 242 | CD9,NO2,29/08/2017 00:00,74.30000,ug m-3,R 243 | CD9,NO2,30/08/2017 00:00,49.80000,ug m-3,R 244 | CD9,NO2,31/08/2017 00:00,88.20000,ug m-3,R 245 | CD9,NO2,01/09/2017 00:00,69.50000,ug m-3,R 246 | CD9,NO2,02/09/2017 00:00,86.40000,ug m-3,R 247 | CD9,NO2,03/09/2017 00:00,66.20000,ug m-3,R 248 | CD9,NO2,04/09/2017 00:00,84.60000,ug m-3,R 249 | CD9,NO2,05/09/2017 00:00,74.60000,ug m-3,R 250 | CD9,NO2,06/09/2017 00:00,62.70000,ug m-3,R 251 | CD9,NO2,07/09/2017 00:00,92.00000,ug m-3,R 252 | CD9,NO2,08/09/2017 00:00,88.30000,ug m-3,R 253 | CD9,NO2,09/09/2017 00:00,63.00000,ug m-3,R 254 | CD9,NO2,10/09/2017 00:00,63.50000,ug m-3,R 255 | CD9,NO2,11/09/2017 00:00,68.00000,ug m-3,R 256 | CD9,NO2,12/09/2017 00:00,71.50000,ug m-3,R 257 | CD9,NO2,13/09/2017 00:00,65.60000,ug m-3,R 258 | CD9,NO2,14/09/2017 00:00,58.90000,ug m-3,R 259 | CD9,NO2,15/09/2017 00:00,61.00000,ug m-3,R 260 | CD9,NO2,16/09/2017 00:00,49.20000,ug m-3,R 261 | CD9,NO2,17/09/2017 00:00,47.50000,ug m-3,R 262 | CD9,NO2,18/09/2017 00:00,47.20000,ug m-3,R 263 | CD9,NO2,19/09/2017 00:00,73.00000,ug m-3,R 264 | CD9,NO2,20/09/2017 00:00,116.40000,ug m-3,R 265 | CD9,NO2,21/09/2017 00:00,113.30000,ug m-3,R 266 | CD9,NO2,22/09/2017 00:00,103.90000,ug m-3,R 267 | CD9,NO2,23/09/2017 00:00,92.40000,ug m-3,R 268 | CD9,NO2,24/09/2017 00:00,84.60000,ug m-3,R 269 | CD9,NO2,25/09/2017 00:00,99.50000,ug m-3,R 270 | CD9,NO2,26/09/2017 00:00,89.50000,ug m-3,R 271 | CD9,NO2,27/09/2017 00:00,102.30000,ug m-3,R 272 | CD9,NO2,28/09/2017 00:00,112.50000,ug m-3,R 273 | CD9,NO2,29/09/2017 00:00,107.20000,ug m-3,R 274 | CD9,NO2,30/09/2017 00:00,104.40000,ug m-3,R 275 | CD9,NO2,01/10/2017 00:00,68.90000,ug m-3,R 276 | CD9,NO2,02/10/2017 00:00,62.90000,ug m-3,R 277 | CD9,NO2,03/10/2017 00:00,64.00000,ug m-3,R 278 | CD9,NO2,04/10/2017 00:00,86.90000,ug m-3,R 279 | CD9,NO2,05/10/2017 00:00,38.90000,ug m-3,R 280 | CD9,NO2,06/10/2017 00:00,63.50000,ug m-3,R 281 | CD9,NO2,07/10/2017 00:00,63.50000,ug m-3,R 282 | CD9,NO2,08/10/2017 00:00,53.20000,ug m-3,R 283 | CD9,NO2,09/10/2017 00:00,101.90000,ug m-3,R 284 | CD9,NO2,10/10/2017 00:00,94.90000,ug m-3,R 285 | CD9,NO2,11/10/2017 00:00,83.30000,ug m-3,R 286 | CD9,NO2,12/10/2017 00:00,95.70000,ug m-3,R 287 | CD9,NO2,13/10/2017 00:00,88.20000,ug m-3,R 288 | CD9,NO2,14/10/2017 00:00,88.00000,ug m-3,R 289 | CD9,NO2,15/10/2017 00:00,94.40000,ug m-3,R 290 | CD9,NO2,16/10/2017 00:00,88.10000,ug m-3,R 291 | CD9,NO2,17/10/2017 00:00,94.80000,ug m-3,R 292 | CD9,NO2,18/10/2017 00:00,89.80000,ug m-3,R 293 | CD9,NO2,19/10/2017 00:00,86.50000,ug m-3,R 294 | CD9,NO2,20/10/2017 00:00,82.80000,ug m-3,R 295 | CD9,NO2,21/10/2017 00:00,74.30000,ug m-3,R 296 | CD9,NO2,22/10/2017 00:00,49.60000,ug m-3,R 297 | CD9,NO2,23/10/2017 00:00,98.20000,ug m-3,R 298 | CD9,NO2,24/10/2017 00:00,88.60000,ug m-3,R 299 | CD9,NO2,25/10/2017 00:00,88.20000,ug m-3,R 300 | CD9,NO2,26/10/2017 00:00,76.80000,ug m-3,R 301 | CD9,NO2,27/10/2017 00:00,64.50000,ug m-3,R 302 | CD9,NO2,28/10/2017 00:00,72.50000,ug m-3,R 303 | CD9,NO2,29/10/2017 00:00,43.30000,ug m-3,R 304 | CD9,NO2,30/10/2017 00:00,78.20000,ug m-3,R 305 | CD9,NO2,31/10/2017 00:00,104.70000,ug m-3,R 306 | CD9,NO2,01/11/2017 00:00,131.00000,ug m-3,R 307 | CD9,NO2,02/11/2017 00:00,86.00000,ug m-3,R 308 | CD9,NO2,03/11/2017 00:00,125.80000,ug m-3,R 309 | CD9,NO2,04/11/2017 00:00,69.50000,ug m-3,R 310 | CD9,NO2,05/11/2017 00:00,54.30000,ug m-3,R 311 | CD9,NO2,06/11/2017 00:00,102.30000,ug m-3,R 312 | CD9,NO2,07/11/2017 00:00,87.40000,ug m-3,R 313 | CD9,NO2,08/11/2017 00:00,60.90000,ug m-3,R 314 | CD9,NO2,09/11/2017 00:00,95.10000,ug m-3,R 315 | CD9,NO2,10/11/2017 00:00,70.50000,ug m-3,R 316 | CD9,NO2,11/11/2017 00:00,81.90000,ug m-3,R 317 | CD9,NO2,12/11/2017 00:00,32.70000,ug m-3,R 318 | CD9,NO2,13/11/2017 00:00,58.30000,ug m-3,R 319 | CD9,NO2,14/11/2017 00:00,95.90000,ug m-3,R 320 | CD9,NO2,15/11/2017 00:00,95.20000,ug m-3,R 321 | CD9,NO2,16/11/2017 00:00,94.60000,ug m-3,R 322 | CD9,NO2,17/11/2017 00:00,91.50000,ug m-3,R 323 | CD9,NO2,18/11/2017 00:00,84.50000,ug m-3,R 324 | CD9,NO2,19/11/2017 00:00,78.10000,ug m-3,R 325 | CD9,NO2,20/11/2017 00:00,95.20000,ug m-3,R 326 | CD9,NO2,21/11/2017 00:00,103.60000,ug m-3,R 327 | CD9,NO2,22/11/2017 00:00,96.60000,ug m-3,R 328 | CD9,NO2,23/11/2017 00:00,99.00000,ug m-3,R 329 | CD9,NO2,24/11/2017 00:00,84.30000,ug m-3,R 330 | CD9,NO2,25/11/2017 00:00,81.90000,ug m-3,R 331 | CD9,NO2,26/11/2017 00:00,73.30000,ug m-3,R 332 | CD9,NO2,27/11/2017 00:00,81.00000,ug m-3,R 333 | CD9,NO2,28/11/2017 00:00,66.20000,ug m-3,R 334 | CD9,NO2,29/11/2017 00:00,43.90000,ug m-3,R 335 | CD9,NO2,30/11/2017 00:00,46.30000,ug m-3,R 336 | CD9,NO2,01/12/2017 00:00,56.00000,ug m-3,R 337 | CD9,NO2,02/12/2017 00:00,86.80000,ug m-3,R 338 | CD9,NO2,03/12/2017 00:00,58.60000,ug m-3,R 339 | CD9,NO2,04/12/2017 00:00,76.30000,ug m-3,R 340 | CD9,NO2,05/12/2017 00:00,94.30000,ug m-3,R 341 | CD9,NO2,06/12/2017 00:00,110.20000,ug m-3,R 342 | CD9,NO2,07/12/2017 00:00,73.90000,ug m-3,R 343 | CD9,NO2,08/12/2017 00:00,57.20000,ug m-3,R 344 | CD9,NO2,09/12/2017 00:00,97.30000,ug m-3,R 345 | CD9,NO2,10/12/2017 00:00,76.80000,ug m-3,R 346 | CD9,NO2,11/12/2017 00:00,66.90000,ug m-3,R 347 | CD9,NO2,12/12/2017 00:00,115.60000,ug m-3,R 348 | CD9,NO2,13/12/2017 00:00,102.10000,ug m-3,R 349 | CD9,NO2,14/12/2017 00:00,107.80000,ug m-3,R 350 | CD9,NO2,15/12/2017 00:00,62.60000,ug m-3,R 351 | CD9,NO2,16/12/2017 00:00,67.60000,ug m-3,R 352 | CD9,NO2,17/12/2017 00:00,82.10000,ug m-3,R 353 | CD9,NO2,18/12/2017 00:00,81.30000,ug m-3,R 354 | CD9,NO2,19/12/2017 00:00,115.30000,ug m-3,R 355 | CD9,NO2,20/12/2017 00:00,96.30000,ug m-3,R 356 | CD9,NO2,21/12/2017 00:00,90.60000,ug m-3,R 357 | CD9,NO2,22/12/2017 00:00,79.80000,ug m-3,R 358 | CD9,NO2,23/12/2017 00:00,69.10000,ug m-3,R 359 | CD9,NO2,24/12/2017 00:00,60.00000,ug m-3,R 360 | CD9,NO2,25/12/2017 00:00,37.40000,ug m-3,R 361 | CD9,NO2,26/12/2017 00:00,62.90000,ug m-3,R 362 | CD9,NO2,27/12/2017 00:00,41.40000,ug m-3,R 363 | CD9,NO2,28/12/2017 00:00,92.50000,ug m-3,R 364 | CD9,NO2,29/12/2017 00:00,93.40000,ug m-3,R 365 | CD9,NO2,30/12/2017 00:00,80.20000,ug m-3,R 366 | CD9,NO2,31/12/2017 00:00,75.20000,ug m-3,R 367 | -------------------------------------------------------------------------------- /data/export_765673286280c76ffd08d10d31126349.csv: -------------------------------------------------------------------------------- 1 | Country,Score,Constitution (sexual orientation) (Description),Employment (sexual orientation) (Description),Goods & services (sexual orientation) (),Education (sexual orientation) (),Health (sexual orientation) (),Equality body mandate (sexual orientation) (),Equality action plan (sexual orientation) (),Constitution (gender identity) (),Employment (gender identity) (),Goods & services (gender identity) (),Education (gender identity) (),Health (gender identity) (),Equality body mandate (gender identity) (),Equality action plan (gender identity) (),Law (gender expression) (),Law (intersex) (red category) (),Policies (intersex) (),Marriage equality (),Registered partnership (similar rights to marriage) (),Registered partnership (limited rights) (),Cohabitation (),No constitutional limitation on marriage (),Joint adoption (),Second-parent adoption (),Automatic co-parent recognition (),Medically assisted insemination (couples) (),Medically assisted insemination (singles) (),Trans people can marry a person of another gender (),Hate crime law (sexual orientation) (),Hate speech law (sexual orientation) (),Policy tackling hatred (sexual orientation) (),Hate crime law (gender identity) (),Hate speech law (gender identity) (),Policy tackling hatred (gender identity) (),Hate crime law (intersex) (),Policy tackling hatred (intersex) (),Existence of legal measures (),Existence of administrative procedures (),Name change (),No Gender Identity Disorder diagnosis/psychological opinion required (),No compulsory medical intervention required (),No compulsory surgical intervention required (),No compulsory sterilisation required (),No compulsory divorce required (),No age restriction (),Prohibition of medical intervention before child is able to informed consent (intersex) (),"Public event held, no state obstruction of freedom of assembly (3 years) ()","Associations operate, no state obstruction of freedom association (last 3 years) ()",No laws limiting freedom of expression (national/local) (),Law (sexual orientation) (),Policy/other positive measures (sexual orientation) (),Law (gender identity) (),Policy/other positive measures (gender identity) (),Law (intersex) (),Policy/other positive measures (intersex) () 2 | Albania,33, ,x,x,x, ,x,x, ,x,x,x, ,x,x, , , , , , , ,x, , , , , , ,x,x, ,x,x, , , , , , , , , , , , , ,x,x,x, , , , , , 3 | Andorra,35,x,x,x, , ,x, , , , , , ,x, , , ,x, ,x,x, ,x,x,x, , , , ,x, , , , , , , , , , , , , , , , , ,x,x,x, , , , , , 4 | Armenia,7, , , , , , , , , , , , , , , , , , , , , , , , , , ,x,x, , , , , , , , , , , , , , , , , , , ,x,x, , , , , , 5 | Austria,56,x,x,o,o,o,x, ,x,x,x, , ,x, , , , , ,x, ,x,x,x,x,x,x, ,x,x,x, , , , , , , ,x,x, ,x,x,x,x, , ,x,x,x,x, ,x,x, , 6 | Azerbaijan,5, , , , , , , , , , , , , , , , , , , , , , , , , , , ,x, , , , , , , , , , ,x, , , , , , , , , ,x, , , , , , 7 | Belarus,13, , , , , , , , , , , , , , , , , , , , , , , , , , ,x,x, , , , , , , , ,x,x,x, ,x,x,x, , , , , ,x, , , , , , 8 | Belgium,79, ,x,x,x,x,x, , ,x,x,x,x,x, ,x,x, ,x, ,x,x,x,x,x,x,x,x,x,x,x,x, ,x, ,x, ,x,x,x,x,x,x,x,x, , ,x,x,x,x,x,x,x,x, 9 | Bosnia and Herzegovina,31, ,x,x,x,x,x, , ,x,x,x,x,x, , ,x, , , , , ,x, , , , , ,x,x,o, ,x,o, , , ,x,x,x, , , , , , , , ,x,x, , , , , , 10 | Bulgaria,24, ,x,x,x,x,x, , ,x,x,x,x,x, , , , , , , , , , , , , ,x,x, , , , , , , , ,x, ,x, , ,x, , , , ,x,x,x, , , , , , 11 | Croatia,51, ,x,x,x,x,x, , ,x,x,x,x,x, ,x, , , ,x, ,x, , , , , ,x,x,x,x, ,x,x, , , ,x,x,x, , ,x,x, , , ,x,x,x,x, ,x, , , 12 | Cyprus,29, ,x, , , ,x, , , , , , , , , , , , ,x, , ,x, , , , ,x,x, ,x, , ,x, , , , , , , , , , , , , ,x,x,x,x, , , , , 13 | Czech Republic,29, ,x,x,x,x,x, , ,x,x,x,x,x, , , , , , ,x,x,x, , , , , ,x, , , , , , , , ,x,x,x, , , , , , , ,x,x,x, , , , , , 14 | Denmark,68, ,x,x,x, ,x, , ,x,x, , ,x, ,x, , ,x, , ,x,x,x,x,x,x,x,x,x,x,x, , ,x, , ,x,x,x,x,x,x,x,x, , ,x,x,x, ,x, ,x, , 15 | Estonia,39,x,x, ,x, ,x,x, ,x,x,x,x,x, , , , , , ,x, ,x, ,x, , ,x,x, ,x, , , , , , ,x,x,x, , ,x,x,x, , ,x,x,x, , , , , , 16 | Finland,73,x,x,x,x,x,x,x, ,x,x,x,x,x,x,x,x, ,x,x, ,x,x,x,x, ,x,x,x,x,x, ,x,x, , , ,x,x,x, , ,x, ,x, , ,x,x,x,x,x,x,x, , 17 | France,73, ,x,x,x,x,x,x, ,x,x,x,x,x,x, , , ,x, ,x,x,x,x,x, , , ,x,x,x,x,x,x,x, , ,x,x,x,x,x,x,x,x, , ,x,x,x,x, , ,x, , 18 | Macedonia,, , ,x,x,x, , , , , , , , , , , , , , , , ,x, , , , , , , , , , , , , , , , ,x, , , , , , , ,x,x,x, , , , , , 19 | Georgia,26, ,x,x,x,x,x, , ,x,x,x,x,x, , , , , , , , , , , , , ,x,x,x, , ,x, , , , , ,x,x, , , , ,x, , , ,x,x, , , , , , 20 | Germany,59,o,x,x,x,x,x,o,o,x,x,x,x,x,o, ,x, ,x,x, ,x,x,x,x, , , ,x, , ,o, , ,o, , ,x,x,x, ,x,x,x,x, , ,x,x,x,x,x,x,x, , 21 | Greece,52, ,x, , , ,x, , ,x, , , ,x, , ,x, , ,x, ,x,x, , , , ,x,x,x,x, ,x,x,x,x, ,x,x,x,x,x,x,x, , , ,x, ,x,x, ,x, , , 22 | Hungary,47, ,x,x,x,x,x, , ,x,x,x,x,x, , , , , ,x, ,x, , , , , ,x,x,x,x, ,x,x, , , ,x,x, , , ,x,x, , , ,x,x,x,x, , ,x, , 23 | Iceland,47, ,x,x,x, , , , ,x,x, , , , , ,x, ,x, , , ,x,x,x, ,x,x,x, ,x, , ,x, , , ,x,x, , , ,x,x,x, , ,x,x,x, , , , , , 24 | Ireland,52, ,x,x,x,x,x, , , , , , , , , , , ,x,x, ,x,x,x, ,x,x,x,x, ,x, , , , , , ,x,x,x,x,x,x,x,x, , ,x,x,x,x, , , , , 25 | Italy,27, ,x, , , , , , , , , , , , , , , , ,x, , , , , , , , ,x, , , , , , , , ,x,x, , , ,x,x, , , ,x,x,x,x, ,x, , , 26 | Kosovo,33,x,x,x,x,x,x,x, ,x,x,x,x,x,x, ,x, , , , , ,x, , , , , , ,x, , , , , , , , , , , , , , , , , ,x,x,x,x, ,x, , , 27 | Latvia,16, ,x, , , ,x, , , , , , , , , , , , , , , , , , , , ,x,x, , , , , , , , ,x, ,x, , , , , , , ,x,x,x,x, ,x, , , 28 | Liechtenstein,18, , , , , , , , , , , , , , , , , , ,x, , ,x, , , , , , , , , , , , , , , , , , , , , , , , , ,x,x,x, ,x, , , 29 | Lithuania,21, ,x,x,x,x,x, , , , , , , , , , , , , , , , , , , , , ,x,x,x, , , , , , , , , , , ,x,x, , , ,x,x, , ,x, , , , 30 | Luxembourg,47, ,x,x,x,x,x, , ,x, , , ,x, , , , ,x,x, , ,x,x,x, ,x,x,x,x,x, , , , , , , , ,x, , , , ,x, , ,x,x,x,x, , , , , 31 | Malta,91,x,x, ,x,x,x,x,x,x, ,x, ,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x, ,x, , , 32 | Moldova,13, ,x, , , ,x, , , , , , , , , , , , , , , , , , , , ,x,x, , , , , , , , , , ,x, ,x,x,x, , , , ,x, ,x, , , , , 33 | Monaco,10, , , , , , , , , , , , , , , , , , , , , ,x, , , , , , , ,x, , , , , , , , , , , , , , , , , ,x,x, , , , , , 34 | Montenegro,38, ,x,x,x,x,x,x, ,x,x,x,x,x,x,x, , , , , , , , , , , ,x,x,x,x, ,x,x, , , ,x,x, , , , , , , , , ,x,x, , , , , , 35 | Netherlands,60, ,x,x,x, ,x,x, , , , , , ,x, , , ,x,x, ,x,x,x,x,x,x,x,x, ,x, , , , , , ,x,x,x, ,x,x,x,x, , ,x,x,x,x,x,x,x, , 36 | Norway,78, ,x,x,x,x,x,x, ,x,x,x,x,x,x,x,x,x,x, , ,x,x,x,x,x,x, ,x,x,x, , , , , , ,x,x,x,x,x,x,x,x, , ,x,x,x,x,x,x,x,x, 37 | Poland,18, ,x, , , ,x, , , , , , , , , , , , , , , , , , , , ,x,x, , , , , , , , ,x,x,x, , , ,x, , , ,x,x,x,x, , , , , 38 | Portugal,69,x,x, ,x, ,x,x, ,x, ,x, ,x,x, , , ,x,x, ,x,x,x,x,x,x,x,x,x,x, ,x,x, , , ,x,x,x, ,x,x,x,x, , ,x,x,x,x, ,x, , , 39 | Romania,21, ,x,x,x,x,x, , , , , , , , , , , , , , , , , , , , , ,x,x, , , , , , , ,x,x,x, , , , , , , ,x,x,x,x, , , , , 40 | Russia,11, , , , , , , , , , , , , , , , , , , , , ,x, , , , ,x,x, , , , , , , , ,x,x,x, , ,x,x, , , , , , , , , , , , 41 | San Marino,12, , , , , , , , , , , , , , , , , , , , , ,x, , , , , , ,x,x, , , , , , , , , , , , , , , , , ,x,x, , , , , , 42 | Republic of Serbia,30, ,x,x,x, ,x,x, ,x,x,x, ,x,x, , , , , , , , , , , , , ,x,x,x, ,x, , , , , , , , , , , , , , ,x,x,x, , , , , , 43 | Slovakia,29, ,x,x,x,x,x, , ,x,x,x,x,x, , , , , , , , , , , , , , ,x,x,x, , , , , , ,x,x,x, , , , , , , ,x,x,x,x, , , , , 44 | Slovenia,48,x,x,x,x,x,x, , ,x,x,x,x,x, ,x, , , ,x,x,x,x, ,x, , , ,x, ,x, , , , , , , ,x,x, , ,x,x,x, , ,x,x,x,x, ,x, , , 45 | Spain,67, ,x,o,x,x, ,o, ,o,o,x,x, ,o,o,o, ,x,o,o,o,x,x,x,x,x,x,x,x,x,o,x,x,o,o, ,x,x,x,o,o,x,x,x,o,o,x,x,x,x, ,x, ,x,o 46 | Sweden,60,x,x,x,x,x,x, , ,x,x,x,x,x, ,x, , ,x, , ,x,x,x,x, ,x,x,x,x,x, ,x, , , , ,x,x,x, , ,x,x,x, , ,x,x,x,x, , , , , 47 | Switzerland,38,x,x, ,x,x, , , ,x, , , , , , , , , ,x, ,x,x, ,x, , , ,x, , , , , , , , ,x,x,x, , ,x,x,x, , ,x,x,x, ,x, ,x, , 48 | Turkey,9, , , , , , , , , , , , , , , , , , , , , , , , , , , ,x, , , , , , , , ,x, ,x, , , , , , , , ,x,x, , , , , , 49 | Ukraine,21, ,x, , , , ,x, ,x, , , , ,x, , , , , , , , , , , , ,x,x, , , , , , , , ,x,x,x, , , ,x,x, , , ,x,x, , , , , , 50 | United Kingdom,73,x,x,x,x,x,x,x,x,x,x,x,x,x,x, , , ,o,x, ,x,x,x,x,x,x,x,x,x,x,o,o,o,o,o, ,x,x,x, ,x,x,x,o, , ,x,x,x,x,x, ,x, , 51 | ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 52 | ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 53 | ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 54 | ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -------------------------------------------------------------------------------- /data/exportmap.csv: -------------------------------------------------------------------------------- 1 | Country,Score,Constitution (sexual orientation) (Description),Employment (sexual orientation) (Description),Goods & services (sexual orientation) (),Education (sexual orientation) (),Health (sexual orientation) (),Equality body mandate (sexual orientation) (),Equality action plan (sexual orientation) (),Constitution (gender identity) (),Employment (gender identity) (),Goods & services (gender identity) (),Education (gender identity) (),Health (gender identity) (),Equality body mandate (gender identity) (),Equality action plan (gender identity) (),Law (gender expression) (),Law (intersex) (red category) (),Policies (intersex) (),Marriage equality (),Registered partnership (similar rights to marriage) (),Registered partnership (limited rights) (),Cohabitation (),No constitutional limitation on marriage (),Joint adoption (),Second-parent adoption (),Automatic co-parent recognition (),Medically assisted insemination (couples) (),Medically assisted insemination (singles) (),Trans people can marry a person of another gender (),Hate crime law (sexual orientation) (),Hate speech law (sexual orientation) (),Policy tackling hatred (sexual orientation) (),Hate crime law (gender identity) (),Hate speech law (gender identity) (),Policy tackling hatred (gender identity) (),Hate crime law (intersex) (),Policy tackling hatred (intersex) (),Existence of legal measures (),Existence of administrative procedures (),Name change (),No Gender Identity Disorder diagnosis/psychological opinion required (),No compulsory medical intervention required (),No compulsory surgical intervention required (),No compulsory sterilisation required (),No compulsory divorce required (),No age restriction (),Prohibition of medical intervention before child is able to informed consent (intersex) (),"Public event held, no state obstruction of freedom of assembly (3 years) ()","Associations operate, no state obstruction of freedom association (last 3 years) ()",No laws limiting freedom of expression (national/local) (),Law (sexual orientation) (),Policy/other positive measures (sexual orientation) (),Law (gender identity) (),Policy/other positive measures (gender identity) (),Law (intersex) (),Policy/other positive measures (intersex) () 2 | Albania,33, ,x,x,x, ,x,x, ,x,x,x, ,x,x, , , , , , , ,x, , , , , , ,x,x, ,x,x, , , , , , , , , , , , , ,x,x,x, , , , , , 3 | Andorra,35,x,x,x, , ,x, , , , , , ,x, , , ,x, ,x,x, ,x,x,x, , , , ,x, , , , , , , , , , , , , , , , , ,x,x,x, , , , , , 4 | Armenia,7, , , , , , , , , , , , , , , , , , , , , , , , , , ,x,x, , , , , , , , , , , , , , , , , , , ,x,x, , , , , , 5 | Austria,56,x,x,o,o,o,x, ,x,x,x, , ,x, , , , , ,x, ,x,x,x,x,x,x, ,x,x,x, , , , , , , ,x,x, ,x,x,x,x, , ,x,x,x,x, ,x,x, , 6 | Azerbaijan,5, , , , , , , , , , , , , , , , , , , , , , , , , , , ,x, , , , , , , , , , ,x, , , , , , , , , ,x, , , , , , 7 | Belarus,13, , , , , , , , , , , , , , , , , , , , , , , , , , ,x,x, , , , , , , , ,x,x,x, ,x,x,x, , , , , ,x, , , , , , 8 | Belgium,79, ,x,x,x,x,x, , ,x,x,x,x,x, ,x,x, ,x, ,x,x,x,x,x,x,x,x,x,x,x,x, ,x, ,x, ,x,x,x,x,x,x,x,x, , ,x,x,x,x,x,x,x,x, 9 | Bosnia and Herzegovina,31, ,x,x,x,x,x, , ,x,x,x,x,x, , ,x, , , , , ,x, , , , , ,x,x,o, ,x,o, , , ,x,x,x, , , , , , , , ,x,x, , , , , , 10 | Bulgaria,24, ,x,x,x,x,x, , ,x,x,x,x,x, , , , , , , , , , , , , ,x,x, , , , , , , , ,x, ,x, , ,x, , , , ,x,x,x, , , , , , 11 | Croatia,51, ,x,x,x,x,x, , ,x,x,x,x,x, ,x, , , ,x, ,x, , , , , ,x,x,x,x, ,x,x, , , ,x,x,x, , ,x,x, , , ,x,x,x,x, ,x, , , 12 | Cyprus,29, ,x, , , ,x, , , , , , , , , , , , ,x, , ,x, , , , ,x,x, ,x, , ,x, , , , , , , , , , , , , ,x,x,x,x, , , , , 13 | Czech Republic,29, ,x,x,x,x,x, , ,x,x,x,x,x, , , , , , ,x,x,x, , , , , ,x, , , , , , , , ,x,x,x, , , , , , , ,x,x,x, , , , , , 14 | Denmark,68, ,x,x,x, ,x, , ,x,x, , ,x, ,x, , ,x, , ,x,x,x,x,x,x,x,x,x,x,x, , ,x, , ,x,x,x,x,x,x,x,x, , ,x,x,x, ,x, ,x, , 15 | Estonia,39,x,x, ,x, ,x,x, ,x,x,x,x,x, , , , , , ,x, ,x, ,x, , ,x,x, ,x, , , , , , ,x,x,x, , ,x,x,x, , ,x,x,x, , , , , , 16 | Finland,73,x,x,x,x,x,x,x, ,x,x,x,x,x,x,x,x, ,x,x, ,x,x,x,x, ,x,x,x,x,x, ,x,x, , , ,x,x,x, , ,x, ,x, , ,x,x,x,x,x,x,x, , 17 | France,73, ,x,x,x,x,x,x, ,x,x,x,x,x,x, , , ,x, ,x,x,x,x,x, , , ,x,x,x,x,x,x,x, , ,x,x,x,x,x,x,x,x, , ,x,x,x,x, , ,x, , 18 | Macedonia,, , ,x,x,x, , , , , , , , , , , , , , , , ,x, , , , , , , , , , , , , , , , ,x, , , , , , , ,x,x,x, , , , , , 19 | Georgia,26, ,x,x,x,x,x, , ,x,x,x,x,x, , , , , , , , , , , , , ,x,x,x, , ,x, , , , , ,x,x, , , , ,x, , , ,x,x, , , , , , 20 | Germany,59,o,x,x,x,x,x,o,o,x,x,x,x,x,o, ,x, ,x,x, ,x,x,x,x, , , ,x, , ,o, , ,o, , ,x,x,x, ,x,x,x,x, , ,x,x,x,x,x,x,x, , 21 | Greece,52, ,x, , , ,x, , ,x, , , ,x, , ,x, , ,x, ,x,x, , , , ,x,x,x,x, ,x,x,x,x, ,x,x,x,x,x,x,x, , , ,x, ,x,x, ,x, , , 22 | Hungary,47, ,x,x,x,x,x, , ,x,x,x,x,x, , , , , ,x, ,x, , , , , ,x,x,x,x, ,x,x, , , ,x,x, , , ,x,x, , , ,x,x,x,x, , ,x, , 23 | Iceland,47, ,x,x,x, , , , ,x,x, , , , , ,x, ,x, , , ,x,x,x, ,x,x,x, ,x, , ,x, , , ,x,x, , , ,x,x,x, , ,x,x,x, , , , , , 24 | Ireland,52, ,x,x,x,x,x, , , , , , , , , , , ,x,x, ,x,x,x, ,x,x,x,x, ,x, , , , , , ,x,x,x,x,x,x,x,x, , ,x,x,x,x, , , , , 25 | Italy,27, ,x, , , , , , , , , , , , , , , , ,x, , , , , , , , ,x, , , , , , , , ,x,x, , , ,x,x, , , ,x,x,x,x, ,x, , , 26 | Kosovo,33,x,x,x,x,x,x,x, ,x,x,x,x,x,x, ,x, , , , , ,x, , , , , , ,x, , , , , , , , , , , , , , , , , ,x,x,x,x, ,x, , , 27 | Latvia,16, ,x, , , ,x, , , , , , , , , , , , , , , , , , , , ,x,x, , , , , , , , ,x, ,x, , , , , , , ,x,x,x,x, ,x, , , 28 | Liechtenstein,18, , , , , , , , , , , , , , , , , , ,x, , ,x, , , , , , , , , , , , , , , , , , , , , , , , , ,x,x,x, ,x, , , 29 | Lithuania,21, ,x,x,x,x,x, , , , , , , , , , , , , , , , , , , , , ,x,x,x, , , , , , , , , , , ,x,x, , , ,x,x, , ,x, , , , 30 | Luxembourg,47, ,x,x,x,x,x, , ,x, , , ,x, , , , ,x,x, , ,x,x,x, ,x,x,x,x,x, , , , , , , , ,x, , , , ,x, , ,x,x,x,x, , , , , 31 | Malta,91,x,x, ,x,x,x,x,x,x, ,x, ,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x, ,x, , , 32 | Moldova,13, ,x, , , ,x, , , , , , , , , , , , , , , , , , , , ,x,x, , , , , , , , , , ,x, ,x,x,x, , , , ,x, ,x, , , , , 33 | Monaco,10, , , , , , , , , , , , , , , , , , , , , ,x, , , , , , , ,x, , , , , , , , , , , , , , , , , ,x,x, , , , , , 34 | Montenegro,38, ,x,x,x,x,x,x, ,x,x,x,x,x,x,x, , , , , , , , , , , ,x,x,x,x, ,x,x, , , ,x,x, , , , , , , , , ,x,x, , , , , , 35 | Netherlands,60, ,x,x,x, ,x,x, , , , , , ,x, , , ,x,x, ,x,x,x,x,x,x,x,x, ,x, , , , , , ,x,x,x, ,x,x,x,x, , ,x,x,x,x,x,x,x, , 36 | Norway,78, ,x,x,x,x,x,x, ,x,x,x,x,x,x,x,x,x,x, , ,x,x,x,x,x,x, ,x,x,x, , , , , , ,x,x,x,x,x,x,x,x, , ,x,x,x,x,x,x,x,x, 37 | Poland,18, ,x, , , ,x, , , , , , , , , , , , , , , , , , , , ,x,x, , , , , , , , ,x,x,x, , , ,x, , , ,x,x,x,x, , , , , 38 | Portugal,69,x,x, ,x, ,x,x, ,x, ,x, ,x,x, , , ,x,x, ,x,x,x,x,x,x,x,x,x,x, ,x,x, , , ,x,x,x, ,x,x,x,x, , ,x,x,x,x, ,x, , , 39 | Romania,21, ,x,x,x,x,x, , , , , , , , , , , , , , , , , , , , , ,x,x, , , , , , , ,x,x,x, , , , , , , ,x,x,x,x, , , , , 40 | Russia,11, , , , , , , , , , , , , , , , , , , , , ,x, , , , ,x,x, , , , , , , , ,x,x,x, , ,x,x, , , , , , , , , , , , 41 | San Marino,12, , , , , , , , , , , , , , , , , , , , , ,x, , , , , , ,x,x, , , , , , , , , , , , , , , , , ,x,x, , , , , , 42 | Republic of Serbia,30, ,x,x,x, ,x,x, ,x,x,x, ,x,x, , , , , , , , , , , , , ,x,x,x, ,x, , , , , , , , , , , , , , ,x,x,x, , , , , , 43 | Slovakia,29, ,x,x,x,x,x, , ,x,x,x,x,x, , , , , , , , , , , , , , ,x,x,x, , , , , , ,x,x,x, , , , , , , ,x,x,x,x, , , , , 44 | Slovenia,48,x,x,x,x,x,x, , ,x,x,x,x,x, ,x, , , ,x,x,x,x, ,x, , , ,x, ,x, , , , , , , ,x,x, , ,x,x,x, , ,x,x,x,x, ,x, , , 45 | Spain,67, ,x,o,x,x, ,o, ,o,o,x,x, ,o,o,o, ,x,o,o,o,x,x,x,x,x,x,x,x,x,o,x,x,o,o, ,x,x,x,o,o,x,x,x,o,o,x,x,x,x, ,x, ,x,o 46 | Sweden,60,x,x,x,x,x,x, , ,x,x,x,x,x, ,x, , ,x, , ,x,x,x,x, ,x,x,x,x,x, ,x, , , , ,x,x,x, , ,x,x,x, , ,x,x,x,x, , , , , 47 | Switzerland,38,x,x, ,x,x, , , ,x, , , , , , , , , ,x, ,x,x, ,x, , , ,x, , , , , , , , ,x,x,x, , ,x,x,x, , ,x,x,x, ,x, ,x, , 48 | Turkey,9, , , , , , , , , , , , , , , , , , , , , , , , , , , ,x, , , , , , , , ,x, ,x, , , , , , , , ,x,x, , , , , , 49 | Ukraine,21, ,x, , , , ,x, ,x, , , , ,x, , , , , , , , , , , , ,x,x, , , , , , , , ,x,x,x, , , ,x,x, , , ,x,x, , , , , , 50 | United Kingdom,73,x,x,x,x,x,x,x,x,x,x,x,x,x,x, , , ,o,x, ,x,x,x,x,x,x,x,x,x,x,o,o,o,o,o, ,x,x,x, ,x,x,x,o, , ,x,x,x,x,x, ,x, , 51 | ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 52 | ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 53 | ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 54 | ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -------------------------------------------------------------------------------- /data/uk_650_wpc_2017_full_res_v1.8/uk_650_wpc_2017_full_res_v1.8.dbf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/data/uk_650_wpc_2017_full_res_v1.8/uk_650_wpc_2017_full_res_v1.8.dbf -------------------------------------------------------------------------------- /data/uk_650_wpc_2017_full_res_v1.8/uk_650_wpc_2017_full_res_v1.8.prj: -------------------------------------------------------------------------------- 1 | PROJCS["OSGB_1936_British_National_Grid",GEOGCS["GCS_OSGB 1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",49],PARAMETER["central_meridian",-2],PARAMETER["scale_factor",0.9996012717],PARAMETER["false_easting",400000],PARAMETER["false_northing",-100000],UNIT["Meter",1]] -------------------------------------------------------------------------------- /data/uk_650_wpc_2017_full_res_v1.8/uk_650_wpc_2017_full_res_v1.8.qml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | 341 | 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 | 350 | 351 | 352 | 353 | 354 | 355 | 356 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 364 | 365 | 366 | 367 | 368 | 369 | 370 | 371 | 372 | 373 | 374 | 375 | 376 | 377 | 378 | 379 | 380 | 381 | 382 | 383 | 384 | 385 | 386 | 387 | 388 | 389 | 390 | 391 | 392 | 393 | 394 | 395 | 396 | 397 | 398 | 399 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 427 | 428 | 429 | 430 | 431 | 432 | 433 | 434 | 435 | 436 | 437 | 438 | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | 452 | 453 | 454 | 455 | 456 | 457 | 458 | 459 | 460 | 461 | 462 | 463 | 464 | 465 | 466 | 467 | 468 | 469 | 470 | 471 | 472 | 473 | 474 | 475 | 476 | 477 | 478 | 479 | 480 | 481 | 482 | 483 | 484 | 485 | 486 | 487 | 488 | 489 | 490 | 491 | 492 | 493 | 494 | 495 | 496 | 497 | 498 | 499 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 509 | 510 | 511 | 512 | 513 | 514 | 515 | 516 | 517 | 518 | 519 | 520 | 521 | 522 | 523 | 524 | 525 | 526 | 527 | 528 | 529 | 530 | 531 | 532 | 533 | 534 | 535 | 536 | 537 | 538 | 539 | 540 | 541 | 542 | 543 | 544 | 545 | 546 | 547 | 548 | 549 | 550 | 551 | 552 | 553 | 554 | 555 | 556 | 557 | 558 | 559 | 560 | 561 | 562 | 563 | 564 | 565 | 566 | 567 | 568 | 569 | 570 | 571 | 572 | 573 | 574 | 575 | 576 | 577 | 578 | 579 | 580 | 581 | 582 | 583 | 584 | 585 | 586 | 587 | 588 | 589 | 590 | 591 | 592 | 593 | 594 | 595 | 596 | 597 | 598 | 599 | 600 | 601 | 602 | 603 | 604 | 605 | 606 | 607 | 608 | 609 | 610 | 611 | 612 | 613 | 614 | 615 | 616 | 617 | 618 | 619 | 620 | 621 | 622 | 623 | 624 | 625 | 626 | 627 | 628 | 629 | 630 | 631 | 632 | 633 | 634 | 635 | 636 | 637 | 638 | 639 | 640 | 641 | 0 642 | 0 643 | 0 644 | PCONNAME 645 | 646 | 647 | 666 | 667 | 668 | 669 | 670 | 671 | 672 | 673 | 674 | 675 | 676 | 677 | 678 | 679 | 680 | 681 | 682 | 683 | 684 | 685 | 686 | 687 | 688 | 689 | 690 | 691 | 692 | 693 | 694 | 695 | 696 | 697 | 698 | 699 | 700 | 701 | 702 | 703 | 704 | 705 | 706 | 707 | 708 | 709 | 710 | 711 | 712 | 713 | 714 | 715 | 716 | 717 | 718 | 719 | 720 | 721 | 722 | 723 | 724 | 725 | 726 | 727 | 728 | 729 | 730 | 731 | 732 | 733 | 734 | 735 | 736 | 737 | 738 | 739 | 740 | 741 | 742 | 743 | 744 | 745 | 746 | 747 | 748 | 0 749 | 750 | 767 | 0 768 | generatedlayout 769 | 770 | 771 | 772 | 773 | 774 | 2 775 | 776 | -------------------------------------------------------------------------------- /data/uk_650_wpc_2017_full_res_v1.8/uk_650_wpc_2017_full_res_v1.8.shp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/data/uk_650_wpc_2017_full_res_v1.8/uk_650_wpc_2017_full_res_v1.8.shp -------------------------------------------------------------------------------- /data/uk_650_wpc_2017_full_res_v1.8/uk_650_wpc_2017_full_res_v1.8.shx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/data/uk_650_wpc_2017_full_res_v1.8/uk_650_wpc_2017_full_res_v1.8.shx -------------------------------------------------------------------------------- /data/ukmye2015/Correction_MYEB3_23.03.17.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/data/ukmye2015/Correction_MYEB3_23.03.17.docx -------------------------------------------------------------------------------- /data/ukmye2015/Correction_MYEB3_23.03.17.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/data/ukmye2015/Correction_MYEB3_23.03.17.pdf -------------------------------------------------------------------------------- /data/ukmye2015/MYE1_population_summary_for_UK_2015.xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/data/ukmye2015/MYE1_population_summary_for_UK_2015.xls -------------------------------------------------------------------------------- /data/ukmye2015/MYE2_population_by_sex_and_age_for_local_authorities_UK_2015.xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/data/ukmye2015/MYE2_population_by_sex_and_age_for_local_authorities_UK_2015.xls -------------------------------------------------------------------------------- /data/ukmye2015/MYE3_population_change_for_local_authorities_UK_2015.xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/data/ukmye2015/MYE3_population_change_for_local_authorities_UK_2015.xls -------------------------------------------------------------------------------- /data/ukmye2015/MYE4_population_summary_for_UK_countries_(7115).xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/data/ukmye2015/MYE4_population_summary_for_UK_countries_(7115).xls -------------------------------------------------------------------------------- /data/ukmye2015/MYE5_population_density_series_UK_(0115).xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/data/ukmye2015/MYE5_population_density_series_UK_(0115).xls -------------------------------------------------------------------------------- /data/ukmye2015/MYEB_information_note.doc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/data/ukmye2015/MYEB_information_note.doc -------------------------------------------------------------------------------- /data/ukmye2015/MYEB_information_note.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/data/ukmye2015/MYEB_information_note.pdf -------------------------------------------------------------------------------- /figures/airpollution.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/figures/airpollution.png -------------------------------------------------------------------------------- /figures/airpollution1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/figures/airpollution1.png -------------------------------------------------------------------------------- /figures/airpollution2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/figures/airpollution2.png -------------------------------------------------------------------------------- /figures/airpollution3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/figures/airpollution3.png -------------------------------------------------------------------------------- /figures/airpollution4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/figures/airpollution4.png -------------------------------------------------------------------------------- /figures/changeturnoutandmajority.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/figures/changeturnoutandmajority.png -------------------------------------------------------------------------------- /figures/crime.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/figures/crime.png -------------------------------------------------------------------------------- /figures/crime01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/figures/crime01.png -------------------------------------------------------------------------------- /figures/crime02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/figures/crime02.png -------------------------------------------------------------------------------- /figures/crime03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/figures/crime03.png -------------------------------------------------------------------------------- /figures/crime04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/figures/crime04.png -------------------------------------------------------------------------------- /figures/crime05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/figures/crime05.png -------------------------------------------------------------------------------- /figures/crime06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/figures/crime06.png -------------------------------------------------------------------------------- /figures/crime07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/figures/crime07.png -------------------------------------------------------------------------------- /figures/crime08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/figures/crime08.png -------------------------------------------------------------------------------- /figures/crime09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/figures/crime09.png -------------------------------------------------------------------------------- /figures/crime10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/figures/crime10.png -------------------------------------------------------------------------------- /figures/devtools.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/figures/devtools.png -------------------------------------------------------------------------------- /figures/lgbtmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/figures/lgbtmap.png -------------------------------------------------------------------------------- /figures/lgbtmap01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/figures/lgbtmap01.png -------------------------------------------------------------------------------- /figures/lgbtmap02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/figures/lgbtmap02.png -------------------------------------------------------------------------------- /figures/lgbtmap03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/figures/lgbtmap03.png -------------------------------------------------------------------------------- /figures/lgbtmap04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/figures/lgbtmap04.png -------------------------------------------------------------------------------- /figures/lgbtmap05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/figures/lgbtmap05.png -------------------------------------------------------------------------------- /figures/lgbtmap06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/figures/lgbtmap06.png -------------------------------------------------------------------------------- /figures/lgbtmap07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/figures/lgbtmap07.png -------------------------------------------------------------------------------- /figures/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/figures/screenshot.png -------------------------------------------------------------------------------- /figures/simpledistributions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/figures/simpledistributions.png -------------------------------------------------------------------------------- /figures/trump.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/figures/trump.png -------------------------------------------------------------------------------- /figures/trump01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basilesimon/interactive-journalism-module/93c7c00cfa5f8d00341e35fde8b840023ec6b0a0/figures/trump01.png -------------------------------------------------------------------------------- /interactive-journalism-module.Rproj: -------------------------------------------------------------------------------- 1 | Version: 1.0 2 | 3 | RestoreWorkspace: Default 4 | SaveWorkspace: Default 5 | AlwaysSaveHistory: Default 6 | 7 | EnableCodeIndexing: Yes 8 | UseSpacesForTab: Yes 9 | NumSpacesForTab: 2 10 | Encoding: UTF-8 11 | 12 | RnwWeave: Sweave 13 | LaTeX: pdfLaTeX 14 | -------------------------------------------------------------------------------- /module.org: -------------------------------------------------------------------------------- 1 | #+Title: JOM299 2 | #+Author: Basile Simon 3 | #+Email: basile.simon@city.ac.uk 4 | 5 | * week 1: the basics 6 | We'll talk at length about the module itself and how it will be evaluated. We'll look at some online resources to look at every week to get a feel for what's going on in the field of interactive journalism. We will also go through a general introduction to programming concepts - which are applicable regardless of the programming language you choose. 7 | * week 2: air pollution on Euston Road 8 | We will work our way through a dataset of air pollution in London and produce a simple visualisation. This will give us the chance to clean and tidy up a dataset (a prerequisite to much of the work we do) and enrich it with average calculations. 9 | * week 3: LGBTI index in Europe 10 | We will represent a dataset as a map of Europe and talk through geographical projections and colour theory to illustrate the state of LGBT rights on the continent. 11 | * week 4: wrangling GE2019 data 12 | We will push our mapping skills a little further and model some of the results from the December general election, as we would on an election results day, producing incresingly interesting visualisations supporting news lines as we go along. 13 | * week 5: scraping crime data in London 14 | We will understand how to automate the collection of police and crime data and design from the ground up a large-ish dataset. 15 | * week 6: exploring crime data in London 16 | From the aforementioned dataset of crime, we will move on to some exploratory data analysis, looking out for patterns and broad trends in our data. 17 | * week 7: ??? 18 | * weeks 8, 9, 10: final project 19 | We will go round the room and take questions about final project. Come prepared with actual problems, be happy to work collaboratively and to make progress in class while we tackle challenges collectively, on the big screen. 20 | -------------------------------------------------------------------------------- /presentation/mozilla-devrel-light.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Mozilla DevRel Theme for reveal.js - Light variation. 3 | * 4 | * By Salvador de la Puente, http://unoyunodiez.com 5 | */ 6 | /** 7 | * Mozilla DevRel Theme for reveal.js - Common properties. 8 | * 9 | * By Salvador de la Puente, http://unoyunodiez.com 10 | */ 11 | @import url(../../lib/font/fira-sans/fira.css); 12 | /********************************************* 13 | * GLOBAL STYLES 14 | *********************************************/ 15 | body { 16 | background-image: linear-gradient(to bottom, #D7D3C8, #F6F4EC 60%); 17 | background-color: #222; } 18 | 19 | .reveal { 20 | font-family: "Fira Sans", Helvetica, sans-serif; 21 | font-size: 33px; 22 | font-weight: normal; 23 | color: #484848; } 24 | 25 | ::selection { 26 | color: #fff; 27 | background: #00c99d; 28 | text-shadow: none; } 29 | 30 | .reveal .slides > section, 31 | .reveal .slides > section > section { 32 | line-height: 1.3; 33 | font-weight: inherit; } 34 | 35 | /********************************************* 36 | * HEADERS 37 | *********************************************/ 38 | .reveal h1, 39 | .reveal h2, 40 | .reveal h3, 41 | .reveal h4, 42 | .reveal h5, 43 | .reveal h6 { 44 | margin: 0 0 20px 0; 45 | color: #484848; 46 | font-family: "Fira Sans", Helvetica, sans-serif; 47 | font-weight: 600; 48 | line-height: 1.2; 49 | letter-spacing: normal; 50 | text-transform: uppercase; 51 | text-shadow: none; 52 | word-wrap: break-word; } 53 | 54 | .reveal h1 { 55 | font-size: 2em; } 56 | 57 | .reveal h2 { 58 | font-size: 1.6em; } 59 | 60 | .reveal h3 { 61 | font-size: 1.3em; } 62 | 63 | .reveal h4 { 64 | font-size: 1em; } 65 | 66 | .reveal h1 { 67 | text-shadow: none; } 68 | 69 | /********************************************* 70 | * OTHER 71 | *********************************************/ 72 | .reveal p { 73 | margin: 20px 0; 74 | line-height: 1.3; } 75 | 76 | /* Ensure certain elements are never larger than the slide itself */ 77 | .reveal img, 78 | .reveal video, 79 | .reveal iframe { 80 | max-width: 95%; 81 | max-height: 95%; } 82 | 83 | .reveal strong, 84 | .reveal b { 85 | font-weight: bold; } 86 | 87 | .reveal em { 88 | font-style: italic; } 89 | 90 | .reveal ol, 91 | .reveal dl, 92 | .reveal ul { 93 | display: inline-block; 94 | text-align: left; 95 | margin: 0 0 0 1em; } 96 | 97 | .reveal ol { 98 | list-style-type: decimal; } 99 | 100 | .reveal ul { 101 | list-style-type: disc; } 102 | 103 | .reveal ul ul { 104 | list-style-type: square; } 105 | 106 | .reveal ul ul ul { 107 | list-style-type: circle; } 108 | 109 | .reveal ul ul, 110 | .reveal ul ol, 111 | .reveal ol ol, 112 | .reveal ol ul { 113 | display: block; 114 | margin-left: 40px; } 115 | 116 | .reveal dt { 117 | font-weight: bold; } 118 | 119 | .reveal dd { 120 | margin-left: 40px; } 121 | 122 | .reveal q, 123 | .reveal blockquote { 124 | quotes: none; } 125 | 126 | .reveal blockquote { 127 | display: block; 128 | position: relative; 129 | width: 70%; 130 | margin: 20px auto; 131 | padding: 5px; 132 | font-style: italic; 133 | background: rgba(255, 255, 255, 0.05); 134 | box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); } 135 | 136 | .reveal blockquote p:first-child, 137 | .reveal blockquote p:last-child { 138 | display: inline-block; } 139 | 140 | .reveal q { 141 | font-style: italic; } 142 | 143 | .reveal pre { 144 | display: block; 145 | position: relative; 146 | width: 90%; 147 | margin: 20px auto; 148 | text-align: left; 149 | font-size: 0.55em; 150 | font-family: monospace; 151 | line-height: 1.2em; 152 | word-wrap: break-word; 153 | box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); } 154 | 155 | .reveal code { 156 | font-family: monospace; 157 | font-size: 1.5rem;} 158 | 159 | .reveal pre code { 160 | display: block; 161 | padding: 5px; 162 | overflow: auto; 163 | max-height: 400px; 164 | word-wrap: normal; } 165 | 166 | .reveal table { 167 | margin: auto; 168 | border-collapse: collapse; 169 | border-spacing: 0; } 170 | 171 | .reveal table th { 172 | font-weight: bold; } 173 | 174 | .reveal table th, 175 | .reveal table td { 176 | text-align: left; 177 | padding: 0.2em 0.5em 0.2em 0.5em; 178 | border-bottom: 1px solid; } 179 | 180 | .reveal table th[align="center"], 181 | .reveal table td[align="center"] { 182 | text-align: center; } 183 | 184 | .reveal table th[align="right"], 185 | .reveal table td[align="right"] { 186 | text-align: right; } 187 | 188 | .reveal table tbody tr:last-child th, 189 | .reveal table tbody tr:last-child td { 190 | border-bottom: none; } 191 | 192 | .reveal sup { 193 | vertical-align: super; } 194 | 195 | .reveal sub { 196 | vertical-align: sub; } 197 | 198 | .reveal small { 199 | display: inline-block; 200 | font-size: 0.6em; 201 | line-height: 1.2em; 202 | vertical-align: top; } 203 | 204 | .reveal small * { 205 | vertical-align: top; } 206 | 207 | /********************************************* 208 | * LINKS 209 | *********************************************/ 210 | .reveal a { 211 | color: #004939; 212 | text-decoration: none; 213 | -webkit-transition: color .15s ease; 214 | -moz-transition: color .15s ease; 215 | transition: color .15s ease; } 216 | 217 | .reveal a:hover { 218 | color: #009675; 219 | text-shadow: none; 220 | border: none; } 221 | 222 | .reveal .roll span:after { 223 | color: #fff; 224 | background: black; } 225 | 226 | /********************************************* 227 | * IMAGES 228 | *********************************************/ 229 | .reveal section img { 230 | margin: 15px 0px; 231 | background: rgba(255, 255, 255, 0.12); 232 | border: 4px solid #484848; 233 | box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); } 234 | 235 | .reveal section img.plain { 236 | border: 0; 237 | box-shadow: none; } 238 | 239 | .reveal a img { 240 | -webkit-transition: all .15s linear; 241 | -moz-transition: all .15s linear; 242 | transition: all .15s linear; } 243 | 244 | .reveal a:hover img { 245 | background: rgba(255, 255, 255, 0.2); 246 | border-color: #004939; 247 | box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); } 248 | 249 | /********************************************* 250 | * NAVIGATION CONTROLS 251 | *********************************************/ 252 | .reveal .controls .navigate-left, 253 | .reveal .controls .navigate-left.enabled { 254 | border-right-color: #004939; } 255 | 256 | .reveal .controls .navigate-right, 257 | .reveal .controls .navigate-right.enabled { 258 | border-left-color: #004939; } 259 | 260 | .reveal .controls .navigate-up, 261 | .reveal .controls .navigate-up.enabled { 262 | border-bottom-color: #004939; } 263 | 264 | .reveal .controls .navigate-down, 265 | .reveal .controls .navigate-down.enabled { 266 | border-top-color: #004939; } 267 | 268 | .reveal .controls .navigate-left.enabled:hover { 269 | border-right-color: #009675; } 270 | 271 | .reveal .controls .navigate-right.enabled:hover { 272 | border-left-color: #009675; } 273 | 274 | .reveal .controls .navigate-up.enabled:hover { 275 | border-bottom-color: #009675; } 276 | 277 | .reveal .controls .navigate-down.enabled:hover { 278 | border-top-color: #009675; } 279 | 280 | /********************************************* 281 | * PROGRESS BAR 282 | *********************************************/ 283 | .reveal .progress { 284 | background: rgba(0, 0, 0, 0.2); } 285 | 286 | .reveal .progress span { 287 | background: #004939; 288 | -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); 289 | -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); 290 | transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); } 291 | 292 | /********************************************* 293 | * MOZILLA THEME OVERRIDES 294 | *********************************************/ 295 | body { 296 | border-top: 2px solid white; } 297 | 298 | #tabzilla:before { 299 | background-color: #484848; } 300 | 301 | .reveal a { 302 | text-decoration: underline; } 303 | 304 | .reveal pre, 305 | .reveal section img { 306 | border-radius: 4px; 307 | box-shadow: 0 4px 10px #000; } 308 | 309 | .reveal header h1 + p, 310 | .reveal header h2 + p, 311 | .reveal header h3 + p, 312 | .reveal header h4 + p, 313 | .reveal header h5 + p, 314 | .reveal header h6 + p { 315 | color: #762313; 316 | border: none; 317 | padding: inherit; 318 | text-transform: uppercase; } 319 | 320 | .reveal h2 { 321 | margin-bottom: 1em; } 322 | 323 | .reveal section > section > h2 { 324 | border-top: 0.1em solid #484848; 325 | border-bottom: 0.1em solid #484848; 326 | padding: 1em 0; } 327 | 328 | .reveal strong { 329 | color: #762313; } 330 | 331 | .reveal code:not(.hljs) { 332 | padding: 0.3rem 0.5rem; 333 | background-color: #dcd9d4; 334 | border-radius: 8px; } 335 | 336 | .reveal code[data-dim] mark { 337 | color: #CBBE9A; 338 | background-color: transparent; } 339 | .reveal code[data-dim] mark * { 340 | color: #CBBE9A; } 341 | 342 | .reveal pre { 343 | width: 106ex; 344 | font-size: 0.5em; } 345 | 346 | .reveal code { 347 | line-height: 1.5em; 348 | font-family: "Fira Mono", monospace; } 349 | 350 | .reveal li { 351 | margin-bottom: 0.7em; } 352 | 353 | .reveal ul ul { 354 | margin-top: 1em; } 355 | -------------------------------------------------------------------------------- /website-template/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Bootswatch: Flatly 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 20 | 21 |
22 | 30 | 31 |
32 |
33 |

Example body text

34 |

Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam id dolor id nibh ultricies vehicula.

35 |

This line of text is meant to be treated as fine print.

36 |

The following is rendered as bold text.

37 |

The following is rendered as italicized text.

38 |
39 |
40 | 41 |
42 |
43 | 44 |
45 |
46 |

Section with an image on the left

47 |

Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam id dolor id nibh ultricies vehicula.

48 |

Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam id dolor id nibh ultricies vehicula.

49 |

Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam id dolor id nibh ultricies vehicula.

50 |

Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam id dolor id nibh ultricies vehicula.

51 |
52 |
53 | 54 |
55 |
56 |

Referendum results

57 |
58 |
59 |
60 |
61 |
62 |
63 |

64 | 52% Leave, 48% Remain 65 |

66 |
67 |
68 |
69 | 70 | 71 | -------------------------------------------------------------------------------- /website-template/style.css: -------------------------------------------------------------------------------- 1 | #banner { 2 | margin-top: 100px; 3 | } 4 | 5 | section.row { 6 | margin-top: 50px; 7 | } 8 | -------------------------------------------------------------------------------- /week1-intro.org: -------------------------------------------------------------------------------- 1 | #+Title: JOM299 2 | #+Author: Basile Simon 3 | #+Email: @basilesimon 4 | 5 | * week 1: intro to the module (and to programming) 6 | ** Module information 7 | 8 | Module code: JOM299 9 | Title: Advanced Data and Coding 10 | 11 | - Module and assessment outline 12 | - The self-learner attitude 13 | - Useful resources 14 | - Intro to the DevTools, the DOM, and debugging your things 15 | 16 | ** Topics covered in this module 17 | 18 | - Introduction to programming and to R 19 | - Basic web and API scraping 20 | - Exploratory analysis and day-to-day work 21 | - Elements of data visualisation and mapping 22 | 23 | ** Module outline and goals according to the spec 24 | 25 | - Develop a *complex skillset* 26 | - Gain an *understanding of data* and of modern digital journalism 27 | - Develop a *problem-solving philosophy* 28 | - Acquire *self-direction in learning* 29 | 30 | ** And I add to this: 31 | 32 | *Have a crucial advantage over others in the industry* 33 | 34 | ** Assessment: mark split between... 35 | 36 | - 25% presentation and brief (will take place on *week 5*) 37 | - 75% final project (mid-April?) 38 | 39 | More information about these assessments as we go along. 40 | 41 | ** Assessment two: final project 42 | 43 | #+BEGIN_QUOTE 44 | Your project should identify and solve a journalistic problem, using data and coding work. Typically this will focus on a story; either a complete story or an interactive feature forming part of a story. It could also be something for use in a newsroom (eg a tool helpful to journalists). 45 | #+END_QUOTE 46 | 47 | That's from the course specs 48 | 49 | ** More about the final project 50 | 51 | Your project must be relevant to journalism (see above), operate at a functional level (at least as a working prototype), and involve all of the following: 52 | 53 | - data techniques, involving scraping, cleaning, analysis and/or presentation, as needed/appropriate to your project 54 | - adding value through user interactivity 55 | - use and modification of HTML, CSS, Javascript, Python, R, d3 56 | - and/or other code (not simply plug-and-play elements) 57 | - use of free and/or low-cost tools 58 | - problem-solving. 59 | 60 | (that's also from the spec) 61 | 62 | ** The final project in practice 63 | 64 | You will either: 65 | 66 | - Create a website from a template, but through coding in HTML, CSS and Javascript, hosting your story and data work; 67 | - OR publish a blog on the platform of your choice (Medium, Interhacktive, personal blog) 68 | 69 | Since these two options demonstrate different skillsets, they will be assessed slightly differently at my discretion. 70 | 71 | ** The self-learner attitude - what is that? 72 | 73 | I want you to engage in the community of data-journalists, news hackers and tinkerers 74 | 75 | - [[https://news.ycombinator.com/item?id=13148319][Tips for self-learning (Hacker News)]] 76 | - [[https://www.reddit.com/r/dataisbeautiful/][/r/dataisbeautiful community]] 77 | - [[http://newsnerdery.org/][News Nerdery (Slack)]] 78 | - RSS feeds, Twitter 79 | 80 | ** Useful links 81 | 82 | - [[https://www.thetimes.co.uk/article/digital-news-work-experience-qmg8f9585][The Times and Sunday Times work experience]] 83 | - [[https://www.theguardian.com/gnmeducationcentre/journalism-work-experience-opportunities-young-people][The Guardian work experience]] 84 | 85 | ** Final projects from the past 86 | 87 | - https://katetobar.github.io/ 88 | - https://michaelgoodier.github.io/sex_for_rent/ 89 | - https://ellawilksharper.github.io/a-day-in-the-life-of-mps/ 90 | - https://nellmooney.github.io/thecasting/ 91 | - https://alexandrama.github.io/trump-frequent-mentions/ 92 | - https://nicucalcea.github.io/cctv/ 93 | - https://natgall.github.io/Project_Bureau_Local/ 94 | - https://kimgid.github.io/ 95 | - https://jaimellinares.github.io/spanish-tourism/docs/How%20Spanish%20tourism%20is%20changing%20(DJaC%20Final%20Project).html 96 | 97 | ** Elements of syntax 98 | *** What's a variable? 99 | 100 | A variable is a store, in which you can put different data: 101 | 102 | - your age (a number) 103 | - your name (a string) 104 | - the result of a logical operation (true/false) 105 | 106 | #+BEGIN_SRC R 107 | myAge <- 26 108 | myName <- "Basile" 109 | do_i_teach_at_city <- TRUE 110 | #+END_SRC 111 | 112 | *** What are the different data types? 113 | 114 | - **string**: takes quotation marks around it. example: 115 | 116 | #+BEGIN_SRC R 117 | name <- "basile" 118 | age <- "27" 119 | #+END_SRC 120 | 121 | - **number**: no quotation marks. example: 122 | 123 | #+BEGIN_SRC R 124 | number <- 10 125 | budget <- 1245.5 126 | #+END_SRC 127 | 128 | - **boolean**: logical operators: 129 | 130 | #+BEGIN_SRC R 131 | basileIsHere <- TRUE 132 | basileHasShaved <- FALSE 133 | #+END_SRC 134 | 135 | - **array/list** (more later) 136 | - **null/undefined** 137 | 138 | *** Data types: lists/arrays 139 | 140 | #+BEGIN_SRC R 141 | thisIsAList <- c(1,2,3,'basile') 142 | #+END_SRC 143 | 144 | contAined between brackets, they store items in them. we can access these items like so: 145 | 146 | #+BEGIN_SRC R 147 | thisIsAList[1] // 1 148 | thisIsAList[4] // 'basile' 149 | #+END_SRC 150 | 151 | *** What we use data types for 152 | 153 | diffErent data have different use cases. 154 | 155 | - Text is obviously a ~string~ 156 | - If you try to plot numbers on a chart or do maths, you better use ~numbers~, not strings 157 | - ~booleans~ will be useful to do logical checks, e.g. "show me all MPs whose age is over 60" 158 | 159 | *** What we use data types for (repeat) 160 | 161 | diffErent data have different use cases. 162 | 163 | - ~lists~ can be _iterated over_, i.e. "for each element in this list, do that" 164 | 165 | Think of an Excel column with a formula that you drag down to apply it to all cells 166 | 167 | *** The for loop 168 | 169 | very useful pattern: ~for~ iterates over list items. 170 | 171 | #+BEGIN_SRC R 172 | thisIsAList <- c(1,2,3,'basile') 173 | for (item in thisIsAList) { 174 | Print(item) 175 | } 176 | [1] "1" 177 | [1] "2" 178 | [1] "3" 179 | [1] "basile" 180 | #+END_SRC 181 | 182 | *** do things with for loops 183 | - For each item in my array, 184 | - Log the said item plus one. 185 | 186 | #+BEGIN_SRC R 187 | myLIst <- c("city", "dataviz", "basile") 188 | for (word in myList) { 189 | Print(paste(word, "is awesome", separator = " ")) 190 | } 191 | [1] "city is awesome" 192 | [1] "dataviz is awesome" 193 | [1] "basile is awesome" 194 | #+END_SRC 195 | 196 | #+BEGIN_SRC R 197 | myLiSt <- c(1, 30, 45.5) 198 | for (number in myList) { 199 | Print(number + 10) 200 | } 201 | [1] 11 202 | [1] 40 203 | [1] 55.5 204 | #+END_SRC 205 | 206 | *** The function 207 | 208 | functions are used to break down your code into separate, simple tasks 209 | 210 | #+BEGIN_SRC R 211 | sayHello <- function(name) { 212 | print(paste("hello", name, separator = " ")) 213 | } 214 | 215 | sayHello("Basile") 216 | [1] "hello Basile " 217 | 218 | sayHello("my name is Basile") 219 | [1] "hello my name is Basile " 220 | #+END_SRC 221 | 222 | ** Overview of programming languages 223 | 224 | - Architecture v scripting languages 225 | - Enterprise v the rest 226 | - Mobile v not mobile 227 | - Back end v front end 228 | - All-rounder v specialist languages 229 | - Databases v the rest 230 | 231 | *** Why choosing R? 232 | 233 | - Intellectual elegance of data manipulation 234 | - Comes built-in with loads of statistical tools 235 | - Layered, step-by-step approach to tasks 236 | - Grammar of Graphics 237 | 238 | We will learn simple, concise, repeatable tools in R that do not require much generic code around them to yield results. 239 | 240 | ** The tidyverse 241 | there are several ways to write R. an important one follows Hadley Wickham's philosophy and work at RStudio. 242 | 243 | it is called *[[https://www.tidyverse.org/packages/][the tidyverse]]* 244 | 245 | [[https://hackyhour.github.io/Goettingen/slides/tidy_slides.html#/][principles of tidy data]], a presentation (built in RStudio!) from Wickham's paper [[http://vita.had.co.nz/papers/tidy-data.pdf]["Tidy Data"]] 246 | 247 | *** A set of tools 248 | 249 | example: the pipe: ~%>%~ 250 | 251 | #+BEGIN_SRC R 252 | for (item in foo) { 253 | if (item > 2) { 254 | print(item) 255 | } 256 | } 257 | [1] 10 258 | } 259 | #+END_SRC 260 | 261 | #+BEGIN_SRC R 262 | foo <- c(1,2,10) 263 | foo %>% 264 | filter( > 2) 265 | #+END_SRC 266 | 267 | *** More on the pipe 268 | 269 | #+BEGIN_QUOTE 270 | The operators pipe their left-hand side values forward into expressions that appear on the right-hand side, i.e. one can replace f(x) with x %>% f(), where %>% is the (main) pipe-operator. 271 | #+END_QUOTE 272 | 273 | #+BEGIN_SRC R 274 | the_data <- 275 | read.csv('/path/to/data/file.csv') %>% 276 | subset(variable_a > x) %>% 277 | transform(variable_c = variable_a/variable_b) %>% 278 | head(100) 279 | #+END_SRC 280 | 281 | *** Excellent dplyr tutorial 282 | 283 | 284 | 285 | - `select()` 286 | - `filter()` 287 | - `%>%` 288 | - `mutate()` 289 | - `group_by()` 290 | 291 | *** Tidyverse into practice 292 | **** Importing data 293 | #+BEGIN_SRC R 294 | # install.packages('dplyr') 295 | # install.packages('readr') 296 | library(readr) 297 | library(dplyr) 298 | civcas <- read_csv("data/civcas.csv") 299 | #+END_SRC 300 | 301 | **** Civcas by country 302 | #+BEGIN_SRC R 303 | civcas %>% 304 | group_by(country) %>% 305 | summarise(count = sum(deads)) %>% 306 | arrange(desc(count)) 307 | 308 | country count 309 | 310 | 1 Iraq 9143 311 | 2 Syria 6041 312 | #+END_SRC 313 | 314 | *** Tidyverse into practice 2 315 | **** Civcas in each Mosul neighbourhood 316 | #+BEGIN_SRC R 317 | civcas %>% 318 | group_by(country, location) %>% 319 | filter(grepl("Mosul", location))%>% 320 | summarise(count = sum(deads)) %>% 321 | arrange(desc(count)) 322 | 323 | country location count 324 | 325 | 1 Iraq Mosul 560 326 | 2 Iraq Mosul: Old City 555 327 | 3 Iraq Mosul: West / Right side 410 328 | #+END_SRC 329 | 330 | **** Data summary 331 | #+BEGIN_SRC R 332 | civcas %>% 333 | group_by(country) %>% 334 | summarise(min = min(deads), 335 | max = max(deads), 336 | total = sum(deads)) 337 | 338 | country min max total 339 | 340 | 1 Iraq 0 560 9143 341 | 2 Syria 0 853 6041 342 | #+END_SRC 343 | 344 | **** Your turn 345 | 346 | - how many total events in Iraq, and in Syria? 347 | - average civcas per event in Iraq and in Syria? 348 | 349 | ** Reading list 350 | - [[http://genomicsclass.github.io/book/pages/dplyr_tutorial.html][dplyr tutorial]] 351 | - [[https://rpubs.com/aelhabr/tidyverse-basics][super helpful tidyverse cheatsheets]] 352 | - [[https://tidyverse-intro.github.io/index.html][everything you could want to know about the tidyverse in a handy tutorial]] 353 | - [[https://pandas.pydata.org/pandas-docs/stable/comparison_with_r.html][for Pythonistas: pandas v the tidyverse syntax]] 354 | - [[https://www.datacamp.com/courses/introduction-to-the-tidyverse][Datacamp tidyverse course]] 355 | - [[http://r4ds.had.co.nz/exploratory-data-analysis.html][exploratory data analysis]] 356 | 357 | -------------------------------------------------------------------------------- /week2-ggplot.org: -------------------------------------------------------------------------------- 1 | #+Title: JOM299 2 | #+Author: Basile Simon 3 | #+Email: basile.simon@city.ac.uk 4 | 5 | * week 2: air pollution in Euston road 6 | ** Introduction to ggplot 7 | 8 | ~ggplot~ is going to be our best friend for this module 9 | 10 | Great link to bookmark: [[https://ggplot2.tidyverse.org/][ggplot cheatsheet]] 11 | 12 | [[https://blog.gtwang.org/wp-content/uploads/2016/07/ggplot-grammar-of-graphics-stack-1.png]] 13 | 14 | ** Importing data 15 | 16 | "Importing" data means loading a file from your computer into your programming environment, then storing it in a ~variable~ to make it available to us. 17 | 18 | *** Where is our data? 19 | [[http://www.londonair.org.uk/london/asp/datasite.asp?CBXSpecies2=NO2m&day1=1&month1=jan&year1=2018&day2=1&month2=jun&year2=2018&period=hourly&ratidate=&site=CD9&res=6&Submit=Replot+graph][- london air]] 20 | [[https://opendata.camden.gov.uk/stories/s/Camden-Air-Quality-Monitoring/bmrm-k7pv/][- camden open data]] 21 | 22 | *** CSV files 23 | 24 | Our preferred data format. CSV is like an Excel spreadsheet, but just plain text: 25 | 26 | #+BEGIN_SRC R 27 | name,surname,occupation 28 | basile,simon,journalist 29 | mick,jagger,musician 30 | theresa,may,prime minister 31 | #+END_SRC 32 | 33 | R will recognise the structure above and understand that the commas represent columns. It will show the structure above as a table-like representation: 34 | 35 | | name | surname | occupation | 36 | | basile | simon | journalist | 37 | | mick | jagger | musician | 38 | | theresa | may | prime minister | 39 | 40 | *** using CSV in R 41 | We start by loading in the CSV file containing our data: 42 | 43 | #+BEGIN_SRC R 44 | library(readr) 45 | 46 | df <- read_csv("data/airpollutioneuston.csv") 47 | View(df) 48 | #+END_SRC 49 | ** Loading ggplot 50 | 51 | #+BEGIN_SRC R 52 | install.packages("ggplot2") 53 | install.packages("dplyr") 54 | library(ggplot2) 55 | library(dplyr) 56 | #+END_SRC 57 | 58 | ** WHO guideline: 40ug/m3 annual mean 59 | 60 | The WHO guideline for NO2 pollution is to stay under 40ug/m3 annually. 61 | 62 | Did this happen on Euston Road? We load ~dplyr~ to get some basic stats back from our dataset very quickly: 63 | 64 | #+BEGIN_SRC R 65 | library(dplyr) 66 | 67 | df %>% summary() 68 | 69 | #+END_SRC 70 | 71 | *** Calculating a mean 72 | 73 | We could also calculate our mean manually with ~summarise~ - [[https://www.rdocumentation.org/packages/dplyr/versions/0.7.8/topics/summarise][many handy functions we can use, actually]] 74 | 75 | #+BEGIN_SRC R 76 | df %>% summarise(annual_mean = mean(Value)) 77 | 78 | annual_mean 79 | 80 | 1 82.8 81 | 82 | # how many observations do we have? 83 | df %>% summarise(observations = n()) 84 | 85 | observations 86 | 87 | 1 365 88 | #+END_SRC 89 | 90 | ** Clean data a bit 91 | 92 | One issue with our dataset: ~ReadingDateTime~ column comes out as a string (see ~df %>% summary()~ showing ~character~ value). 93 | 94 | We will need to parse that as a date! 95 | 96 | *** Dates in programming 97 | 98 | Dates as odd creatures. We _parse_ strings and convert them into dates, but how does the computer know the format of the date? 99 | 100 | #+BEGIN_SRC 101 | 2018-01-02 102 | 2018/02/01 103 | #+END_SRC 104 | 105 | These dates could be identical or different depending on how we parse them. 106 | 107 | *** Date formats to the rescue 108 | 109 | [[https://www.statmethods.net/input/dates.html][Date format specifiers]] 110 | 111 | #+BEGIN_SRC 112 | 2018-01-02 parsed with %Y-%m-%d becomes 2nd Jan 2018 113 | 2018-01-02 parsed with %Y-%d-%m becomes 1st Feb 2018 114 | #+END_SRC 115 | 116 | *** Cleaning our air pollution data 117 | 118 | We'll use British standards in this case: 119 | 120 | #+BEGIN_SRC R 121 | df <- df %>% mutate(Date = as.Date(ReadingDateTime, 122 | format = "%d/%m/%Y")) %>% 123 | select(Date, Value) 124 | 125 | Date Value 126 | 127 | 1 2017-01-01 69.9 128 | 2 2017-01-02 57.5 129 | 3 2017-01-03 91.9 130 | 4 2017-01-04 67.9 131 | #+END_SRC 132 | 133 | ** Basic plot in ggplot 134 | 135 | #+BEGIN_SRC R 136 | # install.packages("ggplot2") 137 | library(ggplot2) 138 | 139 | ggplot(df, aes(x = Date, y = Value)) + 140 | geom_point() 141 | #+END_SRC 142 | 143 | [[./figures/airpollution.png]] 144 | 145 | *** What just happened? 146 | 147 | We just used [[http://ggplot2.org/resources/2007-vanderbilt.pdf][ggplot]], the leading R visualisation package, to create a scatterplot. Ggplot is a grammar, ie a chart is composed of several bricks: 148 | 149 | - a dataset, 150 | - geometries, 151 | - a coordinate system 152 | 153 | ** Colours, opacity, scales 154 | 155 | - ~alpha~ is opacity 156 | - colours are written in hex codes - [[https://academy.datawrapper.de/article/140-what-to-consider-when-choosing-colors-for-data-visualization][What to consider when choosing colours]] 157 | - ~geom_hline~ is a new geometry! We can also use ~geom_vline~ for a vertical line 158 | 159 | #+BEGIN_SRC R 160 | 161 | ggplot(df, aes(Date, Value), color='#254251') + 162 | geom_point(alpha = 0.5, color="#254251") + 163 | geom_hline(yintercept=40) + 164 | scale_y_continuous(breaks = c(40, 100, 150, 200, 250), 165 | labels = c(40, 100, 150, 200, 250)) 166 | #+END_SRC 167 | 168 | [[./figures/airpollution1.png]] 169 | 170 | *** Gratuitous styles 171 | 172 | #+BEGIN_SRC R 173 | library(scales) 174 | 175 | df$alpha <- rescale(df$Value, to=c(0,1)) 176 | 177 | ggplot(df, aes(Date, Value), color='#254251') + 178 | geom_point(alpha = df$alpha, color="#254251") + 179 | geom_hline(yintercept=40) + 180 | scale_y_continuous(breaks = c(40, 100, 150, 200, 250), 181 | labels = c(40, 100, 150, 200, 250)) 182 | #+END_SRC 183 | 184 | [[./figures/airpollution2.png]] 185 | 186 | ** Averages 187 | 188 | We want to calculate a 30-day rolling average. This is super wasy in R: we need ~rollmean~, from the ~zoo~ package. 189 | 190 | Syntax: 191 | 192 | #+BEGIN_SRC R 193 | rollmean(data$column, period) 194 | #+END_SRC 195 | 196 | #+BEGIN_SRC R 197 | #install.packages("zoo") 198 | library(zoo) 199 | 200 | df_mean <- df %>% 201 | mutate(mean = rollmean(Value, 30, fill = NA)) 202 | 203 | ggplot(df_mean, aes(Date, Value), color='#254251') + 204 | geom_hline(yintercept=40) + 205 | geom_point(alpha = df$alpha, color="#254251") + 206 | geom_line(aes(x = Date, y = mean)) + 207 | scale_y_continuous(breaks = c(40, 100, 150, 200, 250), 208 | labels = c(40, 100, 150, 200, 250)) 209 | #+END_SRC 210 | 211 | [[./figures/airpollution3.png]] 212 | 213 | ** All together 214 | 215 | We can also use pipes to avoid mutating our dataset as we go along, like so: 216 | 217 | #+BEGIN_SRC R 218 | dataframe %>% 219 | do something on it %>% 220 | like filtering, adding columns, etc %>% 221 | then send it to ggplot like so %>% 222 | ggplot() + 223 | add geometries, etc 224 | #+END_SRC 225 | 226 | 227 | #+BEGIN_SRC R 228 | df <- read_csv("data/airpollutioneuston.csv") 229 | df %>% filter(!is.na(Value)) %>% 230 | mutate(Date = as.Date(ReadingDateTime, 231 | format = "%d/%m/%Y"), 232 | mean = rollmean(Value, 30, fill = NA)) %>% 233 | select(Date, Value, mean) %>% 234 | ggplot() + 235 | geom_hline(yintercept = 40) + 236 | geom_point(aes(x = Date, y = Value, alpha = 0.5, color = "steelblue")) + 237 | geom_line(aes(x = Date, y = mean)) + 238 | scale_y_continuous(breaks = c(40, 100, 150, 200, 250), 239 | labels = c(40, 100, 150, 200, 250)) + 240 | ggtitle("Hourly NO2 concentration in Euston road") + 241 | xlab("Date") + ylab("NO2 concentration") + theme(legend.position="none") 242 | #+END_SRC 243 | 244 | [[./figures/airpollution4.png]] 245 | 246 | ** Reading list 247 | [[https://www.ted.com/talks/hans_rosling_shows_the_best_stats_you_ve_ever_seen]] 248 | 249 | [[http://datadrivenjournalism.net/resources/when_should_i_use_logarithmic_scales_in_my_charts_and_graphs]] 250 | 251 | [[https://www.datacamp.com/community/blog/the-easiest-way-to-learn-ggplot2#gs.QnUNY8Y]] 252 | -------------------------------------------------------------------------------- /week3-map.org: -------------------------------------------------------------------------------- 1 | #+Title: JOM299 2 | #+Author: Basile Simon 3 | #+Email: basile.simon@city.ac.uk 4 | 5 | * week 3: map of LGBTI index 6 | ** Getting data 7 | #+BEGIN_SRC R 8 | library(readr) 9 | library(tidyverse) 10 | library(dplyr) 11 | rainbow_index <- read_csv("data/exportmap.csv") %>% 12 | select(Country, Score) 13 | 14 | Country Score 15 | 16 | 1 Albania 33 17 | 2 Andorra 35 18 | 3 Armenia 7 19 | 4 Austria 56 20 | #+END_SRC 21 | 22 | ** What does our data look like? 23 | #+BEGIN_SRC R 24 | rainbow_index %>% summary() 25 | 26 | Country Score 27 | Length:53 Min. : 5.00 28 | Class :character 1st Qu.:21.00 29 | Mode :character Median :34.00 30 | Mean :39.29 31 | 3rd Qu.:56.75 32 | Max. :91.00 33 | NA's :5 34 | 35 | library(ggplot2) 36 | rainbow_index %>% ggplot(aes(Score)) + 37 | geom_histogram(binwidth = 3) 38 | #+END_SRC 39 | 40 | [[figures/lgbtmap.png]] 41 | 42 | ** A simple map of the world 43 | *** getMap 44 | 45 | Very simple solution to download and map country borders 46 | 47 | #+BEGIN_SRC R 48 | library(rworldmap) 49 | plot(getMap()) 50 | #+END_SRC 51 | 52 | [[figures/lgbtmap02.png]] 53 | 54 | *** getMap and ggplot 55 | 56 | ~getMap~ give us loads of informations about countries: their names, abbreviations, the continent they're on, their population and GDP estimates, etc. 57 | 58 | We use ~ggplot~ here to be able to compose our layers: ~getMap~ is our base map 59 | 60 | #+BEGIN_SRC R 61 | library(sf) 62 | worldMap <- getMap(resolution = "low") 63 | worldMap <- st_as_sf(worldMap) 64 | 65 | ggplot(worldMap) + geom_sf() 66 | #+END_SRC 67 | 68 | [[figures/lgbtmap01.png]] 69 | 70 | ** Merging our index score and the map data 71 | 72 | Our task is to find a way to merge our two datasets. We remember this helpful cheatsheet: 73 | 74 | [[https://camo.githubusercontent.com/c8c1f1bda76407340ae37fa210c38cac480016bb/68747470733a2f2f6d696b6f6f6e747a2e6769746875622e696f2f646174612d63617270656e7472792d7765656b2f696d672f64706c79722d6a6f696e732e706e67]] 75 | 76 | *** Finding the common property 77 | 78 | And it seems that the ~SOVEREIGNT~ column of our map contains full country names: 79 | 80 | #+BEGIN_SRC R 81 | library(sf) 82 | worldMap <- getMap(resolution = "high") 83 | worldMap$SOVEREIGNT %>% head() 84 | 85 | [1] Netherlands Afghanistan Angola United Kingdom Albania Finland 86 | 204 Levels: Afghanistan Albania Algeria Andorra Angola Antarctica ... Zimbabwe 87 | #+END_SRC 88 | 89 | *** Final merge 90 | 91 | We can merge with our ~rainbow_index$Country~. 92 | 93 | #+BEGIN_SRC R 94 | # get the map again!!! 95 | worldMap <- getMap(resolution = "low") 96 | worldMap@data <- left_join(worldMap@data, rainbow_index, 97 | by = c("SOVEREIGNT" = "Country")) 98 | worldMap <- st_as_sf(worldMap) 99 | #+END_SRC 100 | 101 | ** Basics of mapping 102 | *** Simple map 103 | 104 | Technically, this is a map of our data... 105 | 106 | #+BEGIN_SRC R 107 | worldMap %>% 108 | ggplot() + 109 | geom_sf(aes(fill = Score)) 110 | #+END_SRC 111 | 112 | [[figures/lgbtmap03.png]] 113 | 114 | *** Let's zoom in 115 | 116 | We zoom in by specifying latitude and longitude minimum and maximums to ~coord_sf~ 117 | 118 | [[http://www.isobudgets.com/wp-content/uploads/2014/03/latitude-longitude.jpg]] 119 | 120 | *** Let's zoom in 121 | 122 | #+BEGIN_SRC R 123 | worldMap %>% 124 | ggplot() + 125 | geom_sf(aes(fill = Score)) + 126 | coord_sf(xlim = c(-10, 50), ylim = c(30, 75), expand = FALSE) 127 | #+END_SRC 128 | 129 | [[figures/lgbtmap04.png]] 130 | 131 | *** Filter missing data 132 | 133 | #+BEGIN_SRC R 134 | worldMap %>% filter(!is.na(Score)) %>% 135 | ggplot() + 136 | geom_sf(aes(fill = Score)) + 137 | coord_sf(xlim = c(-10, 50), ylim = c(30, 75), expand = FALSE) 138 | #+END_SRC 139 | 140 | [[figures/lgbtmap05.png]] 141 | 142 | ** Better colours 143 | [[https://blog.datawrapper.de/colorguide/][Excellent Datawrapper guide on colours]] 144 | 145 | One important tool among other is [[http://colorbrewer2.org/][ColorBrewer]]. 146 | 147 | From there we can grab colours we like and feed them like so: 148 | 149 | #+BEGIN_SRC R 150 | scale_fill_gradient(low, high) 151 | #+END_SRC 152 | 153 | *** In action 154 | 155 | #+BEGIN_SRC R 156 | library(RColorBrewer) 157 | worldMap %>% filter(!is.na(Score)) %>% 158 | ggplot() + 159 | geom_sf(aes(fill = Score, 160 | colour = I("gray80")), size = 1/100) + 161 | coord_sf(xlim = c(-10, 50), ylim = c(30, 75), expand = FALSE) + 162 | scale_fill_gradient(low = I("#d7191c"), high = I("#1a9641")) + 163 | theme_minimal() 164 | #+END_SRC 165 | 166 | [[figures/lgbtmap06.png]] 167 | 168 | ** Er, actual better colours 169 | #+BEGIN_SRC R 170 | theme_opts<-list(theme(panel.grid.minor = element_blank(), 171 | panel.grid.major = element_line(colour = "transparent"), 172 | panel.background = element_blank(), 173 | plot.background = element_blank(), 174 | axis.line = element_blank(), 175 | axis.text.x = element_blank(), 176 | axis.text.y = element_blank(), 177 | axis.ticks = element_blank(), 178 | axis.title.x = element_blank(), 179 | axis.title.y = element_blank(), 180 | legend.position = "right")) 181 | #+END_SRC 182 | 183 | ** Bis 184 | #+BEGIN_SRC R 185 | worldMap %>% filter(!is.na(Score)) %>% 186 | ggplot() + 187 | geom_sf(aes(fill = Score, colour = I("gray80")), size = 1/100) + 188 | coord_sf(xlim = c(-10, 50), ylim = c(30, 75), expand = FALSE) + 189 | scale_fill_distiller(type = "div", palette = "RdYlGn", direction = 1) + 190 | theme_minimal() + theme_opts + 191 | ggtitle("LGBT rights in eastern and western Europe") 192 | #+END_SRC 193 | 194 | [[figures/lgbtmap07.png]] 195 | -------------------------------------------------------------------------------- /week4-ge2019.org: -------------------------------------------------------------------------------- 1 | #+Title: JOM299 2 | #+Author: Basile Simon 3 | #+Email: basile.simon@city.ac.uk 4 | 5 | * wrangling general election 2019 data 6 | ** Where do we find our data 7 | 8 | Good way to find data very cheekily: open the DevTools on colleagues' pieces! 9 | 10 | [[https://graphics.thomsonreuters.com/british-election-2019/full-results/][Reuters GE2019 results]] 11 | 12 | [[figures/devtools.png]] 13 | 14 | In this instance, we're able to pick up all the map shapefiles and the data loaded by the page. 15 | 16 | *** Importing into R 17 | ~jsonlite~ is a library that helps us work with JSON data. ~curl~ is a very popular utility to fetch data from the internet. 18 | 19 | #+BEGIN_SRC R 20 | install.packages("jsonlite") 21 | install.packages('curl') 22 | 23 | library(jsonlite) 24 | df <- fromJSON("https://graphics.thomsonreuters.com/ge2019/results/all_results.json") 25 | #+END_SRC 26 | 27 | #+BEGIN_SRC R 28 | > head(df) 29 | constituencyName constituencyID winningParty sittingParty gainOrHold 30 | 1 Aberavon W07000049 Lab Lab hold 31 | 2 Aberconwy W07000058 C Ind gain 32 | 3 Aberdeen North S14000001 SNP SNP hold 33 | 4 Aberdeen South S14000002 SNP C gain 34 | #+END_SRC 35 | ** Simple questions about the results 36 | 37 | Now that we've stored our data in ~df~, can we quickly get out: 38 | 39 | - the average electorate across all constituencies? 40 | - the median turnout (in percent)? 41 | - the average majority (in percent)? 42 | 43 | Hint: it's all in ~summary~. 44 | ** Distributions at a glance 45 | *** A quick word about distributions 46 | - Left/right skew v "normal" distribution 47 | - Too small a sample size 48 | - Multiple modes 49 | - Outliers and what they can mean about your data 50 | 51 | Read more: [[https://support.minitab.com/en-us/minitab-express/1/help-and-how-to/graphs/histogram/interpret-the-results/key-results/][Minitab.com]] 52 | 53 | *** Turnout and majority 54 | We can take a quick look at the turnout and majority in each constituency by looking at the distribution of our data. This adds a little bit of depth to our analysis and helps us understand how different places voted. 55 | 56 | #+BEGIN_SRC R 57 | df %>% 58 | ggplot() + 59 | geom_density(aes(percentageTurnout, 60 | fill = I("red"))) + 61 | geom_density(aes(percentageMajority, 62 | fill = I("orange"))) + 63 | geom_text(aes(x = 20, 64 | y = 0.01, 65 | label = "Turnout (%)")) + 66 | geom_text(aes(x = 68, 67 | y = 0.015, 68 | label = "Majority (%)")) + 69 | theme_minimal() 70 | #+END_SRC 71 | 72 | 73 | [[figures/simpledistributions.png]] 74 | 75 | *** Changes in turnout and majority 76 | #+BEGIN_SRC R 77 | df %>% 78 | ggplot() + 79 | geom_density(aes(percentageChangeTurnout, fill = I("red"))) + 80 | geom_density(aes(percentageChangeMajority, fill = I("orange"))) + 81 | geom_text(aes(x = 13, 82 | y = 0.15, 83 | label = "← Change turnout (%)")) + 84 | geom_text(aes(x = 0, 85 | y = 0.01, 86 | label = "Majority change (%)")) + 87 | theme_minimal() 88 | #+END_SRC 89 | 90 | [[figures/changeturnoutandmajority]] 91 | ** Winners and losers 92 | How many seats were lost, and how many seats held (i.e. were kept by the incumbent party)? 93 | 94 | #+BEGIN_SRC R 95 | df %>% 96 | group_by(gainOrHold) %>% 97 | summarise(total = n()) 98 | #+END_SRC 99 | 100 | or this shorthand: [[https://dplyr.tidyverse.org/reference/tally.html][tally()]] : 101 | 102 | #+BEGIN_SRC R 103 | df %>% 104 | group_by(gainOrHold) %>% 105 | tally() 106 | #+END_SRC 107 | 108 | Now can we break up these numbers between Labour and Conservative? Yes, if we add the party name to the _group_ we set up. 109 | 110 | Note the ~%in%~, which essentally applies a filter based on several test conditions. 111 | 112 | #+BEGIN_SRC R 113 | df %>% 114 | filter(winningParty %in% c("Lab", "C")) %>% 115 | group_by(winningParty, gainOrHold) %>% 116 | tally() 117 | #+END_SRC 118 | 119 | ** Wins by party 120 | How could we write a column chart with one column per political party that would show seats won on top of seats held? 121 | 122 | Hint: 123 | - Calculate the number of won seats by party (we've done this above) 124 | - Use this number with ~geom_bar()~ 125 | 126 | *** Another way to look at wins 127 | Could we compare majority and turnout with a scatterplot across parties? 128 | 129 | Hint: 130 | - We can compare parties against each other with ~facet_wrap()~ 131 | - We probably only want to compare parties that won a certain number of seats... which means calculating the parties' number of seats and ~filter()~ out small parties 132 | ** Let's bring in the Census 133 | 134 | The latest census in the UK was carried out in 2011 and is now available [[https://www.ons.gov.uk/census/2011census][from the ONS]]. It is carried out every ten years and the 2021 should start soon (?). 135 | 136 | We could go and download the whole lot but then we'd run into the issue of matching it against Westminster constituencies. 137 | 138 | Fortunately, we can use [[https://github.com/evanodell/parlitools][parlitools]], which contains census data matched to our constituencies. 139 | 140 | #+BEGIN_SRC R 141 | install.packages("sf") 142 | install.packages("parlitools") 143 | library(parlitools) 144 | 145 | census <- parlitools::census_11 146 | View(census) 147 | #+END_SRC 148 | 149 | *** Combine with our election data 150 | 151 | #+BEGIN_SRC R 152 | join <- left_join(df, census, by = c("constituencyID" = "ons_const_id")) 153 | #+END_SRC 154 | 155 | Let's also try a few things with different joins, e.g.: 156 | - ~full_join~ 157 | - ~anti_join~ 158 | 159 | *** Let's be creative! 160 | 161 | [[https://docs.evanodell.com/parlitools/articles/census-11.html][Full list of variables available in our census data]] 162 | 163 | For example, how did Conservative and Labour fare in constituencies containing fewer deprived households? 164 | 165 | #+BEGIN_SRC R 166 | join %>% 167 | filter(winningParty %in% c("Lab", "C")) %>% 168 | ggplot(aes(x = percentageMajority, 169 | y = deprived_none)) + 170 | geom_point() + 171 | geom_smooth(method = "lm") + 172 | facet_wrap(~winningParty) 173 | #+END_SRC 174 | 175 | 176 | 177 | -------------------------------------------------------------------------------- /week5-scraping-crime.org: -------------------------------------------------------------------------------- 1 | #+Title: JOM299 2 | #+Author: Basile Simon 3 | #+Email: basile.simon@city.ac.uk 4 | 5 | 6 | * scraping police data 7 | ** Where do we find our data 8 | 9 | In the UK, [[https://data.police.uk/][Police.uk]] distributes crime and outcome data as Open Government Licence. 10 | 11 | The website provides both: 12 | - A bulk download (download big data files containing all the data) 13 | - An open API to create more precise queries ahead of download 14 | 15 | *** What is an API 16 | 17 | #+BEGIN_QUOTE 18 | An API is a way to serve your customers 19 | #+END_QUOTE 20 | [[https://medium.freecodecamp.org/what-is-an-api-in-english-please-b880a3214a82][Source]] 21 | 22 | Example: 23 | 24 | You search a map area for AirBnB available at a particular date. AirBnB servers return to your web browser some relevant data after receiving your question and computing the answer; 25 | 26 | Insofar as programming and data journalism are concerned, we're interested in APIs as they represent documented and open way to query a dataset. 27 | 28 | *** The Police.UK API 29 | [[https://data.police.uk/docs/method/crime-street/][The API documentation]] 30 | 31 | Reading and understanding an API's documentation is paramount: this is the language we'll need to speak if we want the correct data sent back to us. 32 | 33 | ** Getting data from an API 34 | 35 | Quite often for us, we will need to perform a ~GET~ request to a server: 36 | 37 | [[https://book.varnish-software.com/3.0/_images/httprequestflow.png]] 38 | 39 | Our work with an API is to construct a URL that makes sense. 40 | URLs are structured this way: 41 | 42 | #+BEGIN_SRC html 43 | https://this-is-a-url.com/ 44 | #+END_SRC 45 | 46 | APIs usually live at an ~endpoint~: 47 | 48 | #+BEGIN_SRC html 49 | https://this-is-a-url.com/endpoint 50 | #+END_SRC 51 | 52 | And they require parameters: 53 | 54 | #+BEGIN_SRC html 55 | https://this-is-a-url.com/endpoint?parameter=1337 56 | #+END_SRC 57 | 58 | *** Test request in R 59 | We will perform a GET request of all crime around Northampton Square in November 2018. 60 | 61 | [[https://data.police.uk/docs/method/crime-street/][From the API documentation...]] 62 | 63 | #+BEGIN_SRC html 64 | This is the URL 65 | https://data.police.uk/api/crimes-street 66 | 67 | This is the endpoint 68 | /all-crime? 69 | 70 | These are the parameters 71 | lat= 72 | lon= 73 | date= 74 | #+END_SRC 75 | 76 | #+BEGIN_SRC R 77 | url <- "https://data.police.uk/api/crimes-street/all-crime?lat=51.527317&lng=-0.102433&date=2018-11" 78 | #+END_SRC 79 | 80 | *** Test request in R 81 | 82 | This API returns data in another format: JSON this is very common on the web. JSON looks like this: 83 | 84 | #+BEGIN_SRC js 85 | {"category":"anti-social-behaviour", 86 | "location_type":"Force", 87 | "location":{ 88 | "latitude":"51.529697", 89 | "street":{ 90 | "id":960985, 91 | "name":"On or near Conference\/exhibition Centre" 92 | }, 93 | "longitude":"-0.118592" 94 | }, 95 | "context":"", 96 | "outcome_status":null, 97 | "persistent_id":"", 98 | "id":69909158, 99 | "location_subtype":"", 100 | "month":"2018-11"} 101 | #+END_SRC 102 | 103 | We will need to convert this format into something R prefers: 104 | 105 | #+BEGIN_SRC R 106 | library(httr) 107 | library(jsonlite) 108 | 109 | url <- "https://data.police.uk/api/crimes-street/all-crime?lat=51.527317&lng=-0.102433&date=2018-11" 110 | request <- GET(url) 111 | jsonRespText <- content(request, as="text") 112 | df <- fromJSON(jsonRespText, flatten = TRUE) 113 | #+END_SRC 114 | 115 | *** Quick analysis 116 | How many crime of each type, sorted descending 117 | 118 | #+BEGIN_SRC R 119 | df %>% group_by(category) %>% 120 | summarise(count = n()) %>% 121 | arrange(desc(count)) 122 | 123 | # A tibble: 14 x 2 124 | category count 125 | 126 | 1 other-theft 554 127 | 2 anti-social-behaviour 394 128 | 3 violent-crime 347 129 | 4 theft-from-the-person 257 130 | 5 vehicle-crime 158 131 | 6 public-order 135 132 | 7 shoplifting 112 133 | 8 burglary 107 134 | #+END_SRC 135 | 136 | #+BEGIN_SRC R 137 | df %>% group_by(category) %>% 138 | summarise(count = n()) %>% 139 | arrange(desc(count)) %>% 140 | ggplot() + 141 | geom_bar(aes(x = reorder(category, -count), 142 | y = count), stat = "identity") + 143 | theme_minimal() + 144 | theme(axis.text.x = element_text(angle = 45, hjust = 1)) 145 | #+END_SRC 146 | 147 | [[figures/crime.png]] 148 | 149 | #+BEGIN_SRC R 150 | df %>% group_by(location.street.name) %>% 151 | summarise(count = n()) %>% 152 | arrange(desc(count)) %>% head(10) %>% 153 | ggplot() + 154 | geom_bar(aes(x = reorder(location.street.name, -count), 155 | y = count), stat = "identity") + 156 | theme_minimal() + 157 | theme(axis.text.x = element_text(angle = 45, hjust = 1)) 158 | #+END_SRC 159 | 160 | [[figures/crime01.png]] 161 | 162 | ** Querying several months of data 163 | 164 | So this was one month of data (November 2018) what if we want more? 165 | 166 | A programming pattern you will see regularly is the following: 167 | 168 | - We create an empty thing/variable: our final dataset, empty for now 169 | - We have a list of things we need to do some work on 170 | - We iterate over each item in this list, build a temporary store 171 | - Then for each iteration we append the temporary store to our main dataset 172 | 173 | When we're finished running over each element in our main list, we end up with a complete main dataset! 174 | 175 | **** For loop 176 | 177 | The tool for the job is the for loop: 178 | 179 | #+BEGIN_SRC R 180 | vector <- c('one', 'two', 'basile') 181 | for (variable in vector) { 182 | print(variable) 183 | } 184 | 185 | [1] "one" 186 | [1] "two" 187 | [1] "basile" 188 | #+END_SRC 189 | 190 | **** Appending to an empty list 191 | 192 | Conceptually, we'll do this: 193 | 194 | #+BEGIN_SRC 195 | # our main dataset 196 | records <- data.frame() 197 | list_of_months <- c("2018-10", "2018-11") 198 | 199 | for (month in list_of_months) { 200 | # do get request 201 | 202 | # our temporary date store with all the right columns 203 | df <- get_request 204 | 205 | # send our temporary data store back up 206 | # to populate our main dataset 207 | records <- bind_rows(records, df) 208 | } 209 | #+END_SRC 210 | 211 | **** Putting it together 212 | 213 | #+BEGIN_SRC R 214 | library(stringr) 215 | library(httr) 216 | library(jsonlite) 217 | library(dplyr) 218 | 219 | records <- data.frame() 220 | 221 | list_of_months <- c("2018-09", "2018-10", "2018-11") 222 | 223 | for (month in list_of_months) { 224 | 225 | # url without the month 226 | url <- "https://data.police.uk/api/crimes-street/all-crime?lat=51.527317&lng=-0.102433&date=" 227 | 228 | # we paste the month at the end of the URL 229 | resp <- GET(str_c(url, month)) 230 | 231 | # then as normal 232 | jsonRespText<-content(resp,as="text") 233 | jsonRespParsed<-content(resp,as="parsed") 234 | j <- fromJSON(jsonRespText, flatten = TRUE) 235 | records <- bind_rows(records, j) 236 | } 237 | #+END_SRC 238 | 239 | ** Crime type analysis by month around university 240 | **** Simple tally 241 | #+BEGIN_SRC R 242 | records %>% group_by(category) %>% 243 | summarise(count = n()) %>% 244 | arrange(desc(count)) %>% head(10) %>% 245 | ggplot() + 246 | geom_bar(aes(x = reorder(category, -count), 247 | y = count), stat = "identity") + 248 | theme_minimal() + 249 | theme(axis.text.x = element_text(angle = 45, hjust = 1)) 250 | #+END_SRC 251 | 252 | [[figures/crime02.png]] 253 | 254 | **** Simple locations 255 | #+BEGIN_SRC R 256 | records %>% group_by(location.street.name) %>% 257 | summarise(count = n()) %>% 258 | arrange(desc(count)) %>% head(10) %>% 259 | ggplot() + 260 | geom_bar(aes(x = reorder(location.street.name, -count), 261 | y = count), stat = "identity") + 262 | theme_minimal() + 263 | theme(axis.text.x = element_text(angle = 45, hjust = 1)) 264 | #+END_SRC 265 | 266 | [[figures/crime03.png]] 267 | 268 | **** Crime type by month 269 | #+BEGIN_SRC R 270 | records %>% group_by(category, month) %>% 271 | mutate(count = n()) %>% 272 | select(month, count, category) %>% 273 | ggplot() + 274 | geom_bar(aes(x = reorder(category, -count), 275 | y = count), stat = "identity") + 276 | facet_wrap(month~.) + 277 | theme_minimal() + 278 | theme(axis.text.x = element_text(angle = 45, hjust = 1)) 279 | #+END_SRC 280 | 281 | [[figures/crime04.png]] 282 | 283 | **** Crime type by month, cont 284 | #+BEGIN_SRC R 285 | records %>% group_by(category, month) %>% 286 | mutate(count = n()) %>% distinct(month, count, category) %>% 287 | select(month, count, category) %>% 288 | ggplot(aes(x = month, 289 | y = count, group = 1)) + 290 | geom_path(, colour="black") + 291 | facet_wrap(category~.) + 292 | theme_minimal() + 293 | theme(axis.text.x = element_text(angle = 45, hjust = 1)) 294 | #+END_SRC 295 | 296 | [[figures/crime05.png]] 297 | 298 | **** Crime type change by month 299 | #+BEGIN_SRC R 300 | records %>% group_by(category, month) %>% 301 | summarise(count = n()) %>% 302 | mutate(change = (count - lag(count))/lag(count) * 100) %>% 303 | distinct(month, category, change) %>% 304 | ggplot(aes(x = month, y = category, fill = change)) + 305 | geom_tile(colour="white",size=0.25) + 306 | scale_fill_viridis_c(option = "B", name = "Number of crimes") + 307 | theme(axis.text.x = element_text(angle = 45, hjust = 1)) 308 | 309 | #+END_SRC 310 | 311 | [[figures/crime10.png]] 312 | 313 | ** Part two: Making some maps 314 | ** Bulk download of data 315 | 316 | Aside from the API, we can [[https://data.police.uk/data/][download bulk data]] 317 | 318 | #+BEGIN_SRC R 319 | library(readr) 320 | df <- read_csv("data/2018-11-metropolitan-street.csv") 321 | #+END_SRC 322 | 323 | ** Simple map 324 | 325 | #+BEGIN_SRC R 326 | library(ggplot2) 327 | df %>% 328 | ggplot() + 329 | geom_point(aes(x = Longitude, y = Latitude, alpha = 1/100), 330 | size = 1/100, color = I("tomato")) + 331 | coord_map(xlim = c(-0.6,0.4), ylim = c(51.25, 51.75)) 332 | #+END_SRC 333 | 334 | [[figures/crime06.png]] 335 | 336 | *** Adding London boroughs 337 | 338 | #+BEGIN_SRC R 339 | library("londonShapefiles") 340 | 341 | thames <- load_thames() 342 | thames.proj <- spTransform(thames, CRS("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")) 343 | thames.df <- fortify(thames.proj) 344 | 345 | boroughs <- load_la() 346 | boroughs.proj <- spTransform(boroughs, CRS("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")) 347 | boroughs.df <- fortify(boroughs.proj) 348 | 349 | ggplot() + 350 | geom_polygon(boroughs.df, mapping=aes(long, lat, group = group, 351 | color = I("gray90"))) + 352 | geom_polygon(thames.df, mapping=aes(long, lat, group = group, 353 | fill = I("skyblue"), 354 | color = I("skyblue2"))) + 355 | coord_map(xlim = c(-0.6,0.4), ylim = c(51.25, 51.75)) 356 | #+END_SRC 357 | 358 | [[figures/crime07.png]] 359 | 360 | *** Both together 361 | 362 | #+BEGIN_SRC R 363 | idf %>% 364 | ggplot() + 365 | geom_polygon(boroughs.df, mapping=aes(long, lat, group = group, 366 | color = I("gray99"), 367 | fill = I("gray90"))) + 368 | geom_polygon(thames.df, mapping=aes(long, lat, group = group, 369 | fill = I("skyblue"), 370 | color = I("skyblue2"))) + 371 | geom_point(aes(x = Longitude, y = Latitude), 372 | size = 1/100, color = I("tomato"), alpha = 1/100) + 373 | coord_map(xlim = c(-0.6,0.4), ylim = c(51.25, 51.75)) + 374 | theme_minimal() + 375 | theme(legend.position = "none") 376 | #+END_SRC 377 | 378 | [[figures/crime08.png]] 379 | 380 | ** Obscure spatial analysis 381 | 382 | As we've got many, may points (91,833 crimes), we can use ~geom_bin2d~ to provide an alternative to overplotting 383 | 384 | #+BEGIN_QUOTE 385 | Divides the plane into rectangles, counts the number of cases in each rectangle, and then (by default) maps the number of cases to the rectangle's fill. This is a useful alternative to geom_point() in the presence of overplotting. 386 | #+END_QUOTE 387 | 388 | #+BEGIN_SRC R 389 | df %>% 390 | ggplot(mapping=aes(x = as.numeric(Longitude), 391 | y = as.numeric(Latitude))) + 392 | geom_polygon(boroughs.df, mapping=aes(long, lat, group = group, 393 | color = I("gray60"), alpha = 0.1)) + 394 | geom_bin2d(bins = 1000, aes(alpha=..ncount..)) + 395 | scale_alpha(range = c(0.3, 1)) + 396 | coord_map(xlim = c(-0.6,0.4), ylim = c(51.25, 51.75)) + 397 | theme_minimal() 398 | #+END_SRC 399 | 400 | [[figures/crime09.png]] 401 | 402 | ** TODO Part three: Advanced scraping of Tube stations 403 | [[https://r-tastic.co.uk/post/exploring-london-crime-with-r-heat-maps/][Original tutorial]] 404 | -------------------------------------------------------------------------------- /week7-web-scraping.org: -------------------------------------------------------------------------------- 1 | * scraping Trump lies 2 | ** Additional links and sources 3 | 4 | - [[http://www.dataschool.io/python-web-scraping-of-president-trumps-lies/][Original tutorial]] 5 | - [[https://towardsdatascience.com/web-scraping-tutorial-in-r-5e71fd107f32][Fork in R]] 6 | ** Where to find our database of lies 7 | 8 | We'll use [[https://www.nytimes.com/interactive/2017/06/23/opinion/trumps-lies.html][this opinion piece]] from the New York Times (last updated more than a year ago, sadly). 9 | 10 | [[figures/screenshot.png]] 11 | 12 | Several data points in this piece: 13 | 14 | - The article is a (long) list, 15 | - Each list item is a lie, 16 | - Each lie is made of a date, of a statement, of an explanation of why this statement is untrue, and a supporting link 17 | 18 | ** Scraping in R 19 | 20 | Scraping is downloading data from a webpage, as much as it is creating structure out of this data. 21 | 22 | Conceptually we will want to achive something like this: 23 | 24 | | date | statement | counter statement | supporting link | 25 | | Jan 21 | I didn't want to go into Iraq | He was for an invastion | https://something | 26 | 27 | ** Setting up tooling in R 28 | 29 | We'll use the ~rvest~ package: 30 | 31 | #+BEGIN_SRC R 32 | library(rvest) 33 | page <- read_html("https://www.nytimes.com/interactive/2017/06/23/opinion/trumps-lies.html") 34 | page 35 | 36 | {xml_document} 37 | 38 | [1] \n\n