如何在同一图形的子图中使用不同的调色板进行绘制?

时间:2019-06-03 23:35:53

标签: matplotlib seaborn

如何在同一图形的子图中使用不同的调色板进行绘制?在下面的示例中,图的生成被延迟。因此,仅最后一个调色板用于生成图。尽管我需要使用不同的调色板生成的子图。

x = np.arange(10)
pal = sns.color_palette("rainbow", 12)
sns.set_palette(pal)

subplot(2, 1, 1)
for i in range(4):
    plot(x, i*np.sin(x))

subplot(2, 1, 2)

pal = sns.color_palette("Set1", 12)
sns.set_palette(pal)

for i in range(4):
    plot(x, i*np.cos(x))

tight_layout()

enter image description here

1 个答案:

答案 0 :(得分:1)

在创建子图之前,您需要先设置调色板 。这是因为颜色循环是轴的属性。轴将在创建时从rcParams中获取当前属性循环程序。因此,set_palette(会更改属性循环程序)需要预先调用。

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

x = np.arange(10)

# First subplot
pal1 = sns.color_palette("rainbow", 12)
sns.set_palette(pal1)

plt.subplot(2, 1, 1)
for i in range(4):
    plt.plot(x, i*np.sin(x))

# Second subplot
pal2 = sns.color_palette("Set1", 12)
sns.set_palette(pal2)

plt.subplot(2, 1, 2)
for i in range(4):
    plt.plot(x, i*np.cos(x))

plt.tight_layout()
plt.show()

enter image description here