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

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

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

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

Q&A

解決済

1回答

1187閲覧

imshowの画像の色を値で指定したい

ria_1965

総合スコア2

Python 3.x

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

0グッド

0クリップ

投稿2023/08/27 02:41

編集2023/08/27 03:49

実現したいこと

imshowの画像の色を値で指定したいです。

前提

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

該当のソースコード

Python

1import numpy as np 2from matplotlib import pyplot as plt 3 4d = np.array([15,15,30,200,30,0,40,90,0]) 5d1 = d.reshape(3, 3) 6fig, ax = plt.subplots() 7im = ax.imshow(d1,cmap="coolwarm") 8plt.colorbar(im)

試したこと

値が0なら 白 value=0 ,color='white'
値が20未満なら 青 value < 20 ,color='cyan'
値が20以上50未満なら 緑 value =>20 & <50 ,color='green'
値が50以上なら 赤 value >50 ,color='red'

を、cmap=""の部分に追加したらよいかと思い、
いろいろ調べてみましたが、よくわかりませんでした。

ネット(https://tech-market.org/matplotlib-cmap/)でしらべると、
「画像のcmapを変更したい場合はplt.imshow()のcmapにカラーマップ名を与えることで変更が可能」
とありました。すでにあるカラーマップだとよいのですが、良いものが見当たりません。
「自分でカラーマップを作成することもできる」(https://disassemble-channel.com/matplotlib-colormap-cmap/)という情報をみつけましたが、数値を色に変換する具体的なコードの書き方について読み取ることができませんでした。

どうぞよろしくお願いいたします。

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

Pythonは 3.10.12 です。

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

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

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

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

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

meg_

2023/08/27 02:53

・コードは「コードの挿入」で記入してください。 > いろいろ調べてみましたが、よくわかりませんでした。 重複回答を避けるために具体的に教えていただけますか?調べたサイトや具体的に「よくわかりませんでした」の内容等。
ria_1965

2023/08/27 06:22

コードは「コードの挿入」に記入することと、重複回答を避けるために、調べたサイトやわからないことの具体的な内容について、質問内容を編集しました。
guest

回答1

0

ベストアンサー

matplotlib.colors.BoundaryNorm — Matplotlib 3.7.2 documentation を利用する場合。

python

1import numpy as np 2from matplotlib import pyplot as plt 3from matplotlib.colors import ListedColormap, BoundaryNorm 4 5d = np.array([15,15,30,200,30,0,40,90,0]) 6d1 = d.reshape(3, 3) 7fig, ax = plt.subplots() 8 9# 10colors = ['white', 'cyan', 'green', 'red'] 11cmap = ListedColormap(colors) 12boundary = np.array([0, 1, 20, 50, np.max(d)]) 13norm = BoundaryNorm(boundary, ncolors=len(colors)) 14im = ax.imshow(d1,cmap=cmap,norm=norm) 15 16plt.colorbar(im, spacing='proportional') 17plt.show()

イメージ説明

投稿2023/08/27 03:52

melian

総合スコア21118

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

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

ria_1965

2023/08/27 04:52

ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問