numpy+matplotlibで散布図の上にバツ印をつける

バツ印をつける」と言った場合、多くの場合言語化されていない暗黙の要求仕様がある。「バツ印はグラフの軸に影響されて横長になったりしないでほしい」とか。

前回 「NumPy+Matplotlibで散布図の上に平均と分散を表示する」 ではCircleをPatchCollectionに入れて云々、とやったが、今回はそうではなくバツ印でクラスタの中心だけを表現したい。Circleを置いたのでは軸に影響されて横長になったりして期待と違う。

どうしたらいいかなぁ、としばらく考えてから、scatterでいいじゃないかと気づいた。散布図のデータ点は拡縮されていないからね。白で太めに書いてからその中に各クラスターの色で十字を書いている。とても手軽に実現できた。

    clf()
    colors = color_for_cluster[nearest_cluster]
    scatter(data[:, 0], data[:, 1], c=colors, alpha=0.5, marker="o")
    scatter(mus[:, 0], mus[:, 1], s=50, linewidths=3, edgecolor=[1, 1, 1], marker="+")
    scatter(mus[:, 0], mus[:, 1], s=50, edgecolor=color_for_cluster, marker="+")