python - 具有两个颜色条的多个散点图

标签 python matplotlib colorbar

我正在尝试绘制一个包含三个散点图的图,每个散点图显示两种数据。我想显示与此数据对应的颜色条(即,分别显示橙色和紫色的阴影)。我知道如何用多个颜色条制作一个图,我知道如何用一个公共(public)颜色条制作多个图,但我不知道如何将多个颜色条放在一个有多个子图的图上。

这里是制作多图的例子:

import numpy as np
import matplotlib.pyplot as plt

fig, axes = plt.subplots(nrows=1, ncols=3)
images =[]
for i in range(3):
    images.append([axes[i].scatter(np.random.random(10), np.random.random(10), c = np.random.random(10), vmin=0, vmax=1, cmap="Purples_r"),

axes[i].scatter(np.random.random(10),np.random.random(10), c = 
np.random.random(10), vmin=0, vmax=1, cmap="Oranges_r")])

plt.show()

更新:添加以下代码会返回两个颜色条:

fig.colorbar(images[0][1], ax=axes, fraction=.05)
fig.colorbar(images[0][2], ax=axes, fraction=.05)

我假设为所有散点图保持固定的通用 vminvmax 值可确保各图之间的比例一致。

最佳答案

如果您想为每个子图添加一个颜色条,请在 for 循环中添加对 fig.colorbar 的调用。如果每个子图中的数据不在同一范围内,这可能很有用。例如,在子图 1 中,它们从 0 到 1,在子图 2 中,它们从 0 到 2,等等。
这里有一个例子:

fig, axes = plt.subplots(nrows=1, ncols=3)
images =[]
for i in range(3):
    images.append([axes[i].scatter(np.random.random(10), np.random.random(10), c =
  (1+i)*np.random.random(10), vmin=0, vmax=1+i, cmap="Purples_r"),

    axes[i].scatter(np.random.random(10),np.random.random(10), c =
  (1+i)*np.random.random(10), vmin=0, vmax=1+i, cmap="Oranges_r")])

    fig.colorbar(images[-1][0], ax=axes[i])
    fig.colorbar(images[-1][1], ax=axes[i])

plt.show()

enter image description here

为了让事情变得更好,最好将每个颜色条放在自己的轴上。

wrl = [1, 4, 1] * 3
fig, axes = plt.subplots(nrows=1, ncols=9, gridspec_kw={'width_ratios': wrl})
images =[]
for i in range(3):
    leftaxpos = i*3
    plotpos = (i*3)+1
    rightaxpos = (i*3)+2

    images.append([axes[plotpos].scatter(np.random.random(10), np.random.random(10), c =
  (1+i)*np.random.random(10), vmin=0, vmax=1+i, cmap="Purples_r"),

    axes[plotpos].scatter(np.random.random(10),np.random.random(10), c =
  (1+i)*np.random.random(10), vmin=0, vmax=1+i, cmap="Oranges_r")])

    fig.colorbar(images[-1][0], cax=axes[leftaxpos])
    fig.colorbar(images[-1][1], cax=axes[rightaxpos])

plt.show()

enter image description here

关于python - 具有两个颜色条的多个散点图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56080777/

相关文章:

python - 稀疏矩阵是否有 numpy.delete() 等效项?

python - 如何用 C 扩展 Python?

python - 在线图中用标记突出显示单个点

python - matplotlib 用非 ascii 和 LaTeX 字符将标题拆分为两行

matplotlib - 颜色之间带有刻度标签的离散颜色条

python - matplotlib 中颜色条刻度标签的旋转

python - 如何为迭代添加的补丁添加颜色条?

python - 多变量回归 statsmodels.api

python - 将模板文件复制到多个目录,根据目录查询模板文件重命名

python - 如何在极坐标图中正确显示颜色条(半圆的等高线图)?