1) To build this unclassed (continuous) scale in our workbook, we first defined our "unclassed" scale with the d3 command "scaleLinear". This command communicated within Observable that we will be creating a linear scale. In the next lines we defined our domain and our range. The domain was constructed with the minimum value of my normalized data as the first value, and the final value being the maximum. This means that this linear scale included every Texas county's data. The range is two color codes from ColorBrewer that are on the ends of the blue spectrum. The chart visualizes the HS graduate data (from the domain command) in the context of the colors that were provided, which creates a function that assigns a color value from this blue spectrum that correlates to where HS grad data lies in comparison to the other data points. The deeper the blue, the higher the value within the HS grad data. The chart itself was created simply with the "chart" command, where I ensured it was utilizing my normalized data as well as the "unclassed" query that contained the linear scale information.
2a) For our workbook within Observable, we used D3 commands to visualize the desired classifications. The D3 toolbox has plenty of options for visualizing data, and all quantile, equal interval, natural breaks, and manual classifications are provided via this software. To implement these visualizations a user simply needs to find the commands that can be used to define that specific classification. For the quantile classification, we defined "quantile" using the D3 command "d3.scaleQuantile". The domain was defined with the normalized Texas graduate data, meaning that this classification would utilize the entirety of that data. The range, or for these D3 tools what determines the visualization of the domain, we used colors from ColorBrewer. I chose to use green in this specific instances, and I stuck with the classic 5-class breakdown- the standard in softwares like ArcGIS Pro.
2c) Equal interval classification uses the D3 function "d3.scaleQuantize". I set the domain to the extent of the data, which ensures that all the points are included. This command splits the data into 3 evenly (3 because of the number of colors I input into this command's range) sized intervals.
2d) The D3 threshold groups the normalized data into classes that the user can define using the domain. I used the command "d3.scaleThreshold" for this method of classification. For my manual scale threshold, I simply chose breaks that I thought would distribute the data visually well. I grouped the first group containing 15% of people with HS diploma alone, the next containing 15.01%-20%, then 20.01%-25%, and finally 25.01% and above. These classes make sense to me as the first and last class represent the low/ high outliers well, and the more average counties would make up the more 'moderate' colors on the scheme.
2b) As opposed to the "d3.scaleThreshold" technique I used regarding my comment "2c", creating Jenks Natural Breaks takes out the manual sorting aspect. In the domain I simply needed to put in "naturalbreaks" to ensure this algorithm was applied to my normalized data. Jenks Natural Breaks naturally identifies gaps within the data, and I wanted to utilize three classes like I did with my Threshold chart.
3) The number of classes for each of these charts is determined by how many colors are input into the ranges. For example, directly above I inserted 3 color codes from ColorBrewer. This command knew it needed to take the natural breaks of the data (as the natural breaks shown in the chart below are simply created by inserting "naturalbreaks" within the domain so that Observable knows to break up the data itself) and create 3 distinct classes, all of which would be displayed with the colors that were provided within that the range line.
4) ColorBrewer is a fantastic resource for ensuring these classifications can be done correctly in Observable. The website is very simple to use. A multitude of different colors are given on the main screen, with the gradients dependent upon the users selection of if they want colors to represent sequential, diverging, or qualitative data. Once a color scheme is selected, it is important to select the number of classes for the data. Once the classes are selected as well, the user can export the colors into Adobe, GIMP and Inkscape, JavaScript, or CSS. From there, the colors can be implemented however the user sees fit.
In the case of our project in Observable, color scales were used by inserting the colors selected from ColorBrewer into the range section for each scale. The scales are then created using the colors that were provided in the command.
This histogram for HSGradAlonePct, or the percentage of Texans in each Texas county with a high school diploma being their highest form of education, we can see a very slight right skew. There are a few outlier counties above the 30% threshold, and a few outliers on the other end below the 10% threshold. Most of Texas' counties lie at or just under 20%.