画像を等高線図で表すことができる理由は、それが明らかに疑似カラー画像、つまり、完全なRGBカラースペクトルを使用して単一の変数を表す画像であるためです。 等高線図は、色(つまり、Z軸)を決定する単一の変数を持つデータも表すため、画像データを等高線図として表すこともできます。
これが、最初に等高線図を使用することを提案した理由です。(ただし、この質問で実際に求めているものは一般に存在しません。カラー画像には一般にRGBと3つの独立した色があるため、カラー画像を等高線図に変換する一般的に有効な方法はありません。等高線図には1つ(Z軸)しかありません。つまり、これは疑似カラー画像に対してのみ機能します。)
あなたの問題を具体的に解決するには:
1)表示する疑似カラー画像の作成に使用されるz軸データがある場合は、このデータを等高線図で使用します。これが最善の解決策です。
2)zデータがない場合は、画像の色をz値に反転してから、これを等高線図に入れる必要があるため、面倒です。あなたが表示する画像はほぼ確実にカラーマップmatplotlib.cm.jetを使用しており、unubtuがここで言うよりもそれを反転するためのより良い方法を私は見ることができません。
最後に、詳細を機能させるには、等高線図と画像の違いを理解する必要があります。
convert
なぜ機能しないのかのデモ:
ここでは、左から右へのz値のランプを使用して完全なテストケースを実行します。明らかなように、最大だった値が最小になるなどの理由で、z値が完全に台無しになりました。
つまり、目標はそのイチジクです。2マッチ図。4、しかしそれらは非常に異なっています。もちろん、問題は、元のz値のセットにconvert
正しくマップされないことです。jet

import numpy as np
import matplotlib.pyplot as plt
import Image
fig, axs = plt.subplots(4,1)
x = np.repeat(np.linspace(0, 1, 100)[np.newaxis,:], 20, axis=0)
axs[0].imshow(x, cmap=plt.cm.gray)
axs[0].set_title('1: original z-values as grayscale')
d = axs[1].imshow(x, cmap=plt.cm.jet)
axs[1].set_title('2:original z-values as jet')
d.write_png('temp01.png') # write to a file
im = Image.open('temp01.png').convert('L') # use 'convert' on image to get grayscale
data = np.asarray(im) # make image into numpy data
axs[2].imshow(data, cmap=plt.cm.gray)
axs[2].set_title("3: 'convert' applied to jet image")
img = Image.open('temp01.png').convert('L')
z = np.asarray(img)
mydata = z[::1,::1] # I don't know what this is here for
axs[3].imshow(mydata,interpolation='nearest',cmap=plt.cm.jet)
axs[3].set_title("4: the code that Jake French suggests")
plt.show()
しかし、私が上で示唆したように、これを正しく行うことはそれほど難しくありません。