簡體   English   中英

如何更具體地繪制 seaborn 線圖

[英]How to graph a seaborn lineplot more specifically

給定一個質量 DataFrame df

year        count
1980        -23
1980        -4
1981        10
1982        0
1982        4
...
2007        27
2008        0
2008        0
2009        -7
2009        5

值首先按year排序,然后是count (顯示的值是任意改變的)

我想想象一下隨着year的增加, count如何分布不同,這可以通過百分位數 plot 最有效地顯示。 但是,由於我的數據是在 DataFrame 中給出的,我認為更可行(坦率地說,更簡單)的方法是使用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 個百分位梯度,從這個鏈接復制: Using percentiles of a timeseries to set color gradient in Python's matplotlib

在此處輸入圖像描述

我想知道是否有辦法使用seaborn.lineplot來實現如此詳細的繪圖,如果沒有,是否有辦法從pandas ZBA834BA059A9A379459C112E457 數據中做到這一點

一旦您生成了第一個置信區間或僅生成直線,您可以使用matplotlib ,如本文所示創建多個置信區間。

另一個選項是 plot 使用sns.lineplot在同一個數字上,但我認為 seaborn 不適合這個。 以數據集flights為例,首先我們 plot 中線或平均線:

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]})

給出這樣的東西:

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM