- Matplotlib 基础
- Matplotlib - 首页
- Matplotlib - 简介
- Matplotlib - Vs Seaborn
- Matplotlib - 环境设置
- Matplotlib - Anaconda 发行版
- Matplotlib - Jupyter Notebook
- Matplotlib - Pyplot API
- Matplotlib - 简单绘图
- Matplotlib - 保存图形
- Matplotlib - 标记
- Matplotlib - 图形
- Matplotlib - 样式
- Matplotlib - 图例
- Matplotlib - 颜色
- Matplotlib - 色图
- Matplotlib - 色图归一化
- Matplotlib - 选择色图
- Matplotlib - 色标
- Matplotlib - 文本
- Matplotlib - 文本属性
- Matplotlib - 子图标题
- Matplotlib - 图像
- Matplotlib - 图像蒙版
- Matplotlib - 注释
- Matplotlib - 箭头
- Matplotlib - 字体
- Matplotlib - 什么是字体?
- 全局设置字体属性
- Matplotlib - 字体索引
- Matplotlib - 字体属性
- Matplotlib - 刻度
- Matplotlib - 线性和对数刻度
- Matplotlib - 对称对数和 Logit 刻度
- Matplotlib - LaTeX
- Matplotlib - 什么是 LaTeX?
- Matplotlib - LaTeX 用于数学表达式
- Matplotlib - LaTeX 在注释中的文本格式
- Matplotlib - PostScript
- 在注释中启用 LaTeX 渲染
- Matplotlib - 数学表达式
- Matplotlib - 动画
- Matplotlib - 艺术家
- Matplotlib - 使用 Cycler 样式化
- Matplotlib - 路径
- Matplotlib - 路径效果
- Matplotlib - 变换
- Matplotlib - 刻度和刻度标签
- Matplotlib - 弧度刻度
- Matplotlib - 日期刻度
- Matplotlib - 刻度格式化器
- Matplotlib - 刻度定位器
- Matplotlib - 基本单位
- Matplotlib - 自动缩放
- Matplotlib - 反转轴
- Matplotlib - 对数轴
- Matplotlib - Symlog
- Matplotlib - 单位处理
- Matplotlib - 带单位的椭圆
- Matplotlib - 脊柱
- Matplotlib - 轴范围
- Matplotlib - 轴刻度
- Matplotlib - 轴刻度
- Matplotlib - 格式化轴
- Matplotlib - Axes 类
- Matplotlib - 双轴
- Matplotlib - Figure 类
- Matplotlib - 多图
- Matplotlib - 网格
- Matplotlib - 面向对象接口
- Matplotlib - PyLab 模块
- Matplotlib - Subplots() 函数
- Matplotlib - Subplot2grid() 函数
- Matplotlib - 锚定艺术家
- Matplotlib - 手动等值线
- Matplotlib - 坐标报告
- Matplotlib - AGG 过滤器
- Matplotlib - 带状框
- Matplotlib - 填充螺旋
- Matplotlib - Findobj 演示
- Matplotlib - 超链接
- Matplotlib - 图像缩略图
- Matplotlib - 使用关键字绘图
- Matplotlib - 创建徽标
- Matplotlib - 多页 PDF
- Matplotlib - 多处理
- Matplotlib - 打印标准输出
- Matplotlib - 复合路径
- Matplotlib - Sankey 类
- Matplotlib - MRI 与 EEG
- Matplotlib - 样式表
- Matplotlib - 背景颜色
- Matplotlib - Basemap
- Matplotlib 事件处理
- Matplotlib - 事件处理
- Matplotlib - 关闭事件
- Matplotlib - 鼠标移动
- Matplotlib - 点击事件
- Matplotlib - 滚动事件
- Matplotlib - 按键事件
- Matplotlib - 选择事件
- Matplotlib - 透镜
- Matplotlib - 路径编辑器
- Matplotlib - 多边形编辑器
- Matplotlib - 定时器
- Matplotlib - Viewlims
- Matplotlib - 缩放窗口
- Matplotlib 小部件
- Matplotlib - 光标小部件
- Matplotlib - 带注释的光标
- Matplotlib - 按钮小部件
- Matplotlib - 复选框
- Matplotlib - 套索选择器
- Matplotlib - 菜单小部件
- Matplotlib - 鼠标光标
- Matplotlib - 多光标
- Matplotlib - 多边形选择器
- Matplotlib - 单选按钮
- Matplotlib - RangeSlider
- Matplotlib - 矩形选择器
- Matplotlib - 椭圆选择器
- Matplotlib - 滑块小部件
- Matplotlib - 跨度选择器
- Matplotlib - 文本框
- Matplotlib 绘图
- Matplotlib - 条形图
- Matplotlib - 直方图
- Matplotlib - 饼图
- Matplotlib - 散点图
- Matplotlib - 箱线图
- Matplotlib - 小提琴图
- Matplotlib - 等值线图
- Matplotlib - 3D 绘图
- Matplotlib - 3D 等值线
- Matplotlib - 3D 线框图
- Matplotlib - 3D 曲面图
- Matplotlib - Quiver 图
- Matplotlib 有用资源
- Matplotlib - 快速指南
- Matplotlib - 有用资源
- Matplotlib - 讨论
Matplotlib - 色标
色标是绘图中使用的颜色比例尺的可视化表示。它显示了数据中从最小值到最大值的颜色比例尺,帮助我们理解绘图中的颜色变化。
在下图中,您可以看到一个用红色矩形突出显示的简单色标 -
Matplotlib 中的色标
Matplotlib 库提供了一个用于处理色标的工具,包括其创建、放置和自定义。
matplotlib.colorbar 模块负责创建色标,但是可以使用Figure.colorbar() 或其等效的 pyplot 包装器pyplot.colorbar() 函数创建色标。这些函数在内部使用 Colorbar 类以及make_axes_gridspec(用于 GridSpec 定位的轴)或make_axes(用于非 GridSpec 定位的轴)。
并且色标需要是一个“可映射” (即 matplotlib.cm.ScalarMappable) 对象,通常是通过 imshow() 函数生成的 AxesImage。如果您想在没有附加图像的情况下创建色标,则可以使用没有关联数据的 ScalarMappable。
示例 1
这是一个简单的示例,使用ScalarMappable 类创建一个没有附加绘图的水平色标。
import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt # Create a figure and axis for the colorbar fig, ax = plt.subplots(figsize=(6, 1), constrained_layout=True) # Define a colormap and normalization for the colorbar cmap = mpl.cm.cool norm = mpl.colors.Normalize(vmin=5, vmax=10) # Create a ScalarMappable without associated data using the defined cmap and norm scalar_mappable = mpl.cm.ScalarMappable(norm=norm, cmap=cmap) # Add a horizontal colorbar to the figure colorbar = fig.colorbar(scalar_mappable, cax=ax, orientation='horizontal', label='Some Units') # Set the title and display the plot plt.title('Basic Colorbar') plt.show()
输出
执行以上代码后,我们将获得以下输出 -
示例 2
这是另一个示例,使用pyplot.colorbar() 函数和默认参数为绘图创建简单的色标。
import matplotlib.pyplot as plt import numpy as np # Generate sample data data = np.random.random((10, 10)) # Create a plot with an image and a colorbar fig, ax = plt.subplots(figsize=(7,4)) im = ax.imshow(data, cmap='viridis') # Add a colorbar to the right of the image cbar = plt.colorbar(im, ax=ax) # Show the plot plt.show() print('Successfully drawn the colorbar...')
输出
Successfully drawn the colorbar...
自动色标放置
色标的自动放置是一种简单的方法。这确保每个子图都有自己的色标,清楚地指示每个子图中图像数据的定量范围。
示例
此示例演示了多个子图的自动色标放置。
import matplotlib.pyplot as plt import numpy as np # Create a 2x2 subplot grid fig, axs = plt.subplots(1, 2, figsize=(7,3)) cmaps = ['magma', 'coolwarm'] # Add random data with different colormaps to each subplot for col in range(2): ax = axs[col] pcm = ax.pcolormesh(np.random.random((20, 20)) * (col + 1), cmap=cmaps[col]) # Add a colorbar for the each subplots fig.colorbar(pcm, ax=ax, pad=0.03) plt.show() print('Successfully drawn the colorbar...')
输出
Successfully placed the colorbar...
手动色标放置
这种方法允许我们明确确定绘图中色标的位置和外观。当自动放置无法实现所需的布局时,这可能是必要的。
通过创建内嵌轴,可以使用inset_axes() 或add_axes(),然后通过cax 关键字参数将其分配给色标,用户可以获得所需的输出。
示例
这是一个示例,演示了如何在绘图中手动确定色标放置。
import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt # Generate random data points npoints = 1000 x, y = np.random.normal(10, 2, (2, npoints)) # Create a subplot fig, ax = plt.subplots(figsize=(7,4)) # Set title plt.title('Manual Colorbar Placement') # Draw the plot hexbin_artist = ax.hexbin(x, y, gridsize=20, cmap='gray_r', edgecolor='white') # Manually create an inset axes for the colorbar cax = fig.add_axes([0.8, 0.15, 0.05, 0.3]) # Add a colorbar using the hexbin_artist and the manually created inset axes colorbar = fig.colorbar(hexbin_artist, cax=cax) # Display the plot plt.show()
输出
执行以上代码后,我们将获得以下输出 -
自定义色标
色标的外观,包括刻度、刻度标签和标签,可以根据具体需求进行自定义。垂直色标通常在 y 轴上显示这些元素,而水平色标在 x 轴上显示这些元素。ticks 参数用于设置刻度,format 参数有助于格式化可见色标轴上的刻度标签。
示例 1
此示例使用imshow() 方法将数据显示为图像,并将色标水平放置到图像上并指定标签。
import matplotlib.pyplot as plt import numpy as np # Create a subplot fig, ax = plt.subplots(figsize=(7, 4)) # Generate random data data = np.random.normal(size=(250, 250)) data = np.clip(data, -1, 1) # Display the data using imshow with a specified colormap cax = ax.imshow(data, cmap='afmhot') ax.set_title('Horizontal Colorbar with Customizing Tick Labels') # Add a horizontal colorbar and set its orientation and label cbar = fig.colorbar(cax, orientation='horizontal', label='A colorbar label') # Adjust ticks on the colorbar cbar.set_ticks(ticks=[-1, 0, 1]) cbar.set_ticklabels(['Low', 'Medium', 'High']) # Show the plot plt.show()
输出
执行以上代码后,我们将获得以下输出 -
示例 2
此示例演示了如何自定义色标的位置、宽度、颜色、刻度数量、字体大小以及更多属性。
import numpy as np from matplotlib import pyplot as plt # Adjust figure size and autolayout plt.rcParams["figure.figsize"] = [7.00, 3.50] plt.rcParams["figure.autolayout"] = True # Generate random data data = np.random.randn(4, 4) # Plot the data with imshow im = plt.imshow(data, interpolation='nearest', cmap="PuBuGn") # Add colorbar and adjust its position # Decrease colorbar width and shift position to the right clb = plt.colorbar(im, shrink=0.9, pad=0.05) # Set the top label for colorbar clb.ax.set_title('Color Bar Title') # Customize color of ticks clb.ax.set_yticks([0, 1.5, 3, 4.5], labels=["A", "B", "C", "D"]) # Change color and font size of ticks clb.ax.tick_params(labelcolor='red', labelsize=20) plt.show()
输出
执行以上代码后,您将获得以下输出 -