python - 没有合并的堆叠条形图的问题
问题描述
我很清楚我想绘制什么,但我不确定从哪里开始使用 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 的功能会汇集值,使得只能有三种连续的颜色。但是我需要实现图表,以便颜色之间可以有任意数量的切换。
解决方案
imshow
如果您使用 1000 行而不是条形图将数据显示为图像,我想您会更好。将您的数据 (0
或1
)2
放入一个 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)
然后,您可以根据需要调整轴刻度和标签。
推荐阅读
- c# - 无法加载文件或程序集“System.Web.WebPages.Razor, Version=1.0.0.0 或其依赖项之一。该系统找不到指定的文件
- javascript - 如何比较两个 JS 数组并使用更改创建新的 JS 数组
- maven - 从 .bat 文件调用 mvnw.cmd
- asp.net-core - 已被 CORS 策略阻止 - 为什么我在 asp.net 核心中的发布请求时收到此错误?
- javascript - 如果 HTML 上的输入错误,如何显示错误消息
- javascript - 在每台设备上输入和保存笔记
- python - 绘制三角波的幅度谱
- powershell - 在powershell中将对象和数组与条件结合起来
- deployment - 如何通过 SaltStack 中的另一个 SLS 文件将参数传递给 SLS 文件?
- spring-boot - 具有多种形式的网页上的 CSRF 令牌?