当尝试使用seaborn调色板绘制一些数据时,我遇到了一个非常令人沮丧的问题。我的工作流程是对我的数据帧执行groupby操作,并使用以下代码将每个组绘制为自己的曲线:
import seaborn as sns; sns.set_style('whitegrid')
f, (ax1, ax2) = plt.subplots(1, 2, sharey=True, figsize=(16, 6))
inner = d.groupby(['dr_min', 'dr_max'])
n = len(inner)
cmap = sns.color_palette("Blues", n_colors=n)
inner.plot(x='limit_l', y='lccdf', ax=ax1, color=cmap, legend=False)
inner.plot(x='limit_r', y='rcdf', ax=ax2, color=cmap, legend=False)
我期望看到每个groupby参数的曲线,颜色图中有明确的阴影,如下所示:
相反,我的曲线看起来如下,根本没有颜色等级。任何人都可以帮我理解为什么会这样吗?
答案 0 :(得分:2)
可能你想迭代groupby对象来为每一行选择颜色。
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
a = np.tile(np.arange(0,10),5)
b = np.linspace(0,1,len(a))
c = np.repeat(list("ABCDE"), 10)
df = pd.DataFrame({"x":a, "y":b, "c":c})
fig, ax = plt.subplots()
cmap = sns.color_palette("Blues", n_colors=5)
inner = df.groupby(["c"])
for i, (n, gr) in enumerate(inner):
gr.plot(x="x", y="y", ax=ax, color=cmap[i])
plt.show()