【问题标题】:Grouping columns in Seaborn barplotsSeaborn 条形图中的分组列
【发布时间】:2021-10-18 14:26:04
【问题描述】:

我有一个由 32 列组成的数据框,我希望使用 Seaborn 生成一个具有 8 个不同组的条形图,每个组由 4​​ 列组成,并且每个组分配一个唯一的颜色。每组 4 列代表特定(8 种不同)实验条件的重复采样(它们是技术复制品),我想展示 8 种实验条件中每一种的采样一致性(以纯视觉方式)。

列结构如下: 索引 | Condition1_replicate1 | Condition1_replicate2 ... Condition8_replicate3 | Condition8_replicate4

任何帮助将不胜感激!

【问题讨论】:

  • 如果您提供一个小而完整的数据示例,那将是很好和有帮助的。

标签: python seaborn bar-chart


【解决方案1】:

您可以创建一个将 8 种颜色重复 4 次的调色板:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df = pd.DataFrame(np.random.rand(100, 32), columns=[f'Cond{i}_r{j}' for i in range(1, 9) for j in range(1, 5)])

palette = np.repeat(sns.color_palette('Set1', 8), 4, axis=0)

fig, ax = plt.subplots(figsize=(12, 3))
sns.barplot(data=df, palette=palette, ax=ax)
ax.set_xticks([])

plt.show()

PS:您可以为调色板创建一个变体,例如

colors = sns.color_palette('Set2', 8)
palette = [color_j for color_i in colors for color_j in sns.dark_palette(color_i, 7)[-4:]]

fig, ax = plt.subplots(figsize=(12, 3))
sns.barplot(data=df, palette=palette, ax=ax)
ax.set_xticks(np.arange(1.5, 4 * 8, 4))
ax.set_xticklabels([f'Condition {i}' for i in range(1, 9)])
plt.show()

【讨论】:

  • 太棒了,这太棒了,超出了我的预期。 xticklabels 行也非常有用。谢谢!
  • 谢谢 - 我是 StackOverflow 的新手 ;)
猜你喜欢
  • 2021-02-06
  • 1970-01-01
  • 2020-09-04
  • 2021-03-01
  • 2016-12-01
  • 1970-01-01
  • 2019-09-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多