【问题标题】:Trouble with Stacked bar graph without pooling没有合并的堆叠条形图的问题
【发布时间】:2021-04-26 12:28:15
【问题描述】:

我很清楚自己想要绘制什么,但我不确定从哪里开始使用 matplotlib/seaborn。

我有大约 999 行 不相等 0、1 和 2 行。以下是其中一行的示例:

[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1]

我想制作一个水平图,其中每个数字都映射到某个设定单位长度的颜色。

这看起来像一个堆积条形图。但我相信 plt.bar 的功能会汇集值,使得只能有三种连续的颜色。但是我需要实现图表,以便颜色之间可以有任意数量的切换。

【问题讨论】:

    标签: python matplotlib seaborn data-science bioinformatics


    【解决方案1】:

    如果您使用imshow 将数据显示为图像而不是条形图,我想您最好使用 1000 行。将您的数据(012)放入 999 行和与最长序列一样多的列中,使用 -1 初始化该数组。

    示例只有 100 行以提高可读性:

    import matplotlib.pyplot as plt
    import numpy as np
    
    # generate some sample data
    n, m = 10, 20
    a = np.random.randint(0, 3, (n,m))
    s = np.random.randint(int(m/2), m, n)
    for i in range(n):
        a[i,s[i]:] = -1
    
    # show them as image
    cmap = plt.matplotlib.colors.ListedColormap(['w', 'r', 'lime', 'b'])
    plt.imshow(a, cmap=cmap)
    

    然后您可以根据需要调整轴刻度和标签。

    【讨论】:

    • 我没想到 Stack Overflow 上会有一场迷幻之旅,但我们来了。
    猜你喜欢
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-31
    • 1970-01-01
    • 2022-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多