簡體   English   中英

自定義Matplotlib色彩圖-像pgfplots

[英]Custom Matplotlib colourmap - like pgfplots

是否可以從pgfplots獲取藍色,黃色,紅色的顏色pgfplots ,如本示例中的https://tex.stackexchange.com/questions/39145/scaling-colormaps-with-pgfplots ,在matplotlib

我看了一下如何在matplotlib中定義自定義顏色圖,但這似乎非常困難。

定義自定義cmap是解決方法。 並不是那么困難,但是您必須確保您了解color dict中的所有值。

對於每種顏色,您可以指定三列值。 第一列是發生顏色的位置,0為第一列,最后為1。 由於需要三種顏色,因此存在三個均勻間隔的位置,分別定義為0、0.5和1.0。

你要:

0.0:藍色

0.5:黃色

1.0:紅色

第二列定義位置位置“至”的顏色,第三列定義位置位置“自/之后”的顏色。 如果您希望顏色逐漸褪色,則應保持相同。 指定不同的顏色可使顏色圖在某個位置后突然出現“跳躍”。

要在位置0.0處獲得藍色,請將紅色和綠色設置為0,將藍色設置為1。要在位置0.5處獲得黃色,請將紅色和綠色設置為1,將藍色設置為零。 等等...

import matplotlib as mpl
from matplotlib import pyplot as plt
import numpy as np

cdict = {'red': ((0.0, 0.0, 0.0),
                 (0.5, 1.0, 1.0),
                 (1.0, 1.0, 1.0)),
        'green':((0.0, 0.0, 0.0),
                 (0.5, 1.0, 1.0),
                 (1.0, 0.0, 0.0)),
         'blue':((0.0, 1.0, 1.0),
                 (0.5, 0.0, 0.0),
                 (1.0, 0.0, 0.0))}

custom_cmap = mpl.colors.LinearSegmentedColormap('mymap', cdict, 256)

plt.imshow(np.arange(36).reshape(6,6), cmap=custom_cmap, interpolation='none')

在此處輸入圖片說明

@RutgerKassies很好地解釋了線性色彩圖通常如何在matplotlib中工作。 當你需要與不平的過渡或“硬”截止色彩映射表,你需要指定完整的dict的閾值。

但是,對於簡單的顏色圖,在顏色之間具有均勻的過渡,有一個方便的“工廠功能”: LinearSegmentedColormap.from_list (實際上,只要它們不是“硬”過渡,您甚至可以使用不均勻的過渡。)

例如(竊取Rutger的示例),我們可以這樣:

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

cmap = LinearSegmentedColormap.from_list('mymap', ['blue', 'yellow', 'red'])

plt.imshow(np.arange(36).reshape(6,6), cmap=cmap, interpolation='none')
plt.show()

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM