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

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

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

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

Q&A

解決済

2回答

1242閲覧

ヒートマップのy軸を調整したい

退会済みユーザー

退会済みユーザー

総合スコア0

Python 3.x

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

0グッド

0クリップ

投稿2022/12/03 09:56

実現したいこと

ヒートマップのy軸を調整したい

結果

イメージ説明

該当のソースコード

python

1import pandas as pd 2import seaborn as sns 3import matplotlib.pyplot as plt 4import numpy as np 5import plotly.express as px 6sns.set() 7path=r"C:\test\heat-a.xlsx" 8df=pd.read_excel(path) 9print(df) 10yticks=["0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0"] 11sns.heatmap(df,yticklabels=yticks) 12plt.xlabel('episode') 13plt.ylabel('class') 14 15plt.show() 16

データの中身

1話 2話 3話 4話 5話 6話 7話 8話 10話 11話 12話 13話 0 0.008130 0.000000 0.045455 0.00000 0.000000 0.0000 0.000000 0.000000 0.00 0.000000 0.000000 0.000000 1 0.016260 0.000000 0.000000 0.00000 0.000000 0.0000 0.000000 0.000000 0.00 0.000000 0.000000 0.000000 2 0.000000 0.000000 0.000000 0.02222 0.000000 0.0000 0.000000 0.000000 0.00 0.000000 0.000000 0.000000 3 0.016260 0.000000 0.045455 0.00000 0.010638 0.0250 0.000000 0.015873 0.00 0.000000 0.039735 0.014925 4 0.048780 0.000000 0.000000 0.04444 0.031915 0.0125 0.028571 0.000000 0.00 0.023256 0.006623 0.037313 5 0.219512 0.130435 0.227270 0.11111 0.053191 0.1250 0.042857 0.070365 0.25 0.069767 0.086093 0.097015 6 0.357714 0.565217 0.431818 0.35556 0.425532 0.3375 0.342857 0.460317 0.25 0.279070 0.370861 0.417910 7 0.227642 0.260870 0.181818 0.31111 0.361702 0.4375 0.442857 0.317460 0.50 0.418605 0.337748 0.343284 8 0.089431 0.021739 0.204545 0.13333 0.074468 0.0500 0.085714 0.063492 0.00 0.093023 0.125828 0.067164 9 0.016260 0.021739 0.068182 0.02222 0.425530 0.0125 0.057143 0.063492 0.00 0.116279 0.033113 0.022388

やりたいこと.質問

y軸を0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0の目盛りにしたいです
y軸がおかしな位置になっているので,これを正しい位置にするにはどうすればいいですか?

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

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

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

guest

回答2

0

ベストアンサー

下のようなイメージでしょうか

イメージ説明

ヒートマップのticksは中央に打たれるので、0.5の位置に0、1.5の位置に0.1, 2.5の位置に 0.2, .... となっています。
なので、ticksのラベルだけではなく、ticksをうつ位置も指定しなおす必要があります。今回は位置はnp.arange()で作ればいいでしょう。
ax.set_yticks(np.arange(0, len(yticks)), labels=yticks)

python

1import numpy as np 2import pandas as pd 3import matplotlib.pyplot as plt 4import seaborn as sns 5 6sns.set() 7#df = pd.read_excel(path) 8 9ax = sns.heatmap(df) 10 11yticks = ['0', '0.1', '0.2', '0.3', '0.4', '0.5', '0.6', '0.7', '0.8', '0.9', '1.0'] 12ax.set_yticks(np.arange(0, len(yticks)), labels=yticks, rotation=0) 13ax.set_xlabel('episode') 14ax.set_ylabel('class') 15 16plt.show()

投稿2022/12/05 11:31

bsdfan

総合スコア4300

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

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

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

また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。

0

python

1yticks=["0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0"] 2sns.heatmap(df,yticklabels=yticks)

↓ 変更

python

1heat_map = sns.heatmap(df) 2heat_map.set_yticks(np.arange(0, df.shape[0], 0.1*df.shape[0]).astype('int')) 3heat_map.set_yticklabels((np.arange(0, df.shape[0], 0.1*df.shape[0])/df.shape[0]).round(1))

で、一番下の「1.0」以外は表示されると思います

投稿2022/12/05 08:36

jbpb0

総合スコア7638

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

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

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

また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.68%

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

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

質問する

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

Python 3.x

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