gpt4 book ai didi

python - 如何使用 pcolormesh 获得对数自定义色标?

转载 作者:行者123 更新时间:2023-12-01 09:09:52 26 4
gpt4 key购买 nike

所以我尝试用 pcolormesh 绘制热图,并且我有带有值的数据。该数据范围为 0-500,但我希望色标本质上是对数的。基本上它应该看起来像这样: enter image description here

热图数据位于 pcolormesh 中使用的 (x,y,data) 中。这是我为此精确比例编写的 cmap:

cdict1 = {
'red': ((0.0, 1.0, 1.0),
(0.16, 237, 237),
(0.24, 205, 205),
(0.32, 153, 153),
(0.40, 83, 83),
(0.48, 50, 50),
(0.56, 50, 50),
(0.64, 5, 5),
(0.72, 5, 5),
(0.80, 10, 10),
(0.88, 44, 44),
(1, 44, 44)),

'green': ((0.0, 1.0, 1.0),
(0.16, 237, 237),
(0.24, 255, 255),
(0.32, 240, 240),
(0.40, 189, 189),
(0.48, 166, 166),
(0.56, 150, 150),
(0.64, 112, 112),
(0.72, 80, 80),
(0.80, 31, 31),
(0.88, 1, 1),
(1, 1, 1)),

'blue': ((0.0, 1.0, 1.0),
(0.16, 237, 237),
(0.24, 205, 205),
(0.32, 178, 178),
(0.40, 159, 159),
(0.48, 150, 150),
(0.56, 180, 180),
(0.64, 176, 176),
(0.72, 140, 140),
(0.80, 150, 150),
(0.88, 70, 70),
(1, 70, 70)),
}
cm_rgb = LinearSegmentedColormap('bgr', cdict1)
cs = m.pcolormesh(x, y, data, vmin=0, vmax=50e-8,shading='flat', cmap=cm_rgb)
tick_levels = [0, 2e-8, 3e-8, 4e-8, 5e-8, 6e-8, 8e-8, 10e-8, 15e-8, 20e-8, 30e-8, 50e-8]
bar = plt.colorbar(cs, orientation='vertical', shrink=0.5)
bar.set_ticks(tick_levels)
plt.show()

当我运行它时,没有颜色显示。没有错误。

基本上,我的问题是,如何将所有这些放在一起,以便我的热图使用我为其设置的自定义比例和刻度?

最佳答案

我不太明白字典是如何产生显示的颜色的。无论如何,仅使用这些颜色的列表似乎要容易得多。

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


x,y = np.meshgrid(np.arange(11), np.arange(11))
data = np.linspace(0,50e-8,100).reshape(10,10)


colors = [(255,255,255),(237,250,194),(205,255,205),
(153,240,178),(83,189,159),(50,166,150),
(50,150,180),(5,112,176),(5,80,140),
(10,31,150),(44,1,70)]

cm_rgb = LinearSegmentedColormap.from_list('', np.array(colors)/255.)
cs = plt.pcolormesh(x, y, data, vmin=0, vmax=50e-8, shading='flat', cmap=cm_rgb)
tick_levels = [0, 2e-8, 3e-8, 4e-8, 5e-8, 6e-8, 8e-8, 10e-8, 15e-8, 20e-8, 30e-8, 50e-8]
bar = plt.colorbar(cs, orientation='vertical', shrink=0.5)
bar.set_ticks(tick_levels)
plt.show()

enter image description here

关于python - 如何使用 pcolormesh 获得对数自定义色标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51741591/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com