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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

Q&A

解決済

1回答

779閲覧

ヒートマップの表示(python)

ryosuke0313

総合スコア65

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

0グッド

1クリップ

投稿2022/12/06 05:14

実現したいこと

https://mori-memo.hateblo.jp/entry/2022/02/23/003111
と同様のことがやりたいです。

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

上記サイトと同じコードで実行しましたが、うまくいきません。コードの実行はできるのですが、左のヒートマップを押しても散布図が表示されません。

該当のソースコード

python

1import numpy as np 2import pandas as pd 3import matplotlib.pyplot as plt 4import seaborn as sns 5from sklearn.datasets import load_boston 6 7 8cols = dd.columns 9rows = cols 10corr = dd.corr() 11 12def onclick(event): 13 x = event.xdata 14 y = event.ydata 15 axes = event.inaxes 16 # axis外クリック時は無視 17 if x == None or y == None: 18 return 19 # ヒートマップ以外をクリック時は無視 20 if axes != ax[0]: 21 return 22 23 # x、yの小数点切り捨ての値がインデックス番号と一致する 24 col = cols[int(x)] 25 row = rows[int(y)] 26 27 # 散布図の範囲指定用に描くデータの最大値-最小値を計算しておく 28 xwid = dd[col].max() - dd[col].min() 29 ywid = dd[row].max() - dd[row].min() 30 31 # 右の散布図の更新 32 ax[1].set_title('Correlation coefficient ' + col + ' - ' + row + ': ' \ 33 + str(round(corr.loc[row, col], 3))) 34 ax[1].set_xlabel(col) 35 ax[1].set_ylabel(row) 36 ln.set_data(dd[col], dd[row]) 37 # 散布図の範囲はmax,min値より少し大きめにする 38 ax[1].set_xlim(dd[col].min() - xwid * 0.1, dd[col].max() + xwid * 0.1) 39 ax[1].set_ylim(dd[row].min() - ywid * 0.1, dd[row].max() + ywid * 0.1) 40 plt.draw() 41 42fig, ax = plt.subplots(1, 2, figsize=(24, 15)) 43sns.heatmap(corr, ax=ax[0], vmin=-1, vmax=1, annot=True, fmt="3.2f", annot_kws={"size": 5}) 44ln, = ax[1].plot([np.nan], [np.nan], 'o') # 散布図プロット 45ax[0].set_aspect('equal') 46fig.canvas.mpl_connect('button_press_event', onclick) 47plt.show()

#実行結果
イメージ説明

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

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

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

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

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

can110

2022/12/06 06:37

提示コードはNameErrorで実行できませんでした。 現象が再現するコードを提示ください。 ちなみに参考サイトのコードはこちらでは正常に動作しました。
ryosuke0313

2022/12/06 07:28

サイトのコードと同じものを実行しました。図は出てくるのですが、ヒートマップをクリックしても散布図が表示されない状況です。
bsdfan

2022/12/06 08:11

実行環境は何でしょうか? jupyter だったりしますか?
ryosuke0313

2022/12/06 09:49

anacondaからJupyterを使ってます。python3.9です。
jbpb0

2022/12/06 11:36 編集

> anacondaからJupyterを使ってます。 もし %matplotlib inline を実行してたら、あるいは「%matplotlib ...」をどれも実行してなければ、下記のどちらかをコードの先頭で実行してみてください %matplotlib notebook %matplotlib tk
ryosuke0313

2022/12/07 08:20

Vscodeで実行してますが、%matplotlib notebookを先頭にいれました。ただ、同様に動きませんでした。
jbpb0

2022/12/07 08:29

%matplotlib tk ではどうですか? 別のウインドウが開いて、そこにグラフが表示されるはずですが (vs codeは使ってないのでよく知りませんが、直接jupyterを使った場合はそうなります)
ryosuke0313

2022/12/07 08:41

%matplotlib tkでは、黄色の下線が引かれて、実行後Warning: Cannot change to a different GUI toolkit: tk. Using notebook instead. と表示します
guest

回答1

0

自己解決

jupyter環境で%matplotlib notebookを先頭にいれました

投稿2022/12/08 06:51

ryosuke0313

総合スコア65

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問