[英]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.