b_k*_*man 1 python plot matplotlib pandas seaborn
尝试使用 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)
Run Code Online (Sandbox Code Playgroud)
我希望看到我的每个 groupby 参数的曲线,从颜色图中可以看到清晰的阴影,如下所示:

相反,我的曲线如下所示,根本没有颜色等级。谁能帮助我理解为什么会发生这种情况?
可能您想遍历 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()
Run Code Online (Sandbox Code Playgroud)