60

CMRmap などの matplotlib のカラーマップを使用したいと思います。しかし、最初に「黒」の色を使い、最後に「白」の色を使いたくありません。中間色を使用してデータをプロットすることに興味があります。人々はそれをかなり頻繁に使用していると思いますが、インターネットで検索していて、簡単な解決策を見つけることができませんでした. 誰かが解決策を提案してくれれば幸いです。

4

5 に答える 5

91

staticmethod colors.LinearSegmentedColormap.from_listを使用して、新しい LinearSegmentedColormap を作成できます。以下では、元のカラーマップを 0.2 から 0.8 の間の 100 ポイントでサンプリングします。

cmap(np.linspace(0.2, 0.8, 100))

これらの色を使用して、新しいカラーマップを生成します。

import matplotlib.pyplot as plt
import matplotlib.colors as colors
import numpy as np

def truncate_colormap(cmap, minval=0.0, maxval=1.0, n=100):
    new_cmap = colors.LinearSegmentedColormap.from_list(
        'trunc({n},{a:.2f},{b:.2f})'.format(n=cmap.name, a=minval, b=maxval),
        cmap(np.linspace(minval, maxval, n)))
    return new_cmap

arr = np.linspace(0, 50, 100).reshape((10, 10))
fig, ax = plt.subplots(ncols=2)

cmap = plt.get_cmap('jet')
new_cmap = truncate_colormap(cmap, 0.2, 0.8)
ax[0].imshow(arr, interpolation='nearest', cmap=cmap)
ax[1].imshow(arr, interpolation='nearest', cmap=new_cmap)
plt.show()

ここに画像の説明を入力

左側のプロットは、元のカラーマップ (この例ではjet) を使用したイメージを示しています。右側のプロットは、 を使用した同じイメージを示していnew_cmapます。

于 2013-09-20T21:59:41.433 に答える