python可视化 matplotlib画图使用colorbar工具自定义颜色

本文介绍如何使用Matplotlib库中的ColorbarBase类来自定义colorbar,包括设置位置、颜色映射、范围及延伸方向等参数,实现独立于现有图表的自定义颜色条。

python matplotlib画图使用colorbar工具自定义颜色

colorbar(draw colorbar without any mapple/plot)

自定义colorbar可以画出任何自己想要的colorbar,自由自在、不受约束,不依赖于任何已有的图(plot/mappable)。这里使用的是mpl.colorbar.ColorbarBase类,而colorbar类必须依赖于已有的图。

参数可以参考下面的描述->matplotlib

class matplotlib.colorbar.ColorbarBase(ax, cmap=None, norm=None, alpha=None, values=None, boundaries=None, orientation=‘vertical’, ticklocation=‘auto’, extend=‘neither’, spacing=‘uniform’, ticks=None, format=None, drawedges=False, filled=True, extendfrac=None, extendrect=False, label=’’)[source]
参数简单描述

ax :可用于设置colorbar的位置、长、宽
norm :用于规范化–设置颜色条最大最小值
cmap:颜色(可参考本篇博文的最后部分——推荐色带与自定义色带)
boundaries:要想使用extend,在norm之外,必须要有两个额外的boundaries
orientation:colorbar方向,躺平or垂直
extend:延伸方向(在norm之外colorbar可延伸)
ticks:自定义各段的tick(记号)

给一个例子,首先定义一下横纵坐标的名称,以及df_int:

labels_int = ['A', 'B', 'C', 'D']
variables_int = ['A', 'B', 'C', 'D']

# x_normed_int 可以是一个4*4的数组,经过归一化的
df_int = pd.DataFrame(, columns=variables_int, index=labels_int)

接下来就是画图了:

fig = plt.figure()
    ax = fig.add_subplot(111)
    cax = ax.matshow(df, interpolation='nearest', cmap='GnBu')
    fig.colorbar(cax)

    tick_spacing = 1
    ax.xaxis.set_major_locator(ticker.MultipleLocator(tick_spacing))
    ax.yaxis.set_major_locator(ticker.MultipleLocator(tick_spacing))

    ax.set_xticklabels([''] + list(df.columns))
    ax.set_yticklabels([''] + list(df.index))
    plt.show()

其中:

cax = ax.matshow(df, interpolation='nearest', cmap='GnBu')

可以通过cmap修改,得到不同的颜色带

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

最终可以看到结果如下图:
在这里插入图片描述

### Python Matplotlib Colorbar 自定义颜色设置 在 Python 中,Matplotlib 提供了强大的功能来自定义 `colorbar` 的颜色。以下是关于如何通过自定义颜色列表创建 `colorbar` 并将其应用于图像的具体方法。 #### 使用 LinearSegmentedColormap 定义自定义颜色映射 可以通过 `LinearSegmentedColormap.from_list()` 方法来定义一组离散的颜色,并生成一个新的颜色映射对象[^1]: ```python import numpy as np import matplotlib.pyplot as plt from matplotlib.colors import LinearSegmentedColormap # 定义自定义颜色列表 custom_colors = ["blue", "green", "yellow", "orange", "red"] # 创建线性分段颜色映射 cmap_custom = LinearSegmentedColormap.from_list("my_colormap", custom_colors) # 随机数据用于绘图 data = np.random.rand(10, 10) # 创建图形和子图 fig, ax = plt.subplots() # 绘制热力图并应用自定义颜色映射 heatmap = ax.imshow(data, cmap=cmap_custom) # 添加 colorbar 轴对象 cax = fig.add_axes([0.92, 0.1, 0.02, ax.get_position().height]) # 创建 colorbar colorbar = fig.colorbar(heatmap, cax=cax) plt.show() ``` 上述代码展示了如何使用指定的颜色列表 `"blue", "green", "yellow", "orange", "red"` 来构建一个名为 `my_colormap` 的新颜色映射[^3]。 --- #### 设置离散颜色区间 如果希望 `colorbar` 表现为离散的颜色区间而非连续渐变,则可以结合 `BoundaryNorm` 和 `ListedColormap` 实现这一效果: ```python import numpy as np import matplotlib.pyplot as plt from matplotlib.colors import BoundaryNorm, ListedColormap # 数据范围划分界限 bounds = [0, 0.25, 0.5, 0.75, 1] # 定义对应区间的颜色 colors_discrete = ['blue', 'green', 'yellow', 'red'] # 构建离散颜色映射 cmap_discrete = ListedColormap(colors_discrete) norm = BoundaryNorm(bounds, len(colors_discrete)) # 随机数据 data = np.random.rand(10, 10) # 图形和子图 fig, ax = plt.subplots() # 应用离散颜色映射 heatmap = ax.imshow(data, cmap=cmap_discrete, norm=norm) # 添加 colorbar 轴对象 cax = fig.add_axes([0.92, 0.1, 0.02, ax.get_position().height]) # 创建带有边界标记的 colorbar colorbar = fig.colorbar( plt.cm.ScalarMappable(cmap=cmap_discrete, norm=norm), cax=cax, boundaries=bounds, ticks=bounds ) plt.show() ``` 此部分实现了具有明确边界的离散颜色区域显示方式。 --- #### 单独绘制独立的 Colorbar (无关联图像) 有时可能仅需展示一个独立的 `colorbar`,而不与任何实际的数据可视化绑定。这也可以轻松完成: ```python import matplotlib.pyplot as plt from matplotlib.colors import Normalize from matplotlib.cm import ScalarMappable # 定义自定义颜色列表 custom_colors = ["purple", "cyan", "magenta", "lime"] cmap_independent = LinearSegmentedColormap.from_list("indep_colormap", custom_colors) # 归一化器 norm = Normalize(vmin=0, vmax=len(custom_colors)-1) # 创建 figure 对象 fig = plt.figure(figsize=(2, 6)) ax = fig.add_axes([0.05, 0.05, 0.2, 0.9]) # 绘制独立 colorbar cb = fig.colorbar( ScalarMappable(norm=norm, cmap=cmap_independent), cax=ax, orientation="vertical" ) plt.show() ``` 这段代码演示了一个不依赖于具体图像而存在的独立 `colorbar`。 --- #### 总结 以上介绍了三种主要场景下的 `colorbar` 自定义方法: 1. **连续颜色映射**:利用 `LinearSegmentedColormap.from_list()` 定义平滑过渡的颜色条。 2. **离散颜色分区**:借助 `ListedColormap` 和 `BoundaryNorm` 创造固定间隔的颜色区块。 3. **独立 colorbar 展示**:无需关联到特定图像即可呈现色彩梯度。 这些技术能够满足大多数情况下对于个性化视觉表达的需求。 ---
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彭伟_02

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值