Seaborn第三章:帶有誤差範圍的時間序列圖

来源:https://www.cnblogs.com/hznudmh/archive/2022/09/21/16717000.html
-Advertisement-
Play Games

案例 學習網址:https://seaborn.pydata.org/examples/errorband_lineplots.html import seaborn as sns import pandas as pd sns.set_theme(style="darkgrid") # 導入數據 ...


目錄

案例

學習網址:https://seaborn.pydata.org/examples/errorband_lineplots.html

import seaborn as sns
import pandas as pd
sns.set_theme(style="darkgrid")

# 導入數據
fmri = pd.read_csv("../../seaborn-data-master/fmri.csv")

# 查看數據
fmri.head()
subject timepoint event region signal
0 s13 18 stim parietal -0.017552
1 s5 14 stim parietal -0.080883
2 s12 18 stim parietal -0.081033
3 s11 18 stim parietal -0.046134
4 s10 18 stim parietal -0.037970
# 畫有誤差錯誤帶的時序圖
sns.lineplot(
    x = "timepoint", y = 'signal',
    hue = 'region', style = 'event',
    data = fmri
)

sns.lineplot() 的案例

example 1

# 導入數據
import pandas as pd
import seaborn as sns
flights = pd.read_csv("../../seaborn-data-master/flights.csv") # 10年中
flights.head()
year month passengers
0 1949 January
1 1949 February
2 1949 March
3 1949 April
4 1949 May
may_flights = flights.query("month == 'May'")
# may_flights = flights.loc[flights["month"] == 'May'] 也行
print(may_flights)
sns.lineplot(data = may_flights, x = 'year', y = 'passengers')
[out]:
       year month  passengers
  4    1949   May         121
  16   1950   May         125
  28   1951   May         172
  40   1952   May         183
  52   1953   May         229
  64   1954   May         234
  76   1955   May         270
  88   1956   May         318
  100  1957   May         355
  112  1958   May         363
  124  1959   May         420
  136  1960   May         472

example 2

換一種形式處理數據

flights_wide = flights.pivot("year", "month", "passengers")
'''
    參數解讀:
        year : 指定每一行的輸出內容
        month : 指定每一列的輸出內容
        passengers : 指定輸出的內容
'''
flights_wide.head()
month April August December February January July June March May November October September
year
1949 129 148 118 118 112 148 135 132 121 104 119 136
1950 135 170 140 126 115 170 149 141 125 114 133 158
1951 163 199 166 150 145 199 178 178 172 146 162 184
1952 181 242 194 180 171 230 218 193 183 172 191 209
1953 235 272 201 196 196 264 243 236 229 180 211 237
sns.lineplot(data = flights_wide['May'])

example 3

## 可以輸出多列的線型圖
import matplotlib.pyplot as plt
plt.figure(figsize=(8, 6)) # 為了讓圖例不覆蓋曲線
sns.lineplot(data = flights_wide)
plt.legend(loc='upper left') # 設置圖例的位置

example 4

# 繪製每年的平均值以及95%的置信區間
sns.lineplot(data = flights, x = 'year', y = 'passengers')

example 5

# 可以對不同分組應用不同的顏色:hue
sns.lineplot(data = flights, x = 'year', y = 'passengers', hue = 'month') # 用不同的顏色區分不同的月份

example 6

# 可以通過調節 style 參數更改線條的類型
plt.figure(figsize=(8,6))
sns.lineplot(data = flights, x = 'year', y = 'passengers', hue = 'month', style = 'month')
plt.legend(loc='upper left')

可以發現顏色圖例和example3一致(除了月份順序)

example 7

sns.lineplot(data = flights, x = 'passengers', y = 'year', orient = 'y')
# xy軸互換,此時 1個 y 對應多個 x ,如果直接畫的畫有點類似於 迪利克雷函數 那種 圖像形式,
# 而加上 orient = 'y' 就能得到每一年的平均值,並畫出95%的置信區間

註:使用 orient 參數前需要將seaborn版本升級到 0.12.0

# 查看 seaborn 版本
sns.__version__
'0.12.0'

example 8

## 載入數據
fmri = pd.read_csv("../../seaborn-data-master/fmri.csv")
fmri.head()
subject timepoint event region signal
0 s13 18 stim parietal
1 s5 14 stim parietal
2 s12 18 stim parietal
3 s11 18 stim parietal
4 s10 18 stim parietal
sns.lineplot(data = fmri, x = 'timepoint', y = 'signal', hue = 'event') # 以 event 為依據分類

example 9

# 接著 example 8 的例子,用不同的色調區分 region,用不同的線條類型區分 event
sns.lineplot(data=fmri, x='timepoint', y='signal', hue='region', style='event')

example 10

# 可以用 markers = True 進行描點
sns.lineplot(
    data=fmri,
    x='timepoint',
    y='signal',
    hue='event',
    style='event',
    markers=True, # 不同類別線條上的描點進行區別
    dashes=False # 不同類別線條的形狀不進行區別
)

example 11

# 這次利用誤差線而不是誤差寬度
sns.lineplot(
    data = fmri,
    x='timepoint',
    y='signal',
    hue='event',
    err_style='bars',
    errorbar=('se',2) # se代表樣本標準誤差
)

# errorbar可選參數有 'ci' 'se' 'sd' 'pi'
# ci 是顯著性檢驗的補充,反映的是真實的均值或者均值區別的範圍,即置信區間
# se 標準誤差(Standard Error)
# sd 樣本標準差

example 12

# 使用 units 參數進行分組
sns.lineplot(
    data = fmri.query("region == 'frontal'"),
    x='timepoint',
    y='signal',
    hue='event',
    units='subject',
    estimator=None, #用於在同一水平x上聚合y變數的多個觀測值的方法,如果是 None,將繪製所有觀測值
    # lw=1
)

example 13

# 載入新的數據集
dots = pd.read_csv("../../seaborn-data-master/dots.csv").query("align == 'dots'")
dots.head()
align choice time coherence firing_rate
0 dots T1 -80 0.0
1 dots T1 -80 3.2
2 dots T1 -80 6.4
3 dots T1 -80 12.8
4 dots T1 -80 25.6
# 對不同的coherence(數字變數)調不同的顏色,以 choice 為依據劃分線條的類型
import matplotlib.pyplot as plt
plt.figure(figsize = (8,6))
sns.lineplot(
    data = dots,
    x = 'time',
    y = 'firing_rate',
    hue = 'coherence',
    style = 'choice'
)
plt.legend(loc='upper left')

example 14

# 可以以python列表或字典的形式傳遞特定的顏色
import matplotlib.pyplot as plt
plt.figure(figsize = (8,6))
palette = sns.color_palette('mako_r', 6)
sns.lineplot(
    data = dots,
    x = 'time',
    y = 'firing_rate',
    hue = 'coherence',
    style = 'choice',
    palette = palette
)
plt.legend(loc='upper left')

example 15

# 不同 coherence 類別可以用不同粗細的線條畫出
plt.figure(figsize=(8,6))
sns.lineplot(
    data = dots,
    x = 'time',
    y = 'firing_rate',
    size = 'coherence',
    hue = 'choice',
    legend = 'full'
)
plt.legend(loc='upper left')

# 可以手動調節線條粗細的範圍區間
plt.figure(figsize=(8,6))
sns.lineplot(
    data = dots,
    x = 'time',
    y = 'firing_rate',
    size = 'coherence',
    hue = 'choice',
    sizes = (.25, 2.5) #定義最小值和最大值
)
plt.legend(loc='upper left')

example 16

# 預設情況下,繪圖時按 x 排序,若 調節 sort = False,則繪圖時按數據集中的順序繪製
import numpy as np
x, y = np.random.normal(size = (2, 5000)).cumsum(axis = 1)
sns.lineplot(x=x, y=y, lw=1)

sns.lineplot(x=x, y=y, sort=False, lw=1)

example 17

# 使用 replot() 分組繪圖,以參數 col 進行分組
sns.relplot(
    data = fmri,
    x = 'timepoint',
    y = 'signal',
    col = 'region',
    hue = 'event',
    style = 'event',
    kind = 'line'
)


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 蒼穹之邊,浩瀚之摯,眰恦之美; 悟心悟性,善始善終,惟善惟道! —— 朝槿《朝槿兮年說》 寫在開頭 在併發編程領域,有兩大核心問題:一個是互斥,即同一時刻只允許一個線程訪問共用資源;另一個是同步,即線程之間如何通信、協作。主要原因是,對於多線程實現實現併發,一直以來,多線程都存在2個問題: 線程之間 ...
  • 蒼穹之邊,浩瀚之摯,眰恦之美; 悟心悟性,善始善終,惟善惟道! —— 朝槿《朝槿兮年說》 寫在開頭 在併發編程領域,有兩大核心問題:一個是互斥,即同一時刻只允許一個線程訪問共用資源;另一個是同步,即線程之間如何通信、協作。主要原因是,對於多線程實現實現併發,一直以來,多線程都存在2個問題: 線程之間 ...
  • 一、前言 Caffeine是一個高性能的 Java 緩存庫,底層數據存儲採用ConcurrentHashMap 優點:因為Caffeine面向JDK8,在jdk8中ConcurrentHashMap增加了紅黑樹,在hash衝突嚴重時也能有良好的讀性能。多線程環境中,不同的key可以併發寫,相同的ke ...
  • 簡述 類型:創建型 目標:通過拷貝快速創建相同或相似對象。 接下來我們看一個需要改進的案例。 優化案例 話不多說,先來看一個創建相同或相似對象的傳統寫法。 原版v0 public class Department { private String name; private String count ...
  • 多用戶即時通訊系統02 4.編碼實現01 4.1功能實現-用戶登錄 4.1.1功能說明 因為還沒有學習資料庫,我們人為規定 用戶名/id = 100,密碼為 123456 就可以登錄,其他用戶不能登錄,後面使用HashMap模擬資料庫,這樣就可以多個用戶登錄。 4.1.2思路分析+框架圖 用戶的登錄 ...
  • 前言 secure boot 和FIT Image是前段時間接觸到的,其實早就該總結下了,奈何懶癌犯了,拖了好久才寫出來。 之前也有人問我,工作後最大的感受是什麼?我的回答是:“快速學習”。 就嵌入式來講,大多數應屆生在校期間可能都沒做過完整的項目,僅憑在校期間學習的內容很難勝任公司的要求。 就底層 ...
  • 寫在前面 其實media配置也可以完全用static代替(看你自己的選擇),static代替的方法是直接在mobles.py里設置用戶上傳頭像的時候,修改一下用戶上傳頭像時的保存位置 當設置成static/avatar/之後,我們後期在獲取用戶上傳的文件時就可以在其前面加一個static就可以獲取到 ...
  • 註冊中心可以說是微服務架構中的”通訊錄“,它記錄了服務和服務地址的映射關係。在分散式架構中,服務會註冊到這裡,當服務需要調用其它服務時,就到這裡找到服務的地址,進行調用。 ...
一周排行
    -Advertisement-
    Play Games
  • 經常看到有群友調侃“為什麼搞Java的總在學習JVM調優?那是因為Java爛!我們.NET就不需要搞這些!”真的是這樣嗎?今天我就用一個案例來分析一下。 昨天,一位學生問了我一個問題:他建了一個預設的ASP.NET Core Web API的項目,也就是那個WeatherForecast的預設項目模 ...
  • 很多軟體工程師都認為MD5是一種加密演算法,然而這種觀點是不對的。作為一個 1992 年第一次被公開的演算法,到今天為止已經被髮現了一些致命的漏洞。本文討論MD5在密碼保存方面的一些問題。 ...
  • Maven可以使我們在構建項目時需要用到很多第三方類jar包,如下一些常用jar包 而maven的出現可以讓我們避免手動導入jar包出現的某些問題,它可以自動下載那須所需要的jar包 我們只需要在創建的maven項目自動生成的pom.xml中輸入如下代碼 <dependencies> <!--ser ...
  • 來源:https://developer.aliyun.com/article/694020 非同步調用幾乎是處理高併發Web應用性能問題的萬金油,那麼什麼是“非同步調用”? “非同步調用”對應的是“同步調用”,同步調用指程式按照定義順序依次執行,每一行程式都必須等待上一行程式執行完成之後才能執行;非同步調 ...
  • 1.面向對象 面向對象編程是在面向過程編程的基礎上發展來的,它比面向過程編程具有更強的靈活性和擴展性,所以可以先瞭解下什麼是面向過程編程: 面向過程編程的核心是過程,就是分析出實現需求所需要的步驟,通過函數一步一步實現這些步驟,接著依次調用即可,再簡單理解就是程式 從上到下一步步執行,從頭到尾的解決 ...
  • 10瓶毒藥其中只有一瓶有毒至少需要幾隻老鼠可以找到有毒的那瓶 身似浮雲,心如飛絮,氣若游絲。 用二分查找和二進位位運算的思想都可以把死亡的老鼠降到最低。 其中,二進位位運算就是每一隻老鼠代表一個二進位0或1,0就代表老鼠存活,1代表老鼠死亡;根據數學運算 23 = 8、24 = 16,那麼至少需要四 ...
  • 一、Kafka存在哪些方面的優勢 1. 多生產者 可以無縫地支持多個生產者,不管客戶端在使用單個主題還是多個主題。 2. 多消費者 支持多個消費者從一個單獨的消息流上讀取數據,而且消費者之間互不影響。 3. 基於磁碟的數據存儲 支持消費者非實時地讀取消息,由於消息被提交到磁碟,根據設置的規則進行保存 ...
  • 大家好,我是陶朱公Boy。 前言 上一篇文章《關於狀態機的技術選型,最後一個真心好》我跟大家聊了一下關於”狀態機“的話題。從眾多技術選型中我也推薦了一款阿裡開源的狀態機—“cola-statemachine”。 於是就有小伙伴私信我,自己項目也考慮引入這款狀態機,但網上資料實在太少,能不能系統的介紹 ...
  • 使用腳本自動跑實驗(Ubuntu),將實驗結果記錄在文件中,併在實驗結束之後將結果通過郵件發送到郵箱,最後在windows端自動解析成excel表格。 ...
  • 話說在前面,我不是小黑子~ 我是超級大黑子😏 表弟大周末的跑來我家,沒事幹天天騷擾我,搞得我都不能跟小姐姐好好聊天了,於是為了打發表弟,我決定用Python做一個小游戲來消耗一下他的精力,我思來想去,決定把他變成小黑子,於是做了一個坤坤打籃球的游戲,沒想到他還挺愛玩的~ 終於解放了,於是我把游戲寫 ...