您可以创建一个将 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()