Step 4 was to test everything on the Australia (and New Zealand!) data set. Here are screenshots of the latitude being x, the longitude being y, the basin id being the z axis, the color being based on the cell location values, and the id being based on the size column.
Step 5 was to test it on the data set from project 2:
For my first extension, adding labels to the axes, I used the same kind of strategy I had used in project 3 for putting x, y, and z onto them, but this time, I needed to fetch the correct name. First, in setLetters, I created blank text objects and stored them in a list field. Then, in buildPoints, I configure their text to have the xAxisCol, yAxisCol, and possibly the zAxisCol for their text, which are strings I stored after the user chose the column names.
For the second extension, making info appear when over a point, I used the <Motion> event and bound it to the display tooltip function. For this, I have a label as a field, and if I am over a point, I change it to show the x, y, and possibly z axis information. To do this, I get the object the mouse is over (with index ?0 to make it work because tkinter works in mysterious ways) and find its index within the list of objects. Then, I use that value and the corresponding header as input to the get_value_numeric method. Also, the logic for this extension was a challenge to figure out. In the end, I had it so that if the mouse enters the dot, the value of the field pointOverVal changes, but only if it is different from what it was before. This means that this if statement is only entered upon first entry into the point. Otherwise, you are moving within the dot, so the field doesn't change. Lastly, if you aren't over any points, the label's text changes to be blank again.
In this project, I learned a few more tkinter canvas methods, as well as logic for making a label appear when over a point. I also learned a useful method for scaling the rgb values, because at first I had no idea how to turn one value into three. As a whole, I had more experience working with user input and managing which data needed to be retrieved at any time based on the specifications.
Thank you to: Melody