我有一个元组列表,如下所示:
[(7, 7, 57, 192), (7, 7, 57, 192), (7, 7, 57, 192), (7, 7, 57, 192), (7, 7, 52, 192), (7, 7, 52, 192)]
我想为元组中的所有值创建堆叠的直方图。对于这种情况,将有4种直方图颜色(对应于元组中的每个位置),并且x轴将表示该特定索引中每个数字的出现频率。例如,
如何使用seaborn来执行此操作,而不必为这四个元组位置创建单独的列表,也不必创建熊猫数据框?
您可以创建从最后一种颜色循环到第一种颜色的直方图:
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
data = [(7, 7, 57, 192), (7, 7, 57, 192), (7, 7, 57, 192), (7, 7, 57, 192), (7, 7, 52, 192), (7, 7, 52, 192)]
sns.set()
for i, color in enumerate(['red', 'blue', 'green', 'purple'][::-1]):
sns.histplot([di for d in data for di in d[:4-i]], bins=np.arange(-0.5, 200), color=color)
plt.show()
PS:为了使代码更独立于元组的长度,可以从颜色图中检索颜色:
n = len(data[0])
colors = plt.cm.rainbow(np.linspace(0, 1, n))
for i, color in enumerate(colors):
sns.histplot([di for d in data for di in d[:n - i]], bins=np.arange(-0.5, 200), color=color)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句