1. To join tributes from a GeoJSON file with attributes from a CSV file, I used QGIS. Adding both layers to QGIS, then heading to the joins tab and adding a new join. Join the csv and GeoJSON file by chosing a matching column for the join field and target field. This then joins the geometry and shapefile together.
2. In order to apply colors to observable, you can use the hues on colorbrewer of the preselcted color schemes. Then, simply copy and pasting those values into observable allows you to apply the colors. Using the colors d3.scaleThreshold allows you to apply the domain to the colors which are the range.
3. To determine the style, width, and color of symbol outlines, using the functions
.attr will allow you to change the style. .attr"stroke" determines the color, and the .attr"stroke-width" determines the thickness.
6. To create legend, using the legendgroup=svg.append. You are then also able to determine the space between each of the legend items, and where the legend is located on the map.
7. the .append("title")
.text(d => `${d.properties[idName]} : ${format(d.properties[finalAttributeName])}`) helps to show the values of the symbols when hovering over them.
4. To determine the type of point symbol you create breaks in the data. For my data, I used natural breaks, using the function simple.ckmeans. Then, defining the radius of the symbols used by using the function radiusarraymath. Connect attributes to the array of data by using d3.scalethreshold. Finally, using the selectall("circle") allows you to determine the shape as a circle and input the data and radius into the symbol. Choosing the symbol and size is based on making sure the data does not look clustered, and the sizes are visible.
5. Using radiusarraymath maps the data values to the different radius's of the symbol. This breaks the data into the different radius sizes of the symbols.
8. To create the polygon base map, importing the topojson file of the polygons in the basepolygons= fileattachment will bring the file into the notebook. Then, create a projection for the polygon by projection = d3. which is followed by your desired projection. Finally, using svg = d3.create will allow you to path to an svg and change colors and style.