繁体   English   中英

Python/Matplotlib - 为同一图形上的多个散点图设置颜色条

[英]Python/Matplotlib - Set Colorbar for multiple scatter plots on same figure

我正在使用 Python 和 Matplotlib 向图形添加可变数量的散点图。 每个散点图都是一个系列,我想通过它们的序列索引号为每个散点轨迹的点着色。 但是,由于我的序列长度不同,我希望所有序列都有 1 个一致的颜色条。

我可以跟踪最小和最大序列长度。 但是我如何使用这些信息来配置颜色条来代表这个完整的范围呢?

从问题来看,尚不完全清楚数据的样子。 这是一个使用 4 个不同长度系列的示例,所有系列的索引均为0,1,2,3,... 散点图绘制索引与值的关系,并使用完整的颜色范围为每个系列着色。

建议是为每个系列添加一个颜色条,前提是数量不多。 每个颜色条都有一个标题,并根据用于该系列的范围显示刻度。 使颜色条(第一个除外)非常窄使它们看起来像一个额外的斧头。

import numpy as np
import pandas as pd
from matplotlib import pyplot as plt

N = 4
series_to_plot = [pd.Series(np.random.uniform(i, i + 0.8, np.random.randint(50, 400))) for i in range(1, N + 1)]
names = [f'data{i}' for i in range(1, N + 1)]

fig, ax = plt.subplots(figsize=(12, 5))
for ind, (ser, name) in enumerate(zip(series_to_plot, names)):
    scat = ax.scatter(ser.index, ser, c=ser.index, s=1, cmap='plasma')
    cax = fig.add_axes(
        [1 - (N - ind) * 0.05, 0.1, 0.01 if ind == 0 else 0.002, 0.75])  # left, bottom, width, height, where 1,1 is top right of the fig
    cbar = fig.colorbar(scat, cax=cax)
    cax.set_title(name)

plt.subplots_adjust(right=0.97 - N * 0.05)  # make room for the colorbars
plt.show()

示例图

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM