I'm attempting to build a nine-region cluster chart using Tooltip to display labels associated with 2-D points also displayed on it. I do NOT want to use "FindClusters". I want to design my own cluster chart as explained below. The following mock data is made-up of 2-D points where each points have a label-identifier called a "NAICS" code (NAICS stands for "North American Industry Classification System").
mockdataWithNAICS = {{"29-1141", 186, 112}, {"41-2031", 123, 92}, {"41-1011", 65, 404}, {"43-4051", 108, 646}, {"31-1014", 643, 246}, {"49-9071", 356, 363}, {"43-1011", 543, 381}, {"43-5081", 268, 674}, {"53-3032", 416, 653}, {"37-3011", 514, 428}, {"37-2012", 501, 58}, {"33-9032", 441, 598}, {"35-2014", 633, 138}, {"29-2061", 414, 590}, {"53-3033", 98, 155}, {"35-3031", 179, 431}, {"49-3023", 93, 623}, {"35-3021", 37, 578}, {"41-2011", 256, 237}, {"37-2011", 302, 50}, {"47-1011", 518, 2}, {"11-9111", 313, 294}, {"31-9092", 698, 136}, {"43-3031", 608, 610}, {"43-6013", 562, 515}, {"13-2011", 415, 327}, {"21-1093", 191, 72}, {"41-4012", 212, 92}, {"41-3031", 546, 418}, {"31-1011", 591, 49}, {"47-2031", 405, 526}, {"41-3021", 191, 297}, {"15-1151", 442, 445}, {"43-6011", 118, 185}, {"49-1011", 472, 402}, {"53-7062", 348, 552}, {"43-4171", 409, 396}, {"43-6014", 348, 247}, {"53-1031", 629, 59}, {"47-2061", 589, 534}, {"27-1026", 22, 377}, {"29-1069", 445, 74}, {"49-9021", 647, 539}, {"43-9061", 25, 543}, {"11-1021", 19, 165}, {"41-1012", 482, 199}, {"29-1062", 1, 68}, {"43-4081", 217, 112}, {"41-3099", 663, 66}, {"11-3031", 329, 392}, {"53-7061", 357, 515}, {"35-2021", 488, 245}, {"31-9091", 318, 679}, {"51-1011", 650, 349}, {"11-9051", 38, 145}, {"53-3031", 166, 691}, {"39-9021", 561, 127}, {"39-5012", 665, 362}, {"47-2111", 397, 532}, {"43-3071", 326, 271}, {"29-2034", 361, 450}, {"35-9011", 12, 366}, {"29-1123", 16, 211}, {"15-1142",162, 662}, {"11-2021", 520, 164}, {"29-2031", 339, 619}, {"25-2011", 263, 564}, {"41-4011", 551, 301}, {"29-2055", 76, 549}, {"29-2052", 285, 640}, {"13-2072", 370, 542}, {"35-2012", 512, 547}, {"11-2022", 130, 154}, {"15-1132", 188, 274}, {"13-2052", 338, 587}, {"15-1199", 455, 5}, {"35-9031", 595, 472}, {"17-2051", 648, 481}, {"11-9199", 430, 189}, {"39-3091", 29, 396}, {"47-2152", 412, 342}, {"29-1122", 582, 20}, {"11-9141", 276, 4}, {"25-2021", 666, 617}, {"15-1134", 236, 334}, {"37-1011", 407, 664}, {"29-1063", 260, 278}, {"49-3031", 161, 354}, {"41-9022", 185, 144}, {"41-9041", 551, 628}, {"25-2031", 529, 505}, {"29-2071", 548, 296}, {"29-1127", 373, 124}, {"21-1023", 473, 71}, {"29-1067", 489, 569}, {"29-1071", 539, 277}, {"11-3121", 390, 348}, {"11-9021", 634, 20}, {"53-3041", 589, 258}, {"49-3021", 47, 206}}; L = Length[mockdataWithNAICS]; counter = Range[L]; counter = Range[L]; mock2Dvalues = {mockdataWithNAICS[[#]][[2]], mockdataWithNAICS[[#]][[3]]} & /@ counter The following measurements are necessary to build a grid :
minx = Round[Min[Table[{mock2Dvalues[[i]][[1]]}, {i, 1, L}]]]; maxx = Round[Max[Table[{mock2Dvalues[[i]][[1]]}, {i, 1, L}]]]; dx = Round[Subdivide[minx, maxx, 3]]; miny = Round[Min[Table[{mock2Dvalues[[i]][[2]]}, {i, 1, L}]]]; maxy = Round[Max[Table[{mock2Dvalues[[i]][[2]]}, {i, 1, L}]]]; dy = Round[Subdivide[miny, maxy, 3]]; gridpts = Tuples[{dx, dy}]; The following plot will allow you to visualize the grid and all the data points :
plt1 = ListPlot[gridpts, Frame -> True, PlotStyle -> Black, GridLines -> {dx, dy}, Epilog :> {Blue, Point[mock2Dvalues]}] 
The purpose of the following plot is to allow you to display the grid points with the aid of Tooltip to define the following nine regions :
plt2 = ListPlot[Tooltip[gridpts], Frame -> True, PlotStyle -> Black, GridLines -> {dx, dy}] 
Here we define the nine cluster regions. We assign colors to the region names as a "mnemonic device" to associate the 2-D points with the regions that they belong-to, according to color. The colors are arbitrary :
magentaregion = Rectangle[gridpts[[1]], gridpts[[6]]] orangeregion = Rectangle[gridpts[[5]], gridpts[[10]]] cyanregion = Rectangle[gridpts[[9]], gridpts[[14]]] redregion = Rectangle[gridpts[[2]], gridpts[[7]]] blueregion = Rectangle[gridpts[[6]], gridpts[[11]]] greenregion = Rectangle[gridpts[[10]], gridpts[[15]]] lightgrayregion = Rectangle[gridpts[[3]], gridpts[[8]]] yellowregion = Rectangle[gridpts[[7]], gridpts[[12]]] blackregion = Rectangle[gridpts[[11]], gridpts[[16]]] Here we disburse the points according to the regions where they belong to :
magentapts = Select[mock2Dvalues, # \[Element] magentaregion &] orangepts = Select[mock2Dvalues, # \[Element] orangeregion &] cyanpts = Select[mock2Dvalues, # \[Element] cyanregion &] redpts = Select[mock2Dvalues, # \[Element] redregion &] bluepts = Select[mock2Dvalues, # \[Element] blueregion &] greenpts = Select[mock2Dvalues, # \[Element] greenregion &] lightgraypts = Select[mock2Dvalues, # \[Element] lightgrayregion &] yellowpts = Select[mock2Dvalues, # \[Element] yellowregion &] blackpts = Select[mock2Dvalues, # \[Element] blackregion &] The following plots are necessary to build the final chart below :
plt3 = ListPlot[magentapts, Frame -> True, PlotStyle -> Magenta, GridLines -> {dx, dy}, PlotRange -> {{minx, maxx}, {miny, maxy}}, AspectRatio -> 1]; plt4 = ListPlot[orangepts, Frame -> True, PlotStyle -> Orange, GridLines -> {dx, dy}, PlotRange -> {{minx, maxx}, {miny, maxy}}, AspectRatio -> 1]; plt5 = ListPlot[cyanpts, Frame -> True, PlotStyle -> Cyan, GridLines -> {dx, dy}, PlotRange -> {{minx, maxx}, {miny, maxy}}, AspectRatio -> 1]; plt6 = ListPlot[redpts, Frame -> True, PlotStyle -> Red, GridLines -> {dx, dy}, PlotRange -> {{minx, maxx}, {miny, maxy}}, AspectRatio -> 1]; plt7 = ListPlot[bluepts, Frame -> True, PlotStyle -> Blue, GridLines -> {dx, dy}, PlotRange -> {{minx, maxx}, {miny, maxy}}, AspectRatio -> 1]; plt8 = ListPlot[greenpts, Frame -> True, PlotStyle -> Green, GridLines -> {dx, dy}, PlotRange -> {{minx, maxx}, {miny, maxy}}, AspectRatio -> 1]; plt9 = ListPlot[lightgraypts, Frame -> True, PlotStyle -> LightGray, GridLines -> {dx, dy}, PlotRange -> {{minx, maxx}, {miny, maxy}}, AspectRatio -> 1]; plt10 = ListPlot[yellowpts, Frame -> True, PlotStyle -> Yellow, GridLines -> {dx, dy}, PlotRange -> {{minx, maxx}, {miny, maxy}}, AspectRatio -> 1]; plt11 = ListPlot[blackpts, Frame -> True, PlotStyle -> Black, GridLines -> {dx, dy}, PlotRange -> {{minx, maxx}, {miny, maxy}}, AspectRatio -> 1]; This plot shows the nine-region cluster chart with the points colored by the region that they belong to :
finalchart = Show[{plt3, plt4, plt5, plt6, plt7, plt8, plt9, plt10, plt11}] 
Finally; we establish an association between the NAICS codes and their 2 - D points as follows:
mockdataWithNAICSlabels = Association[#[[1]] -> #[[2 ;; 3]] & /@ mockdataWithNAICS]; Dataset[mockdataWithNAICSlabels] My question is: How can I associate the NAICS codes to their respective points BY COLORED REGION, so that if I use Tooltip; the NAICS codes will be displayed for each point in the above finalchart? Thank you!




