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

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

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

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Matplotlib

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

Python

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

Q&A

解決済

1回答

8834閲覧

Pythonでヒートマップを並べる方法について

Kinsho

総合スコア18

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Matplotlib

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

Python

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

0グッド

0クリップ

投稿2020/10/14 02:02

編集2020/10/14 02:37

前提・実現したいこと

seabornで作ったヒートマップをこちらの記事のように並べたいと思います.

元となるcsvデータはこのような「outputi.csv(i=1~10)」というものです.(例)output0.csv

しかしi=0~9の10枚について並べようとしてfor i in range( num_figure):とするとValueError: num must be 1 <= num <= 10, not 0と返されてしまってどうすべきか分かりません.

また元のデータ名を「t=ivxvy.csv(iを0から100おきに10個並べる)」(つまりt=0vxvy.csv,t=100vxvy.csv,t=200vxvy.csv,...みたいな感じです)としても同様のことができるようにしたいです.

次に、10個並べるように実行したときに下の画像のように1つ1つの画像がつぶれてしまいます.
イメージ説明
出力のイメージとしてはネットの拾い物ですがこんな感じに全部正方形になってほしいです.
イメージ説明

10個のヒートマップの横に「何色がどの程度の数に対応するのか」といったバーもつけたいなと思います。

よろしくお願いします.

該当のソースコード

Python

1import seaborn as sns 2import pandas as pd 3import numpy as np 4import matplotlib.pyplot as plt 5 6 7num_figure =10 8 9fig = plt.figure(figsize=(10.0, 10.0)) 10for i in range(1, num_figure+1): 11 df = pd.read_csv('output{}.csv'.format(i),index_col=0) 12 df = df.iloc[20:60, 20:60] 13 ax = fig.add_subplot(2, 5, i) 14 sns.heatmap(df, cbar=False, cmap='CMRmap_r',xticklabels=3,yticklabels=3) 15 ax.set_title("t={}".format(i)) 16 plt.xlabel("vx") 17 plt.ylabel("vy") 18plt.tight_layout() 19fig.suptitle('particle density') 20plt.savefig('heatmaps.png') 21plt.show() 22

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

Anacondaは本日最新にしました

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

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

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

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

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

meg_

2020/10/14 02:38

・エラーメッセージは全文掲載してください。 ・pythonのバージョン、モジュールのバージョンは 何ですか?
guest

回答1

0

ベストアンサー

フィギュアを設定して、その中に作画領域サブプロットを定義しましょう
そして、どのサブプロットに作画するかを指定します。

# 基本領域フィギュアの中に作画領域サブプロットを2行2列設定 # 基本領域の大きさは10x8、X軸・Y軸の単位は共有する fig, axes = plt.subplots(2, 2, figsize=(10, 8), sharex=True, sharey=True)
import matplotlib.pyplot as plt import seaborn as sns import pandas as pd fig, axes = plt.subplots(2, 2, figsize=(10, 8), sharex=True, sharey=True) data = pd.read_csv('0vxvy.csv', index_col=0) data = data.iloc[20:60, 20:60] # まわりの範囲を省略 # axに作画するサブプロットを指定する(左上は[0, 0]、右下が[1, 1]になります) sns.heatmap(data, ax=axes[0, 0], cmap='Oranges'); sns.heatmap(data, ax=axes[0, 1], cmap='Greens'); sns.heatmap(data, ax=axes[1, 0], cmap='Purples'); sns.heatmap(data, ax=axes[1, 1], cmap='Reds');

イメージ説明

(疑問)真ん中につく0は何だろう?

投稿2020/10/14 12:29

編集2020/10/14 12:31
technocore

総合スコア7337

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

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

Kinsho

2020/10/15 01:10

こちらを参考にさせていただいたらできました! ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問