I’ve updated the cluster analysis based on comments received. Thanks to Ed Harrison, I have included data from the Durham County precincts. And since other commenters explained away the apparent under-voting in some precincts, I recalculated the percentages to be based on the number of people voting in that race instead of the total ballots cast for the precinct. For town council, I approximated 4 votes per person which is necessarily on the high side, but makes the town council percentages comparable to the mayor percentages.

I also figured out how to color the clusters by absolute values rather than relative values, which helps to differentiate the candidates. They still fall into two large groups, but now it’s easier to see subgroups. Mayor-council alignments are highly sensitive to the council multiplication factor (4 here), so ignore Kleinschmidt and Czajkowski for candidate clustering.
For the record, low scoring candidates have been eliminated (otherwise they make all precincts look more similar), and absentee and provisional votes have been combined with One Stop precincts.
The precincts present a similar clustering as before, except the under-voters are now distributed into other clusters. The yellow group is fairly neutral. The green group is left leaning. The purple group is left-leaning with a focus on Harrison/Rich/Easthom. The blue group is left-leaning with a focus on Merritt/Kleinschmidt. The red group is right-leaning and includes two of the Durham precincts.
As a bonus, I thought this visual was attractive. It shows a smoothed trend line of the vote percentages (times four for town council candidates) by precinct, where the precincts are ordered by support for Kleinschmidt, the winner of the race for mayor. (Click graph for a larger version.)
The “left-leaning” candidates generally rise with Kleinschmidt while the “right-leaning” candidates (dotted lines) fall. Merritt’s strong showing at Lincoln and Northside is also evident. Unfortunately for him, those precincts had very low turn-out.
The analysis is very cool Xan. How hard would it be to do one where each voter was presumed to cast 3 votes? My sense was that was a very typical case this year for many voters.
I just tried it with 3.22 votes per person, which was the average for fully participating precincts. The precinct clustering was unaffected, but the candidate clustering was. The council multiplication factor affected which council candidates aligned more closely with the mayor candidates, which I should have expected and discounted those clusterings.
FYI, I cast only two votes for town council.