Python 如何更具体地绘制seaborn线型图

Python 如何更具体地绘制seaborn线型图,python,pandas,seaborn,Python,Pandas,Seaborn,给定一个海量数据帧df: year count 1980 -23 1980 -4 1981 10 1982 0 1982 4 ... 2007 27 2008 0 2008 0 2009 -7 2009 5 值首先按年份排序,然后按计数排序。(显示的值可任意更改) 我想想象一下计数随着年份的增加如何以不同的方式分布,这可以通过百分位图最有效地

给定一个海量数据帧
df

year        count
1980        -23
1980        -4
1981        10
1982        0
1982        4
...
2007        27
2008        0
2008        0
2009        -7
2009        5
值首先按
年份
排序,然后按
计数
排序。(显示的值可任意更改)

我想想象一下
计数
随着
年份
的增加如何以不同的方式分布,这可以通过百分位图最有效地显示出来。然而,由于我的数据是在一个数据框中给出的,所以我认为一种更可行(而且坦率地说,更简单)的方法是使用
seaborn.lineplot

import matplotlib.pyplot as plt
import seaborn as sns

fig, ax = plt.subplots(figsize=[16,12])

plt.axhline(y=0, color='black', linestyle='dotted')
sns.lineplot(x="year", y="count", ax=ax, data=df, color='red')
返回:

这张图有一定的用途,尽管我希望显示的变量比单个百分位梯度要多。(一个很好的例子是下面一个带有10%梯度的图,从这个链接复制:)


我想知道是否有一种方法可以使用
seaborn.lineplot
实现如此详细的图形绘制,如果没有,是否有一种方法可以从
pandas
数据帧数据中实现。

一旦生成了第一个置信区间或仅仅是直线,就可以使用matplotlib,如图所示,创建多个置信区间

另一个选项是使用
sns.lineplot
在同一个图形上绘图,尽管我认为seaborn不适合这样做。以数据集
flights
为例,首先绘制中值线或平均线:

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

flights = sns.load_dataset("flights")
fig,ax = plt.subplots(1,1)

sns.lineplot(data=flights, x="year", y="passengers",ax=ax,ci=None,color="black")
然后我们设置一个调色板,并继续添加没有线条的条带(设置linestyle=''):

给出如下内容:

cm = sns.color_palette("Blues",9)

for ix,ci in enumerate(range(10,90,10)):
    sns.lineplot(data=flights, x="year", y="passengers",
                 ci = ci,
                 ax=ax,linestyle='',
                 hue = ci,palette={ci:cm[ix]})