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

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

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

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

Python

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

解決済

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

ryosuke0313
ke0313

総合スコア63

Python 3.x

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

Python

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

1回答

0グッド

1クリップ

240閲覧

投稿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()

#実行結果
イメージ説明

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

2022/12/06 05:33

こちらの質問が他のユーザーから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました。

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. と表示します

回答1

0

自己解決

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

投稿2022/12/08 06:51

ryosuke0313

総合スコア63

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Python 3.x

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

Python

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