Skip to content

Instantly share code, notes, and snippets.

@nbremer nbremer/README.md

Last active Dec 22, 2018
Embed
What would you like to do?
Zoomable Circle Packing with Canvas & D3.js - II

This is the fourth step of my first attempt to learn canvas. I want to improve a piece a made a few weeks ago about the division of occupations. The D3.js version has so many DOM elements due to all the small bar charts that it is very slow. Therefore, I hope that a canvas version might improve things

Thanks to a version of the circle packing that does away with the D3.js data binding made by Stephan Smola I was able to make a few adjustments to make the zooming more linear from point A to B. Next step, add the bar charts...

I wrote a more extensive tutorial around what I learned while doing this project in my blog Learnings from a D3.js addict on starting with Canvas in which this can be seen as step 4. See the previous, more jittery zoomable version here in which the code is still more base on d3.js

And if you want to see the final result, with everything up and running in canvas look here

<!DOCTYPE html>
<head>
<meta charset="utf-8">
<!-- D3.js -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.6/d3.min.js" charset="utf-8"></script>
<script src="http://d3js.org/queue.v1.min.js"></script>
<!-- stats -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/stats.js/r14/Stats.js"></script>
<!-- jQuery -->
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<!-- Stylesheet -->
<style>
body { text-align: center; }
</style>
</head>
<body>
<div id="chart"></div>
<script>
queue()
.defer(d3.json, "occupation.json")
.await(drawAll);
function drawAll(error, dataset) {
//////////////////////////////////////////////////////////////
////////////////// Create Set-up variables //////////////////
//////////////////////////////////////////////////////////////
var width = Math.max($("#chart").width(),350) - 20,
height = (window.innerWidth < 768 ? width : window.innerHeight - 20);
var mobileSize = (window.innerWidth < 768 ? true : false);
var centerX = width/2,
centerY = height/2;
//////////////////////////////////////////////////////////////
/////////////////////// Create SVG ///////////////////////
//////////////////////////////////////////////////////////////
//Create the visible canvas and context
var canvas = d3.select("#chart").append("canvas")
.attr("id", "canvas")
.attr("width", width)
.attr("height", height);
var context = canvas.node().getContext("2d");
context.clearRect(0, 0, width, height);
//Create a hidden canvas in which each circle will have a different color
//We can use this to capture the clicked on circle
var hiddenCanvas = d3.select("#chart").append("canvas")
.attr("id", "hiddenCanvas")
.attr("width", width)
.attr("height", height)
.style("display","none");
var hiddenContext = hiddenCanvas.node().getContext("2d");
hiddenContext.clearRect(0, 0, width, height);
//Create a custom element, that will not be attached to the DOM, to which we can bind the data
var detachedContainer = document.createElement("custom");
var dataContainer = d3.select(detachedContainer);
//////////////////////////////////////////////////////////////
/////////////////////// Create Scales ///////////////////////
//////////////////////////////////////////////////////////////
var colorCircle = d3.scale.ordinal()
.domain([0,1,2,3])
.range(['#bfbfbf','#838383','#4c4c4c','#1c1c1c']);
var diameter = Math.min(width*0.9, height*0.9),
radius = diameter / 2;
var zoomInfo = {
centerX: width / 2,
centerY: height / 2,
scale: 1
};
//Dataset to swtich between color of a circle (in the hidden canvas) and the node data
var colToCircle = {};
var pack = d3.layout.pack()
.padding(1)
.size([diameter, diameter])
.value(function(d) { return d.size; })
.sort(function(d) { return d.ID; });
//////////////////////////////////////////////////////////////
////////////////// Create Circle Packing /////////////////////
//////////////////////////////////////////////////////////////
var nodes = pack.nodes(dataset),
root = dataset,
focus = root;
//////////////////////////////////////////////////////////////
///////////////// Canvas draw function ///////////////////////
//////////////////////////////////////////////////////////////
var cWidth = canvas.attr("width");
var cHeight = canvas.attr("height");
var nodeCount = nodes.length;
//The draw function of the canvas that gets called on each frame
function drawCanvas(chosenContext, hidden) {
//Clear canvas
chosenContext.fillStyle = "#fff";
chosenContext.rect(0,0,cWidth,cHeight);
chosenContext.fill();
//Select our dummy nodes and draw the data to canvas.
var node = null;
// It's slightly faster than nodes.forEach()
for (var i = 0; i < nodeCount; i++) {
node = nodes[i];
//If the hidden canvas was send into this function and it does not yet have a color, generate a unique one
if(hidden) {
if(node.color == null) {
// If we have never drawn the node to the hidden canvas get a new color for it and put it in the dictionary.
node.color = genColor();
colToCircle[node.color] = node;
}//if
// On the hidden canvas each rectangle gets a unique color.
chosenContext.fillStyle = node.color;
} else {
chosenContext.fillStyle = node.children ? colorCircle(node.depth) : "white";
}//else
//Draw each circle
chosenContext.beginPath();
chosenContext.arc(((node.x - zoomInfo.centerX) * zoomInfo.scale) + centerX,
((node.y - zoomInfo.centerY) * zoomInfo.scale) + centerY,
node.r * zoomInfo.scale, 0, 2 * Math.PI, true);
chosenContext.fill();
}//for i
}//function drawCanvas
//////////////////////////////////////////////////////////////
/////////////////// Click functionality //////////////////////
//////////////////////////////////////////////////////////////
// Listen for clicks on the main canvas
document.getElementById("canvas").addEventListener("click", function(e){
// We actually only need to draw the hidden canvas when there is an interaction.
// This sketch can draw it on each loop, but that is only for demonstration.
drawCanvas(hiddenContext, true);
//Figure out where the mouse click occurred.
var mouseX = e.layerX;
var mouseY = e.layerY;
// Get the corresponding pixel color on the hidden canvas and look up the node in our map.
// This will return that pixel's color
var col = hiddenContext.getImageData(mouseX, mouseY, 1, 1).data;
//Our map uses these rgb strings as keys to nodes.
var colString = "rgb(" + col[0] + "," + col[1] + ","+ col[2] + ")";
var node = colToCircle[colString];
if(node) {
if (focus !== node) zoomToCanvas(node); else zoomToCanvas(root);
}//if
});
//////////////////////////////////////////////////////////////
///////////////////// Zoom Function //////////////////////////
//////////////////////////////////////////////////////////////
//Based on the generous help by Stephan Smola
//http://bl.ocks.org/smoli/d7e4f9199c15d71258b5
var ease = d3.ease("cubic-in-out"),
duration = 2000,
timeElapsed = 0,
interpolator = null,
vOld = [focus.x, focus.y, focus.r * 2.05];
//Create the interpolation function between current view and the clicked on node
function zoomToCanvas(focusNode) {
focus = focusNode;
var v = [focus.x, focus.y, focus.r * 2.05]; //The center and width of the new "viewport"
interpolator = d3.interpolateZoom(vOld, v); //Create interpolation between current and new "viewport"
duration = interpolator.duration; //Interpolation gives back a suggested duration
timeElapsed = 0; //Set the time elapsed for the interpolateZoom function to 0
vOld = v; //Save the "viewport" of the next state as the next "old" state
}//function zoomToCanvas
//Perform the interpolation and continuously change the zoomInfo while the "transition" occurs
function interpolateZoom(dt) {
if (interpolator) {
timeElapsed += dt;
var t = ease(timeElapsed / duration);
zoomInfo.centerX = interpolator(t)[0];
zoomInfo.centerY = interpolator(t)[1];
zoomInfo.scale = diameter / interpolator(t)[2];
if (timeElapsed >= duration) interpolator = null;
}//if
}//function zoomToCanvas
//////////////////////////////////////////////////////////////
//////////////////// Other Functions /////////////////////////
//////////////////////////////////////////////////////////////
//Generates the next color in the sequence, going from 0,0,0 to 255,255,255.
//From: https://bocoup.com/weblog/2d-picking-in-canvas
var nextCol = 1;
function genColor(){
var ret = [];
// via http://stackoverflow.com/a/15804183
if(nextCol < 16777215){
ret.push(nextCol & 0xff); // R
ret.push((nextCol & 0xff00) >> 8); // G
ret.push((nextCol & 0xff0000) >> 16); // B
nextCol += 100; // This is exagerated for this example and would ordinarily be 1.
}
var col = "rgb(" + ret.join(',') + ")";
return col;
}//function genColor
//////////////////////////////////////////////////////////////
/////////////////////// FPS Stats box ////////////////////////
//////////////////////////////////////////////////////////////
var stats = new Stats();
stats.setMode(0); // 0: fps, 1: ms, 2: mb
// align top-left
stats.domElement.style.position = 'absolute';
stats.domElement.style.left = '0px';
stats.domElement.style.top = '0px';
document.body.appendChild( stats.domElement );
//////////////////////////////////////////////////////////////
/////////////////////// Initiate /////////////////////////////
//////////////////////////////////////////////////////////////
//First zoom to get the circles to the right location
zoomToCanvas(root);
var dt = 0;
d3.timer(function(elapsed) {
stats.begin();
interpolateZoom(elapsed - dt);
dt = elapsed;
drawCanvas(context);
stats.end();
});
}//drawAll
</script>
</body>
</html>
{
"name": "occupation",
"children": [
{
"name": "Management, professional, and related occupations",
"children": [
{
"name": "Management, business, and financial operations occupations",
"children": [
{
"name": "Business and financial operations occupations",
"children": [
{"name": "Agents and business managers of artists, performers, and athletes", "ID": "1.1.2.1", "size":52},
{"name": "Buyers and purchasing agents, farm products", "ID": "1.1.2.2", "size":15},
{"name": "Wholesale and retail buyers, except farm products", "ID": "1.1.2.3", "size":216},
{"name": "Purchasing agents, except wholesale, retail, and farm products", "ID": "1.1.2.4", "size":271},
{"name": "Claims adjusters, appraisers, examiners, and investigators", "ID": "1.1.2.5", "size":311},
{"name": "Compliance officers", "ID": "1.1.2.6", "size":239},
{"name": "Cost estimators", "ID": "1.1.2.7", "size":105},
{"name": "Human resources workers", "ID": "1.1.2.8", "size":615},
{"name": "Compensation, benefits, and job analysis specialists", "ID": "1.1.2.9", "size":71},
{"name": "Training and development specialists", "ID": "1.1.2.10", "size":128},
{"name": "Logisticians", "ID": "1.1.2.11", "size":100},
{"name": "Management analysts", "ID": "1.1.2.12", "size":850},
{"name": "Meeting, convention, and event planners", "ID": "1.1.2.13", "size":156},
{"name": "Fundraisers", "ID": "1.1.2.14", "size":92},
{"name": "Market research analysts and marketing specialists", "ID": "1.1.2.15", "size":284},
{"name": "Business operations specialists, all other", "ID": "1.1.2.16", "size":194},
{"name": "Accountants and auditors", "ID": "1.1.2.17", "size":1724},
{"name": "Appraisers and assessors of real estate", "ID": "1.1.2.18", "size":95},
{"name": "Budget analysts", "ID": "1.1.2.19", "size":48},
{"name": "Credit analysts", "ID": "1.1.2.20", "size":28},
{"name": "Financial analysts", "ID": "1.1.2.21", "size":261},
{"name": "Personal financial advisors", "ID": "1.1.2.22", "size":434},
{"name": "Insurance underwriters", "ID": "1.1.2.23", "size":113},
{"name": "Financial examiners", "ID": "1.1.2.24", "size":16},
{"name": "Credit counselors and loan officers", "ID": "1.1.2.25", "size":288},
{"name": "Tax examiners and collectors, and revenue agents", "ID": "1.1.2.26", "size":70},
{"name": "Tax preparers", "ID": "1.1.2.27", "size":103},
{"name": "Financial specialists, all other", "ID": "1.1.2.28", "size":93}
]
},
{
"name": "Management occupations",
"children": [
{"name": "Chief executives", "ID": "1.1.1.1", "size":1603},
{"name": "General and operations managers", "ID": "1.1.1.2", "size":887},
{"name": "Legislators", "ID": "1.1.1.3", "size":17},
{"name": "Advertising and promotions managers", "ID": "1.1.1.4", "size":52},
{"name": "Marketing and sales managers", "ID": "1.1.1.5", "size":917},
{"name": "Public relations and fundraising managers", "ID": "1.1.1.6", "size":71},
{"name": "Administrative services managers", "ID": "1.1.1.7", "size":134},
{"name": "Computer and information systems managers", "ID": "1.1.1.8", "size":629},
{"name": "Financial managers", "ID": "1.1.1.9", "size":1194},
{"name": "Compensation and benefits managers", "ID": "1.1.1.10", "size":17},
{"name": "Human resources managers", "ID": "1.1.1.11", "size":236},
{"name": "Training and development managers", "ID": "1.1.1.12", "size":38},
{"name": "Industrial production managers", "ID": "1.1.1.13", "size":273},
{"name": "Purchasing managers", "ID": "1.1.1.14", "size":193},
{"name": "Transportation, storage, and distribution managers", "ID": "1.1.1.15", "size":260},
{"name": "Farmers, ranchers, and other agricultural managers", "ID": "1.1.1.16", "size":941},
{"name": "Construction managers", "ID": "1.1.1.17", "size":711},
{"name": "Education administrators", "ID": "1.1.1.18", "size":838},
{"name": "Architectural and engineering managers", "ID": "1.1.1.19", "size":122},
{"name": "Food service managers", "ID": "1.1.1.20", "size":1113},
{"name": "Funeral service managers", "ID": "1.1.1.21", "size":13},
{"name": "Gaming managers", "ID": "1.1.1.22", "size":28},
{"name": "Lodging managers", "ID": "1.1.1.23", "size":146},
{"name": "Medical and health services managers", "ID": "1.1.1.24", "size":593},
{"name": "Natural sciences managers", "ID": "1.1.1.25", "size":18},
{"name": "Postmasters and mail superintendents", "ID": "1.1.1.26", "size":33},
{"name": "Property, real estate, and community association managers", "ID": "1.1.1.27", "size":674},
{"name": "Social and community service managers", "ID": "1.1.1.28", "size":362},
{"name": "Emergency management directors", "ID": "1.1.1.29", "size":8},
{"name": "Managers, all other", "ID": "1.1.1.30", "size":4075}
]
}
]
},
{
"name": "Professional and related occupations",
"children": [
{
"name": "Architecture and engineering occupations",
"children": [
{"name": "Architects, except naval", "ID": "1.2.2.1", "size":178},
{"name": "Surveyors, cartographers, and photogrammetrists", "ID": "1.2.2.2", "size":41},
{"name": "Aerospace engineers", "ID": "1.2.2.3", "size":147},
{"name": "Agricultural engineers", "ID": "1.2.2.4", "size":4},
{"name": "Biomedical engineers", "ID": "1.2.2.5", "size":14},
{"name": "Chemical engineers", "ID": "1.2.2.6", "size":79},
{"name": "Civil engineers", "ID": "1.2.2.7", "size":349},
{"name": "Computer hardware engineers", "ID": "1.2.2.8", "size":84},
{"name": "Electrical and electronics engineers", "ID": "1.2.2.9", "size":271},
{"name": "Environmental engineers", "ID": "1.2.2.10", "size":42},
{"name": "Industrial engineers, including health and safety", "ID": "1.2.2.11", "size":194},
{"name": "Marine engineers and naval architects", "ID": "1.2.2.12", "size":9},
{"name": "Materials engineers", "ID": "1.2.2.13", "size":35},
{"name": "Mechanical engineers", "ID": "1.2.2.14", "size":303},
{"name": "Mining and geological engineers, including mining safety engineers", "ID": "1.2.2.15", "size":15},
{"name": "Nuclear engineers", "ID": "1.2.2.16", "size":5},
{"name": "Petroleum engineers", "ID": "1.2.2.17", "size":37},
{"name": "Engineers, all other", "ID": "1.2.2.18", "size":406},
{"name": "Drafters", "ID": "1.2.2.19", "size":138},
{"name": "Engineering technicians, except drafters", "ID": "1.2.2.20", "size":369},
{"name": "Surveying and mapping technicians", "ID": "1.2.2.21", "size":77}
]
},
{
"name": "Arts, design, entertainment, sports, and media occupations",
"children": [
{"name": "Artists and related workers", "ID": "1.2.7.1", "size":203},
{"name": "Designers", "ID": "1.2.7.2", "size":830},
{"name": "Actors", "ID": "1.2.7.3", "size":43},
{"name": "Producers and directors", "ID": "1.2.7.4", "size":161},
{"name": "Athletes, coaches, umpires, and related workers", "ID": "1.2.7.5", "size":294},
{"name": "Dancers and choreographers", "ID": "1.2.7.6", "size":18},
{"name": "Musicians, singers, and related workers", "ID": "1.2.7.7", "size":194},
{"name": "Entertainers and performers, sports and related workers, all other", "ID": "1.2.7.8", "size":38},
{"name": "Announcers", "ID": "1.2.7.9", "size":60},
{"name": "News analysts, reporters and correspondents", "ID": "1.2.7.10", "size":80},
{"name": "Public relations specialists", "ID": "1.2.7.11", "size":136},
{"name": "Editors", "ID": "1.2.7.12", "size":163},
{"name": "Technical writers", "ID": "1.2.7.13", "size":61},
{"name": "Writers and authors", "ID": "1.2.7.14", "size":221},
{"name": "Miscellaneous media and communication workers", "ID": "1.2.7.15", "size":78},
{"name": "Broadcast and sound engineering technicians and radio operators", "ID": "1.2.7.16", "size":108},
{"name": "Photographers", "ID": "1.2.7.17", "size":174},
{"name": "Television, video, and motion picture camera operators and editors", "ID": "1.2.7.18", "size":72},
{"name": "Media and communication equipment workers, all other", "ID": "1.2.7.19", "size":0}
]
},
{
"name": "Community and social service occupations",
"children": [
{"name": "Counselors", "ID": "1.2.4.1", "size":737},
{"name": "Social workers", "ID": "1.2.4.2", "size":799},
{"name": "Probation officers and correctional treatment specialists", "ID": "1.2.4.3", "size":100},
{"name": "Social and human service assistants", "ID": "1.2.4.4", "size":180},
{"name": "Miscellaneous community and social service specialists, including health educators and community health workers", "ID": "1.2.4.5", "size":114},
{"name": "Clergy", "ID": "1.2.4.6", "size":433},
{"name": "Directors, religious activities and education", "ID": "1.2.4.7", "size":64},
{"name": "Religious workers, all other", "ID": "1.2.4.8", "size":68}
]
},
{
"name": "Computer and mathematical occupations",
"children": [
{"name": "Computer and information research scientists", "ID": "1.2.1.1", "size":29},
{"name": "Computer systems analysts", "ID": "1.2.1.2", "size":511},
{"name": "Information security analysts", "ID": "1.2.1.3", "size":68},
{"name": "Computer programmers", "ID": "1.2.1.4", "size":509},
{"name": "Software developers, applications and systems software", "ID": "1.2.1.5", "size":1235},
{"name": "Web developers", "ID": "1.2.1.6", "size":220},
{"name": "Computer support specialists", "ID": "1.2.1.7", "size":524},
{"name": "Database administrators", "ID": "1.2.1.8", "size":108},
{"name": "Network and computer systems administrators", "ID": "1.2.1.9", "size":205},
{"name": "Computer network architects", "ID": "1.2.1.10", "size":123},
{"name": "Computer occupations, all other", "ID": "1.2.1.11", "size":512},
{"name": "Actuaries", "ID": "1.2.1.12", "size":28},
{"name": "Mathematicians", "ID": "1.2.1.13", "size":3},
{"name": "Operations research analysts", "ID": "1.2.1.14", "size":138},
{"name": "Statisticians", "ID": "1.2.1.15", "size":85},
{"name": "Miscellaneous mathematical science occupations", "ID": "1.2.1.16", "size":5}
]
},
{
"name": "Education, training, and library occupations",
"children": [
{"name": "Postsecondary teachers", "ID": "1.2.6.1", "size":1259},
{"name": "Preschool and kindergarten teachers", "ID": "1.2.6.2", "size":664},
{"name": "Elementary and middle school teachers", "ID": "1.2.6.3", "size":3102},
{"name": "Secondary school teachers", "ID": "1.2.6.4", "size":1099},
{"name": "Special education teachers", "ID": "1.2.6.5", "size":336},
{"name": "Other teachers and instructors", "ID": "1.2.6.6", "size":836},
{"name": "Archivists, curators, and museum technicians", "ID": "1.2.6.7", "size":47},
{"name": "Librarians", "ID": "1.2.6.8", "size":198},
{"name": "Library technicians", "ID": "1.2.6.9", "size":36},
{"name": "Teacher assistants", "ID": "1.2.6.10", "size":904},
{"name": "Other education, training, and library workers", "ID": "1.2.6.11", "size":206}
]
},
{
"name": "Healthcare practitioners and technical occupations",
"children": [
{"name": "Chiropractors", "ID": "1.2.8.1", "size":66},
{"name": "Dentists", "ID": "1.2.8.2", "size":192},
{"name": "Dietitians and nutritionists", "ID": "1.2.8.3", "size":123},
{"name": "Optometrists", "ID": "1.2.8.4", "size":48},
{"name": "Pharmacists", "ID": "1.2.8.5", "size":293},
{"name": "Physicians and surgeons", "ID": "1.2.8.6", "size":1014},
{"name": "Physician assistants", "ID": "1.2.8.7", "size":84},
{"name": "Podiatrists", "ID": "1.2.8.8", "size":8},
{"name": "Audiologists", "ID": "1.2.8.9", "size":20},
{"name": "Occupational therapists", "ID": "1.2.8.10", "size":111},
{"name": "Physical therapists", "ID": "1.2.8.11", "size":244},
{"name": "Radiation therapists", "ID": "1.2.8.12", "size":17},
{"name": "Recreational therapists", "ID": "1.2.8.13", "size":10},
{"name": "Respiratory therapists", "ID": "1.2.8.14", "size":112},
{"name": "Speech-language pathologists", "ID": "1.2.8.15", "size":137},
{"name": "Exercise physiologists", "ID": "1.2.8.16", "size":5},
{"name": "Therapists, all other", "ID": "1.2.8.17", "size":186},
{"name": "Veterinarians", "ID": "1.2.8.18", "size":81},
{"name": "Registered nurses", "ID": "1.2.8.19", "size":2888},
{"name": "Nurse anesthetists", "ID": "1.2.8.20", "size":30},
{"name": "Nurse midwives", "ID": "1.2.8.21", "size":4},
{"name": "Nurse practitioners", "ID": "1.2.8.22", "size":128},
{"name": "Health diagnosing and treating practitioners, all other", "ID": "1.2.8.23", "size":24},
{"name": "Clinical laboratory technologists and technicians", "ID": "1.2.8.24", "size":293},
{"name": "Dental hygienists", "ID": "1.2.8.25", "size":175},
{"name": "Diagnostic related technologists and technicians", "ID": "1.2.8.26", "size":331},
{"name": "Emergency medical technicians and paramedics", "ID": "1.2.8.27", "size":232},
{"name": "Health practitioner support technologists and technicians", "ID": "1.2.8.28", "size":583},
{"name": "Licensed practical and licensed vocational nurses", "ID": "1.2.8.29", "size":641},
{"name": "Medical records and health information technicians", "ID": "1.2.8.30", "size":138},
{"name": "Opticians, dispensing", "ID": "1.2.8.31", "size":46},
{"name": "Miscellaneous health technologists and technicians", "ID": "1.2.8.32", "size":123},
{"name": "Other healthcare practitioners and technical occupations", "ID": "1.2.8.33", "size":108}
]
},
{
"name": "Legal occupations",
"children": [
{"name": "Lawyers", "ID": "1.2.5.1", "size":1132},
{"name": "Judicial law clerks", "ID": "1.2.5.2", "size":12},
{"name": "Judges, magistrates, and other judicial workers", "ID": "1.2.5.3", "size":53},
{"name": "Paralegals and legal assistants", "ID": "1.2.5.4", "size":417},
{"name": "Miscellaneous legal support workers", "ID": "1.2.5.5", "size":200}
]
},
{
"name": "Life, physical, and social science occupations",
"children": [
{"name": "Agricultural and food scientists", "ID": "1.2.3.1", "size":31},
{"name": "Biological scientists", "ID": "1.2.3.2", "size":110},
{"name": "Conservation scientists and foresters", "ID": "1.2.3.3", "size":27},
{"name": "Medical scientists", "ID": "1.2.3.4", "size":143},
{"name": "Life scientists, all other", "ID": "1.2.3.5", "size":0},
{"name": "Astronomers and physicists", "ID": "1.2.3.6", "size":12},
{"name": "Atmospheric and space scientists", "ID": "1.2.3.7", "size":7},
{"name": "Chemists and materials scientists", "ID": "1.2.3.8", "size":102},
{"name": "Environmental scientists and geoscientists", "ID": "1.2.3.9", "size":91},
{"name": "Physical scientists, all other", "ID": "1.2.3.10", "size":183},
{"name": "Economists", "ID": "1.2.3.11", "size":33},
{"name": "Survey researchers", "ID": "1.2.3.12", "size":4},
{"name": "Psychologists", "ID": "1.2.3.13", "size":232},
{"name": "Sociologists", "ID": "1.2.3.14", "size":3},
{"name": "Urban and regional planners", "ID": "1.2.3.15", "size":24},
{"name": "Miscellaneous social scientists and related workers", "ID": "1.2.3.16", "size":42},
{"name": "Agricultural and food science technicians", "ID": "1.2.3.17", "size":39},
{"name": "Biological technicians", "ID": "1.2.3.18", "size":25},
{"name": "Chemical technicians", "ID": "1.2.3.19", "size":71},
{"name": "Geological and petroleum technicians", "ID": "1.2.3.20", "size":20},
{"name": "Nuclear technicians", "ID": "1.2.3.21", "size":6},
{"name": "Social science research assistants", "ID": "1.2.3.22", "size":2},
{"name": "Miscellaneous life, physical, and social science technicians", "ID": "1.2.3.23", "size":149}
]
}
]
}
]
},
{
"name": "Natural resources, construction, and maintenance occupations",
"children": [
{
"name": "Construction and extraction occupations",
"children": [
{"name": "First-line supervisors of construction trades and extraction workers", "ID": "4.2.1", "size":696},
{"name": "Boilermakers", "ID": "4.2.2", "size":17},
{"name": "Brickmasons, blockmasons, and stonemasons", "ID": "4.2.3", "size":142},
{"name": "Carpenters", "ID": "4.2.4", "size":1282},
{"name": "Carpet, floor, and tile installers and finishers", "ID": "4.2.5", "size":170},
{"name": "Cement masons, concrete finishers, and terrazzo workers", "ID": "4.2.6", "size":58},
{"name": "Construction laborers", "ID": "4.2.7", "size":1686},
{"name": "Paving, surfacing, and tamping equipment operators", "ID": "4.2.8", "size":19},
{"name": "Pile-driver operators", "ID": "4.2.9", "size":1},
{"name": "Operating engineers and other construction equipment operators", "ID": "4.2.10", "size":336},
{"name": "Drywall installers, ceiling tile installers, and tapers", "ID": "4.2.11", "size":162},
{"name": "Electricians", "ID": "4.2.12", "size":769},
{"name": "Glaziers", "ID": "4.2.13", "size":35},
{"name": "Insulation workers", "ID": "4.2.14", "size":44},
{"name": "Painters, construction and maintenance", "ID": "4.2.15", "size":561},
{"name": "Paperhangers", "ID": "4.2.16", "size":4},
{"name": "Pipelayers, plumbers, pipefitters, and steamfitters", "ID": "4.2.17", "size":564},
{"name": "Plasterers and stucco masons", "ID": "4.2.18", "size":31},
{"name": "Reinforcing iron and rebar workers", "ID": "4.2.19", "size":9},
{"name": "Roofers", "ID": "4.2.20", "size":206},
{"name": "Sheet metal workers", "ID": "4.2.21", "size":110},
{"name": "Structural iron and steel workers", "ID": "4.2.22", "size":52},
{"name": "Solar photovoltaic installers", "ID": "4.2.23", "size":14},
{"name": "Helpers, construction trades", "ID": "4.2.24", "size":57},
{"name": "Construction and building inspectors", "ID": "4.2.25", "size":78},
{"name": "Elevator installers and repairers", "ID": "4.2.26", "size":22},
{"name": "Fence erectors", "ID": "4.2.27", "size":33},
{"name": "Hazardous materials removal workers", "ID": "4.2.28", "size":23},
{"name": "Highway maintenance workers", "ID": "4.2.29", "size":123},
{"name": "Rail-track laying and maintenance equipment operators", "ID": "4.2.30", "size":17},
{"name": "Septic tank servicers and sewer pipe cleaners", "ID": "4.2.31", "size":14},
{"name": "Miscellaneous construction and related workers", "ID": "4.2.32", "size":33},
{"name": "Derrick, rotary drill, and service unit operators, oil, gas, and mining", "ID": "4.2.33", "size":54},
{"name": "Earth drillers, except oil and gas", "ID": "4.2.34", "size":29},
{"name": "Explosives workers, ordnance handling experts, and blasters", "ID": "4.2.35", "size":5},
{"name": "Mining machine operators", "ID": "4.2.36", "size":68},
{"name": "Roof bolters, mining", "ID": "4.2.37", "size":3},
{"name": "Roustabouts, oil and gas", "ID": "4.2.38", "size":11},
{"name": "Helpers--extraction workers", "ID": "4.2.39", "size":7},
{"name": "Other extraction workers", "ID": "4.2.40", "size":92}
]
},
{
"name": "Farming, fishing, and forestry occupations",
"children": [
{"name": "First-line supervisors of farming, fishing, and forestry workers", "ID": "4.1.1", "size":44},
{"name": "Agricultural inspectors", "ID": "4.1.2", "size":17},
{"name": "Animal breeders", "ID": "4.1.3", "size":6},
{"name": "Graders and sorters, agricultural products", "ID": "4.1.4", "size":93},
{"name": "Miscellaneous agricultural workers", "ID": "4.1.5", "size":739},
{"name": "Fishers and related fishing workers", "ID": "4.1.6", "size":32},
{"name": "Hunters and trappers", "ID": "4.1.7", "size":2},
{"name": "Forest and conservation workers", "ID": "4.1.8", "size":18},
{"name": "Logging workers", "ID": "4.1.9", "size":71}
]
},
{
"name": "Installation, maintenance, and repair occupations",
"children": [
{"name": "First-line supervisors of mechanics, installers, and repairers", "ID": "4.3.1", "size":284},
{"name": "Computer, automated teller, and office machine repairers", "ID": "4.3.2", "size":265},
{"name": "Radio and telecommunications equipment installers and repairers", "ID": "4.3.3", "size":134},
{"name": "Avionics technicians", "ID": "4.3.4", "size":8},
{"name": "Electric motor, power tool, and related repairers", "ID": "4.3.5", "size":35},
{"name": "Electrical and electronics installers and repairers, transportation equipment", "ID": "4.3.6", "size":5},
{"name": "Electrical and electronics repairers, industrial and utility", "ID": "4.3.7", "size":15},
{"name": "Electronic equipment installers and repairers, motor vehicles", "ID": "4.3.8", "size":17},
{"name": "Electronic home entertainment equipment installers and repairers", "ID": "4.3.9", "size":34},
{"name": "Security and fire alarm systems installers", "ID": "4.3.10", "size":58},
{"name": "Aircraft mechanics and service technicians", "ID": "4.3.11", "size":127},
{"name": "Automotive body and related repairers", "ID": "4.3.12", "size":133},
{"name": "Automotive glass installers and repairers", "ID": "4.3.13", "size":21},
{"name": "Automotive service technicians and mechanics", "ID": "4.3.14", "size":883},
{"name": "Bus and truck mechanics and diesel engine specialists", "ID": "4.3.15", "size":323},
{"name": "Heavy vehicle and mobile equipment service technicians and mechanics", "ID": "4.3.16", "size":211},
{"name": "Small engine mechanics", "ID": "4.3.17", "size":50},
{"name": "Miscellaneous vehicle and mobile equipment mechanics, installers, and repairers", "ID": "4.3.18", "size":93},
{"name": "Control and valve installers and repairers", "ID": "4.3.19", "size":19},
{"name": "Heating, air conditioning, and refrigeration mechanics and installers", "ID": "4.3.20", "size":378},
{"name": "Home appliance repairers", "ID": "4.3.21", "size":51},
{"name": "Industrial and refractory machinery mechanics", "ID": "4.3.22", "size":454},
{"name": "Maintenance and repair workers, general", "ID": "4.3.23", "size":471},
{"name": "Maintenance workers, machinery", "ID": "4.3.24", "size":37},
{"name": "Millwrights", "ID": "4.3.25", "size":48},
{"name": "Electrical power-line installers and repairers", "ID": "4.3.26", "size":115},
{"name": "Telecommunications line installers and repairers", "ID": "4.3.27", "size":184},
{"name": "Precision instrument and equipment repairers", "ID": "4.3.28", "size":85},
{"name": "Wind turbine service technicians", "ID": "4.3.29", "size":4},
{"name": "Coin, vending, and amusement machine servicers and repairers", "ID": "4.3.30", "size":43},
{"name": "Commercial divers", "ID": "4.3.31", "size":3},
{"name": "Locksmiths and safe repairers", "ID": "4.3.32", "size":30},
{"name": "Manufactured building and mobile home installers", "ID": "4.3.33", "size":4},
{"name": "Riggers", "ID": "4.3.34", "size":13},
{"name": "Signal and track switch repairers", "ID": "4.3.35", "size":7},
{"name": "Helpers--installation, maintenance, and repair workers", "ID": "4.3.36", "size":14},
{"name": "Other installation, maintenance, and repair workers", "ID": "4.3.37", "size":224}
]
}
]
},
{
"name": "Production, transportation, and material moving occupations",
"children": [
{
"name": "Production occupations",
"children": [
{"name": "First-line supervisors of production and operating workers", "ID": "5.1.1", "size":789},
{"name": "Aircraft structure, surfaces, rigging, and systems assemblers", "ID": "5.1.2", "size":15},
{"name": "Electrical, electronics, and electromechanical assemblers", "ID": "5.1.3", "size":164},
{"name": "Engine and other machine assemblers", "ID": "5.1.4", "size":10},
{"name": "Structural metal fabricators and fitters", "ID": "5.1.5", "size":24},
{"name": "Miscellaneous assemblers and fabricators", "ID": "5.1.6", "size":1002},
{"name": "Bakers", "ID": "5.1.7", "size":224},
{"name": "Butchers and other meat, poultry, and fish processing workers", "ID": "5.1.8", "size":331},
{"name": "Food and tobacco roasting, baking, and drying machine operators and tenders", "ID": "5.1.9", "size":10},
{"name": "Food batchmakers", "ID": "5.1.10", "size":95},
{"name": "Food cooking machine operators and tenders", "ID": "5.1.11", "size":16},
{"name": "Food processing workers, all other", "ID": "5.1.12", "size":128},
{"name": "Computer control programmers and operators", "ID": "5.1.13", "size":71},
{"name": "Extruding and drawing machine setters, operators, and tenders, metal and plastic", "ID": "5.1.14", "size":14},
{"name": "Forging machine setters, operators, and tenders, metal and plastic", "ID": "5.1.15", "size":5},
{"name": "Rolling machine setters, operators, and tenders, metal and plastic", "ID": "5.1.16", "size":10},
{"name": "Cutting, punching, and press machine setters, operators, and tenders, metal and plastic", "ID": "5.1.17", "size":85},
{"name": "Drilling and boring machine tool setters, operators, and tenders, metal and plastic", "ID": "5.1.18", "size":2},
{"name": "Grinding, lapping, polishing, and buffing machine tool setters, operators, and tenders, metal and plastic", "ID": "5.1.19", "size":45},
{"name": "Lathe and turning machine tool setters, operators, and tenders, metal and plastic", "ID": "5.1.20", "size":9},
{"name": "Milling and planing machine setters, operators, and tenders, metal and plastic", "ID": "5.1.21", "size":5},
{"name": "Machinists", "ID": "5.1.22", "size":391},
{"name": "Metal furnace operators, tenders, pourers, and casters", "ID": "5.1.23", "size":27},
{"name": "Model makers and patternmakers, metal and plastic", "ID": "5.1.24", "size":5},
{"name": "Molders and molding machine setters, operators, and tenders, metal and plastic", "ID": "5.1.25", "size":38},
{"name": "Multiple machine tool setters, operators, and tenders, metal and plastic", "ID": "5.1.26", "size":4},
{"name": "Tool and die makers", "ID": "5.1.27", "size":67},
{"name": "Welding, soldering, and brazing workers", "ID": "5.1.28", "size":615},
{"name": "Heat treating equipment setters, operators, and tenders, metal and plastic", "ID": "5.1.29", "size":4},
{"name": "Layout workers, metal and plastic", "ID": "5.1.30", "size":9},
{"name": "Plating and coating machine setters, operators, and tenders, metal and plastic", "ID": "5.1.31", "size":29},
{"name": "Tool grinders, filers, and sharpeners", "ID": "5.1.32", "size":10},
{"name": "Metal workers and plastic workers, all other", "ID": "5.1.33", "size":342},
{"name": "Prepress technicians and workers", "ID": "5.1.34", "size":25},
{"name": "Printing press operators", "ID": "5.1.35", "size":187},
{"name": "Print binding and finishing workers", "ID": "5.1.36", "size":21},
{"name": "Laundry and dry-cleaning workers", "ID": "5.1.37", "size":156},
{"name": "Pressers, textile, garment, and related materials", "ID": "5.1.38", "size":48},
{"name": "Sewing machine operators", "ID": "5.1.39", "size":158},
{"name": "Shoe and leather workers and repairers", "ID": "5.1.40", "size":4},
{"name": "Shoe machine operators and tenders", "ID": "5.1.41", "size":3},
{"name": "Tailors, dressmakers, and sewers", "ID": "5.1.42", "size":92},
{"name": "Textile bleaching and dyeing machine operators and tenders", "ID": "5.1.43", "size":3},
{"name": "Textile cutting machine setters, operators, and tenders", "ID": "5.1.44", "size":6},
{"name": "Textile knitting and weaving machine setters, operators, and tenders", "ID": "5.1.45", "size":12},
{"name": "Textile winding, twisting, and drawing out machine setters, operators, and tenders", "ID": "5.1.46", "size":12},
{"name": "Extruding and forming machine setters, operators, and tenders, synthetic and glass fibers", "ID": "5.1.47", "size":0},
{"name": "Fabric and apparel patternmakers", "ID": "5.1.48", "size":1},
{"name": "Upholsterers", "ID": "5.1.49", "size":40},
{"name": "Textile, apparel, and furnishings workers, all other", "ID": "5.1.50", "size":14},
{"name": "Cabinetmakers and bench carpenters", "ID": "5.1.51", "size":51},
{"name": "Furniture finishers", "ID": "5.1.52", "size":7},
{"name": "Model makers and patternmakers, wood", "ID": "5.1.53", "size":1},
{"name": "Sawing machine setters, operators, and tenders, wood", "ID": "5.1.54", "size":32},
{"name": "Woodworking machine setters, operators, and tenders, except sawing", "ID": "5.1.55", "size":19},
{"name": "Woodworkers, all other", "ID": "5.1.56", "size":28},
{"name": "Power plant operators, distributors, and dispatchers", "ID": "5.1.57", "size":45},
{"name": "Stationary engineers and boiler operators", "ID": "5.1.58", "size":96},
{"name": "Water and wastewater treatment plant and system operators", "ID": "5.1.59", "size":72},
{"name": "Miscellaneous plant and system operators", "ID": "5.1.60", "size":41},
{"name": "Chemical processing machine setters, operators, and tenders", "ID": "5.1.61", "size":63},
{"name": "Crushing, grinding, polishing, mixing, and blending workers", "ID": "5.1.62", "size":69},
{"name": "Cutting workers", "ID": "5.1.63", "size":60},
{"name": "Extruding, forming, pressing, and compacting machine setters, operators, and tenders", "ID": "5.1.64", "size":40},
{"name": "Furnace, kiln, oven, drier, and kettle operators and tenders", "ID": "5.1.65", "size":9},
{"name": "Inspectors, testers, sorters, samplers, and weighers", "ID": "5.1.66", "size":752},
{"name": "Jewelers and precious stone and metal workers", "ID": "5.1.67", "size":44},
{"name": "Medical, dental, and ophthalmic laboratory technicians", "ID": "5.1.68", "size":85},
{"name": "Packaging and filling machine operators and tenders", "ID": "5.1.69", "size":259},
{"name": "Painting workers", "ID": "5.1.70", "size":156},
{"name": "Photographic process workers and processing machine operators", "ID": "5.1.71", "size":27},
{"name": "Semiconductor processors", "ID": "5.1.72", "size":1},
{"name": "Adhesive bonding machine operators and tenders", "ID": "5.1.73", "size":6},
{"name": "Cleaning, washing, and metal pickling equipment operators and tenders", "ID": "5.1.74", "size":6},
{"name": "Cooling and freezing equipment operators and tenders", "ID": "5.1.75", "size":4},
{"name": "Etchers and engravers", "ID": "5.1.76", "size":13},
{"name": "Molders, shapers, and casters, except metal and plastic", "ID": "5.1.77", "size":31},
{"name": "Paper goods machine setters, operators, and tenders", "ID": "5.1.78", "size":31},
{"name": "Tire builders", "ID": "5.1.79", "size":12},
{"name": "Helpers--production workers", "ID": "5.1.80", "size":54},
{"name": "Production workers, all other", "ID": "5.1.81", "size":947}
]
},
{
"name": "Transportation and material moving occupations",
"children": [
{"name": "Supervisors of transportation and material moving workers", "ID": "5.2.1", "size":199},
{"name": "Aircraft pilots and flight engineers", "ID": "5.2.2", "size":133},
{"name": "Air traffic controllers and airfield operations specialists", "ID": "5.2.3", "size":31},
{"name": "Flight attendants", "ID": "5.2.4", "size":92},
{"name": "Ambulance drivers and attendants, except emergency medical technicians", "ID": "5.2.5", "size":19},
{"name": "Bus drivers", "ID": "5.2.6", "size":584},
{"name": "Driver/sales workers and truck drivers", "ID": "5.2.7", "size":3406},
{"name": "Taxi drivers and chauffeurs", "ID": "5.2.8", "size":383},
{"name": "Motor vehicle operators, all other", "ID": "5.2.9", "size":61},
{"name": "Locomotive engineers and operators", "ID": "5.2.10", "size":55},
{"name": "Railroad brake, signal, and switch operators", "ID": "5.2.11", "size":9},
{"name": "Railroad conductors and yardmasters", "ID": "5.2.12", "size":46},
{"name": "Subway, streetcar, and other rail transportation workers", "ID": "5.2.13", "size":19},
{"name": "Sailors and marine oilers", "ID": "5.2.14", "size":27},
{"name": "Ship and boat captains and operators", "ID": "5.2.15", "size":41},
{"name": "Ship engineers", "ID": "5.2.16", "size":7},
{"name": "Bridge and lock tenders", "ID": "5.2.17", "size":6},
{"name": "Parking lot attendants", "ID": "5.2.18", "size":78},
{"name": "Automotive and watercraft service attendants", "ID": "5.2.19", "size":97},
{"name": "Transportation inspectors", "ID": "5.2.20", "size":47},
{"name": "Transportation attendants, except flight attendants", "ID": "5.2.21", "size":27},
{"name": "Other transportation workers", "ID": "5.2.22", "size":25},
{"name": "Conveyor operators and tenders", "ID": "5.2.23", "size":6},
{"name": "Crane and tower operators", "ID": "5.2.24", "size":74},
{"name": "Dredge, excavating, and loading machine operators", "ID": "5.2.25", "size":44},
{"name": "Hoist and winch operators", "ID": "5.2.26", "size":7},
{"name": "Industrial truck and tractor operators", "ID": "5.2.27", "size":564},
{"name": "Cleaners of vehicles and equipment", "ID": "5.2.28", "size":375},
{"name": "Laborers and freight, stock, and material movers, hand", "ID": "5.2.29", "size":1867},
{"name": "Machine feeders and offbearers", "ID": "5.2.30", "size":17},
{"name": "Packers and packagers, hand", "ID": "5.2.31", "size":505},
{"name": "Pumping station operators", "ID": "5.2.32", "size":27},
{"name": "Refuse and recyclable material collectors", "ID": "5.2.33", "size":84},
{"name": "Mine shuttle car operators", "ID": "5.2.34", "size":1},
{"name": "Tank car, truck, and ship loaders", "ID": "5.2.35", "size":6},
{"name": "Material moving workers, all other", "ID": "5.2.36", "size":41}
]
}
]
},
{
"name": "Sales and office occupations",
"children": [
{
"name": "Office and administrative support occupations",
"children": [
{"name": "First-line supervisors of office and administrative support workers", "ID": "3.2.1", "size":1351},
{"name": "Switchboard operators, including answering service", "ID": "3.2.2", "size":19},
{"name": "Telephone operators", "ID": "3.2.3", "size":33},
{"name": "Communications equipment operators, all other", "ID": "3.2.4", "size":9},
{"name": "Bill and account collectors", "ID": "3.2.5", "size":165},
{"name": "Billing and posting clerks", "ID": "3.2.6", "size":507},
{"name": "Bookkeeping, accounting, and auditing clerks", "ID": "3.2.7", "size":1231},
{"name": "Gaming cage workers", "ID": "3.2.8", "size":14},
{"name": "Payroll and timekeeping clerks", "ID": "3.2.9", "size":146},
{"name": "Procurement clerks", "ID": "3.2.10", "size":31},
{"name": "Tellers", "ID": "3.2.11", "size":361},
{"name": "Financial clerks, all other", "ID": "3.2.12", "size":65},
{"name": "Brokerage clerks", "ID": "3.2.13", "size":5},
{"name": "Correspondence clerks", "ID": "3.2.14", "size":6},
{"name": "Court, municipal, and license clerks", "ID": "3.2.15", "size":69},
{"name": "Credit authorizers, checkers, and clerks", "ID": "3.2.16", "size":44},
{"name": "Customer service representatives", "ID": "3.2.17", "size":2086},
{"name": "Eligibility interviewers, government programs", "ID": "3.2.18", "size":70},
{"name": "File clerks", "ID": "3.2.19", "size":226},
{"name": "Hotel, motel, and resort desk clerks", "ID": "3.2.20", "size":120},
{"name": "Interviewers, except eligibility and loan", "ID": "3.2.21", "size":160},
{"name": "Library assistants, clerical", "ID": "3.2.22", "size":98},
{"name": "Loan interviewers and clerks", "ID": "3.2.23", "size":143},
{"name": "New accounts clerks", "ID": "3.2.24", "size":27},
{"name": "Order clerks", "ID": "3.2.25", "size":104},
{"name": "Human resources assistants, except payroll and timekeeping", "ID": "3.2.26", "size":101},
{"name": "Receptionists and information clerks", "ID": "3.2.27", "size":1301},
{"name": "Reservation and transportation ticket agents and travel clerks", "ID": "3.2.28", "size":94},
{"name": "Information and record clerks, all other", "ID": "3.2.29", "size":95},
{"name": "Cargo and freight agents", "ID": "3.2.30", "size":23},
{"name": "Couriers and messengers", "ID": "3.2.31", "size":233},
{"name": "Dispatchers", "ID": "3.2.32", "size":267},
{"name": "Meter readers, utilities", "ID": "3.2.33", "size":23},
{"name": "Postal service clerks", "ID": "3.2.34", "size":117},
{"name": "Postal service mail carriers", "ID": "3.2.35", "size":311},
{"name": "Postal service mail sorters, processors, and processing machine operators", "ID": "3.2.36", "size":61},
{"name": "Production, planning, and expediting clerks", "ID": "3.2.37", "size":244},
{"name": "Shipping, receiving, and traffic clerks", "ID": "3.2.38", "size":606},
{"name": "Stock clerks and order fillers", "ID": "3.2.39", "size":1483},
{"name": "Weighers, measurers, checkers, and samplers, recordkeeping", "ID": "3.2.40", "size":75},
{"name": "Secretaries and administrative assistants", "ID": "3.2.41", "size":2995},
{"name": "Computer operators", "ID": "3.2.42", "size":87},
{"name": "Data entry keyers", "ID": "3.2.43", "size":292},
{"name": "Word processors and typists", "ID": "3.2.44", "size":101},
{"name": "Desktop publishers", "ID": "3.2.45", "size":2},
{"name": "Insurance claims and policy processing clerks", "ID": "3.2.46", "size":288},
{"name": "Mail clerks and mail machine operators, except postal service", "ID": "3.2.47", "size":79},
{"name": "Office clerks, general", "ID": "3.2.48", "size":1230},
{"name": "Office machine operators, except computer", "ID": "3.2.49", "size":39},
{"name": "Proofreaders and copy markers", "ID": "3.2.50", "size":10},
{"name": "Statistical assistants", "ID": "3.2.51", "size":23},
{"name": "Office and administrative support workers, all other", "ID": "3.2.52", "size":497}
]
},
{
"name": "Sales and related occupations",
"children": [
{"name": "First-line supervisors of retail sales workers", "ID": "3.1.1", "size":3285},
{"name": "First-line supervisors of non-retail sales workers", "ID": "3.1.2", "size":1200},
{"name": "Cashiers", "ID": "3.1.3", "size":3242},
{"name": "Counter and rental clerks", "ID": "3.1.4", "size":113},
{"name": "Parts salespersons", "ID": "3.1.5", "size":93},
{"name": "Retail salespersons", "ID": "3.1.6", "size":3316},
{"name": "Advertising sales agents", "ID": "3.1.7", "size":227},
{"name": "Insurance sales agents", "ID": "3.1.8", "size":562},
{"name": "Securities, commodities, and financial services sales agents", "ID": "3.1.9", "size":256},
{"name": "Travel agents", "ID": "3.1.10", "size":82},
{"name": "Sales representatives, services, all other", "ID": "3.1.11", "size":480},
{"name": "Sales representatives, wholesale and manufacturing", "ID": "3.1.12", "size":1309},
{"name": "Models, demonstrators, and product promoters", "ID": "3.1.13", "size":66},
{"name": "Real estate brokers and sales agents", "ID": "3.1.14", "size":868},
{"name": "Sales engineers", "ID": "3.1.15", "size":43},
{"name": "Telemarketers", "ID": "3.1.16", "size":75},
{"name": "Door-to-door sales workers, news and street vendors, and related workers", "ID": "3.1.17", "size":175},
{"name": "Sales and related workers, all other", "ID": "3.1.18", "size":253}
]
}
]
},
{
"name": "Service occupations",
"children": [
{
"name": "Building and grounds cleaning and maintenance occupations",
"children": [
{"name": "First-line supervisors of housekeeping and janitorial workers", "ID": "2.4.1", "size":282},
{"name": "First-line supervisors of landscaping, lawn service, and groundskeeping workers", "ID": "2.4.2", "size":210},
{"name": "Janitors and building cleaners", "ID": "2.4.3", "size":2328},
{"name": "Maids and housekeeping cleaners", "ID": "2.4.4", "size":1514},
{"name": "Pest control workers", "ID": "2.4.5", "size":80},
{"name": "Grounds maintenance workers", "ID": "2.4.6", "size":1389}
]
},
{
"name": "Food preparation and serving related occupations",
"children": [
{"name": "Chefs and head cooks", "ID": "2.3.1", "size":430},
{"name": "First-line supervisors of food preparation and serving workers", "ID": "2.3.2", "size":545},
{"name": "Cooks", "ID": "2.3.3", "size":1992},
{"name": "Food preparation workers", "ID": "2.3.4", "size":885},
{"name": "Bartenders", "ID": "2.3.5", "size":416},
{"name": "Combined food preparation and serving workers, including fast food", "ID": "2.3.6", "size":428},
{"name": "Counter attendants, cafeteria, food concession, and coffee shop", "ID": "2.3.7", "size":254},
{"name": "Waiters and waitresses", "ID": "2.3.8", "size":2054},
{"name": "Food servers, nonrestaurant", "ID": "2.3.9", "size":185},
{"name": "Dining room and cafeteria attendants and bartender helpers", "ID": "2.3.10", "size":375},
{"name": "Dishwashers", "ID": "2.3.11", "size":246},
{"name": "Hosts and hostesses, restaurant, lounge, and coffee shop", "ID": "2.3.12", "size":297},
{"name": "Food preparation and serving related workers, all other", "ID": "2.3.13", "size":6}
]
},
{
"name": "Healthcare support occupations",
"children": [
{"name": "Nursing, psychiatric, and home health aides", "ID": "2.1.1", "size":1980},
{"name": "Occupational therapy assistants and aides", "ID": "2.1.2", "size":17},
{"name": "Physical therapist assistants and aides", "ID": "2.1.3", "size":70},
{"name": "Massage therapists", "ID": "2.1.4", "size":172},
{"name": "Dental assistants", "ID": "2.1.5", "size":273},
{"name": "Medical assistants", "ID": "2.1.6", "size":508},
{"name": "Medical transcriptionists", "ID": "2.1.7", "size":58},
{"name": "Pharmacy aides", "ID": "2.1.8", "size":45},
{"name": "Veterinary assistants and laboratory animal caretakers", "ID": "2.1.9", "size":41},
{"name": "Phlebotomists", "ID": "2.1.10", "size":118},
{"name": "Miscellaneous healthcare support occupations, including medical equipment preparers", "ID": "2.1.11", "size":179}
]
},
{
"name": "Personal care and service occupations",
"children": [
{"name": "First-line supervisors of gaming workers", "ID": "2.5.1", "size":151},
{"name": "First-line supervisors of personal service workers", "ID": "2.5.2", "size":202},
{"name": "Animal trainers", "ID": "2.5.3", "size":41},
{"name": "Nonfarm animal caretakers", "ID": "2.5.4", "size":201},
{"name": "Gaming services workers", "ID": "2.5.5", "size":99},
{"name": "Motion picture projectionists", "ID": "2.5.6", "size":4},
{"name": "Ushers, lobby attendants, and ticket takers", "ID": "2.5.7", "size":54},
{"name": "Miscellaneous entertainment attendants and related workers", "ID": "2.5.8", "size":189},
{"name": "Embalmers and funeral attendants", "ID": "2.5.9", "size":13},
{"name": "Morticians, undertakers, and funeral directors", "ID": "2.5.10", "size":29},
{"name": "Barbers", "ID": "2.5.11", "size":110},
{"name": "Hairdressers, hairstylists, and cosmetologists", "ID": "2.5.12", "size":760},
{"name": "Miscellaneous personal appearance workers", "ID": "2.5.13", "size":296},
{"name": "Baggage porters, bellhops, and concierges", "ID": "2.5.14", "size":85},
{"name": "Tour and travel guides", "ID": "2.5.15", "size":54},
{"name": "Childcare workers", "ID": "2.5.16", "size":1218},
{"name": "Personal care aides", "ID": "2.5.17", "size":1254},
{"name": "Recreation and fitness workers", "ID": "2.5.18", "size":404},
{"name": "Residential advisors", "ID": "2.5.19", "size":43},
{"name": "Personal care and service workers, all other", "ID": "2.5.20", "size":131}
]
},
{
"name": "Protective service occupations",
"children": [
{"name": "First-line supervisors of correctional officers", "ID": "2.2.1", "size":49},
{"name": "First-line supervisors of police and detectives", "ID": "2.2.2", "size":126},
{"name": "First-line supervisors of fire fighting and prevention workers", "ID": "2.2.3", "size":58},
{"name": "First-line supervisors of protective service workers, all other", "ID": "2.2.4", "size":91},
{"name": "Firefighters", "ID": "2.2.5", "size":300},
{"name": "Fire inspectors", "ID": "2.2.6", "size":13},
{"name": "Bailiffs, correctional officers, and jailers", "ID": "2.2.7", "size":395},
{"name": "Detectives and criminal investigators", "ID": "2.2.8", "size":164},
{"name": "Fish and game wardens", "ID": "2.2.9", "size":3},
{"name": "Parking enforcement workers", "ID": "2.2.10", "size":10},
{"name": "Police and sheriff's patrol officers", "ID": "2.2.11", "size":680},
{"name": "Transit and railroad police", "ID": "2.2.12", "size":3},
{"name": "Animal control workers", "ID": "2.2.13", "size":9},
{"name": "Private detectives and investigators", "ID": "2.2.14", "size":98},
{"name": "Security guards and gaming surveillance officers", "ID": "2.2.15", "size":899},
{"name": "Crossing guards", "ID": "2.2.16", "size":66},
{"name": "Transportation security screeners", "ID": "2.2.17", "size":33},
{"name": "Lifeguards and other recreational, and all other protective service workers", "ID": "2.2.18", "size":141}
]
}
]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.