質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

2023閲覧

[Matplotlib]t-SNEの可視化における表示順の指定

mek_41

総合スコア3

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/08/20 07:42

前提・実現したいこと

t-SNEを用いて1枚のラベル付き4クラス画像の特徴量を可視化するプログラムを作っています。
下のイメージ図[COVID-19データセットの4クラスセグメンテーションの特徴量の可視化]

発生している問題・エラーメッセージ

クラス0の黒の表示が最背面に、その上に青、緑となり、赤の表示が最前面に来るように可視化させたいのですがどのようにプログラムを書けばいいのか困っています。

## t-SNEの適応 from sklearn.manifold import TSNE # 結果の可視化 import matplotlib.pyplot as plt # t-SNEの適応 # 2次元のデータに落とし込む # X_testにt-SNEを適応し、得られた低次元データをX_tsneに格納する tsne = TSNE(n_components = 2) # n_componentsは低次元データの次元数 X_tsne = tsne.fit_transform(X_test) # X_test : 入力画像とそのラベルが格納されている # t-SNEの可視化 colors = ['black', 'blue', 'green', 'red'] plt.xlim(X_tsne[:, 0].min(), X_tsne[:, 0].max() + 1) # 横軸の最小値・最大値を(float, float)で指定 plt.ylim(X_tsne[:, 1].min(), X_tsne[:, 1].max() + 1) for i in range(len(X_test)): plt.text( X_tsne[i, 0], X_tsne[i, 1], str(L[i]), color = colors[L[i]] ) plt.xlabel('t-SNE Feature1') plt.ylabel('t-SNE Feature2') plt.savefig("result21.png") ```ここに言語名を入力 python3

試したこと

調べたらzorderと呼ばれる引数が出てきました。
例)plt.plot(x, y, 'r', zorder=1, lw=3)
私のコードの場合、引数のx,yが定義されてないためどのように書けばよいのかわかりません。

補足情報(FW/ツールのバージョンなど)

COVID-19データセットの4クラスセグメンテーションの特徴量の可視化

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

逆から描画すれば良いだけのように見えます。

for i in range(len(X_test)):

for i in range(len(X_test)-1, -1, -1):

に変更してみてください。

投稿2021/08/20 08:14

ppaul

総合スコア24666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mek_41

2021/08/20 11:00

回答ありがとうごさいます!変更してみましたが改善しませんでした。 色(クラス)によってプロットが重なっても表示する順番を指定できるようなものがあれば教えていただけると嬉しいです。
guest

0

ベストアンサー

描画の順番を逆にして

python

1for i in reversed(range(len(X_test))):

とすればいいんじゃないでしょうか。


再回答

黒青緑赤の順で描画したいのですから、

python

1for color_index in range(len(colors)): 2 for i in range(len(X_test)): 3 if L[i] == color_index: 4 plt.text( 5 X_tsne[i, 0], 6 X_tsne[i, 1], 7 str(L[i]), 8 color = colors[L[i]] 9 )

でしょうか。

投稿2021/08/20 08:13

編集2021/08/21 03:16
quickquip

総合スコア11072

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mek_41

2021/08/20 11:04

回答ありがとうございます!変更してみましたが特に色の前後の配置などは変わった感じはしませんでした。このプログラムでは色の重なりの順番はランダムになっているのかもしれません。。。色(クラス)によってプロットが重なっても表示する順番を指定することができるようなものがあれば教えていただけると嬉しいです。
mek_41

2021/08/23 02:29

黒青緑赤の順に描画されて可視化した結果が見やすくなりました!とても助かりました!本当にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問