在Matplotlib中设置与特定数据范围相对应的离散色彩图

Han Zhengzu

一些背景

我有一个形状为(50,50)的二维数组,数据值的范围是-40〜40。
但是我想在三个数据范围[<0],[0,20], [> 20]

然后,我需要生成与这三个部分相对应的颜色图。

我现在有一些想法

## ratio is the original 2-d array
binlabel = np.zeros_like(ratio)
binlabel[ratio<0] = 1
binlabel[(ratio>0)&(ratio<20)] = 2
binlabel[ratio>20] = 3

def discrete_cmap(N, base_cmap=None):
    base = plt.cm.get_cmap(base_cmap)
    color_list = base(np.linspace(0, 1, N))
    cmap_name = base.name + str(N)
    return base.from_list(cmap_name, color_list, N)

fig  = plt.figure()
ax = plt.gca()
plt.pcolormesh(binlabel, cmap = discrete_cmap(3, 'jet'))
divider = make_axes_locatable(ax)
cax = divider.append_axes("bottom", size="4%", pad=0.45)
cbar = plt.colorbar(ratio_plot, cax=cax, orientation="horizontal")
labels = [1.35,2,2.65]
loc    = labels
cbar.set_ticks(loc)
cbar.ax.set_xticklabels(['< 0', '0~20', '>20']) 

有没有更好的办法?任何建议,将不胜感激。

小手指

使用ListedColormapBoundaryNorm对于其他问题有多种答案,但这是替代方法。我已经忽略了颜色栏的位置,因为这与您的问题无关。

您可以binlabel使用调用替换您的计算,np.digitize()discrete_cmap()使用的lut参数替换您的函数get_cmap()此外,我发现将颜色范围放置在索引之间的.5中点处比将比例标度缩放到奇数的尴尬分数更容易:

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

ratio = np.random.random((50,50)) * 50.0 - 20.0

fig2, ax2 = plt.subplots(figsize=(5,5))

# Turn the data into an array of N bin indexes (i.e., 0, 1 and 2).
bounds = [0,20]
iratio = np.digitize(ratio.flat,bounds).reshape(ratio.shape)

# Create a colormap containing N colors and a Normalizer that defines where 
# the boundaries of the colors should be relative to the indexes (i.e., -0.5, 
# 0.5, 1.5, 2.5).
cmap = cm.get_cmap("jet",lut=len(bounds)+1)
cmap_bounds = np.arange(len(bounds)+2) - 0.5
norm = mcol.BoundaryNorm(cmap_bounds,cmap.N)

# Plot using the colormap and the Normalizer.
ratio_plot = plt.pcolormesh(iratio,cmap=cmap,norm=norm)
cbar = plt.colorbar(ratio_plot,ticks=[0,1,2],orientation="horizontal")
cbar.set_ticklabels(["< 0","0~20",">20"])

离散色条示例

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

色彩图-Python / Matplotlib

来自分类Dev

离散色彩图无法正常工作?

来自分类Dev

离散色彩图无法正常工作?

来自分类Dev

非线性色彩图,matplotlib

来自分类Dev

Matplotlib的非线性色彩图

来自分类Dev

非线性色彩图,matplotlib

来自分类Dev

带有离散色彩图的Python 2-D直方图

来自分类Dev

带有离散色彩图的Python 2-D直方图

来自分类Dev

matplotlib 中的离散数据图

来自分类Dev

如何在Datepicker PHP中设置与程序周期相对应的日期范围

来自分类Dev

matplotlib有什么好的收敛色彩图

来自分类Dev

Matplotlib:如何在Streamplot中提高色彩图/线宽质量?

来自分类Dev

自定义Matplotlib色彩图-像pgfplots

来自分类Dev

如何使用pyqt在场景中输出色彩图?

来自分类Dev

如何在python中从线性分段色彩图创建色彩条?

来自分类Dev

设置颜色条以显示matplotlib中数据范围之外的值

来自分类Dev

过滤与Java中特定列值相对应的行

来自分类Dev

如何从nodejs中的mongodb获取与问题相对应的特定字段

来自分类Dev

在Matlab中绘制与精确数据点相对应的轮廓

来自分类Dev

R:用特定数据范围的平均值替换数据框中的某个值

来自分类Dev

如何在栅格数据集上添加新的色彩图?

来自分类Dev

如何在 R 中为特定数据项的均值、SD 和范围创建表?

来自分类Dev

从数据数组中删除特定数据

来自分类Dev

如何在R中的大文件中查找与特定日期相对应的UNIX时间

来自分类Dev

复制与搜索数据相对应的行

来自分类Dev

matplotlib,pyplot:特定数据值的自定义颜色

来自分类Dev

matplotlib,pyplot:特定数据值的自定义颜色

来自分类Dev

Solr索引中的用户特定数据

来自分类Dev

如何保护Hadoop中的特定数据

Related 相关文章

热门标签

归档