なぜこんなに簡単に試せないのだろうか…と思い、自分のメモのためにサンプルコードをまとめておく.
3Dは以下のようにipython notebookでも触れるインタラクティブな3D表示です.
今回は、mnistのサンプル(TensorFlow2.0とKeras)で、t-SNEとUMAPとPCAを試し、3Dバージョンも載せたサンプル.
以下のように、3つのパートに分けています.
各パートから適宜切り取って組み合わせてください.

例えば、「データ読み込み共通部分」+「t-SNE」+「データプロット3D共通部分」の組み合わせ等.
全て一つのコードに入れたバージョンも末尾においときます.
mnistの生データの可視化
まずはデータの読み込み部分. 基本的に全ての箇所はKerasもtensorflowも共通
データ読み込み共通部分
データを読み込んで、float32のnumpy arrayに変換後、255.で割っておく.
その後(60000, 28, 28)と(10000, 28, 28)になっているデータを(60000, 784)と(10000, 784)にしておく.
データプロット2D共通部分
matplotlibのscatterを使って散布図. 非常に簡単.
2Dはx_train_transformed_2dを使用.
testかtrainかどちらかで良ければ、その対応するscatterを1行消すのみでOK.

データプロット3D共通部分
plotlyのexpressに含まれるscatter_3dを使用.
もしtrainまたはtestで良ければ、mergeせずにdf_trainかdf_testをそのままグラフに渡せば良い.

PCA部分
PCAで8次元にとりあえず落としている. そのうち上位2つまたは3つの次元を使って可視化. なので共通です.
t-SNE部分
2Dと3Dでそれぞれn_componentsを調整する必要あり.
TSNEは遅いので、x_trainやx_testは多すぎないように注意.
UMAP部分
こちらもt-SNE同様に2d,3d分けて行う.
一つのコードにしたバージョン
plot_wayで2Dまたは3Dを,
dim_reduction_wayでUMAP / PCA / tSNEをお選びください.