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
  • Timer是什麼 Timer 是一種用於創建定期粒度行為的機制。 與標準的 .NET System.Threading.Timer 類相似,Orleans 的 Timer 允許在一段時間後執行特定的操作,或者在特定的時間間隔內重覆執行操作。 它在分散式系統中具有重要作用,特別是在處理需要周期性執行的 ...
  • 前言 相信很多做WPF開發的小伙伴都遇到過表格類的需求,雖然現有的Grid控制項也能實現,但是使用起來的體驗感並不好,比如要實現一個Excel中的表格效果,估計你能想到的第一個方法就是套Border控制項,用這種方法你需要控制每個Border的邊框,並且在一堆Bordr中找到Grid.Row,Grid. ...
  • .NET C#程式啟動閃退,目錄導致的問題 這是第2次踩這個坑了,很小的編程細節,容易忽略,所以寫個博客,分享給大家。 1.第一次坑:是windows 系統把程式運行成服務,找不到配置文件,原因是以服務運行它的工作目錄是在C:\Windows\System32 2.本次坑:WPF桌面程式通過註冊表設 ...
  • 在分散式系統中,數據的持久化是至關重要的一環。 Orleans 7 引入了強大的持久化功能,使得在分散式環境下管理數據變得更加輕鬆和可靠。 本文將介紹什麼是 Orleans 7 的持久化,如何設置它以及相應的代碼示例。 什麼是 Orleans 7 的持久化? Orleans 7 的持久化是指將 Or ...
  • 前言 .NET Feature Management 是一個用於管理應用程式功能的庫,它可以幫助開發人員在應用程式中輕鬆地添加、移除和管理功能。使用 Feature Management,開發人員可以根據不同用戶、環境或其他條件來動態地控制應用程式中的功能。這使得開發人員可以更靈活地管理應用程式的功 ...
  • 在 WPF 應用程式中,拖放操作是實現用戶交互的重要組成部分。通過拖放操作,用戶可以輕鬆地將數據從一個位置移動到另一個位置,或者將控制項從一個容器移動到另一個容器。然而,WPF 中預設的拖放操作可能並不是那麼好用。為瞭解決這個問題,我們可以自定義一個 Panel 來實現更簡單的拖拽操作。 自定義 Pa ...
  • 在實際使用中,由於涉及到不同編程語言之間互相調用,導致C++ 中的OpenCV與C#中的OpenCvSharp 圖像數據在不同編程語言之間難以有效傳遞。在本文中我們將結合OpenCvSharp源碼實現原理,探究兩種數據之間的通信方式。 ...
  • 一、前言 這是一篇搭建許可權管理系統的系列文章。 隨著網路的發展,信息安全對應任何企業來說都越發的重要,而本系列文章將和大家一起一步一步搭建一個全新的許可權管理系統。 說明:由於搭建一個全新的項目過於繁瑣,所有作者將挑選核心代碼和核心思路進行分享。 二、技術選擇 三、開始設計 1、自主搭建vue前端和. ...
  • Csharper中的表達式樹 這節課來瞭解一下表示式樹是什麼? 在C#中,表達式樹是一種數據結構,它可以表示一些代碼塊,如Lambda表達式或查詢表達式。表達式樹使你能夠查看和操作數據,就像你可以查看和操作代碼一樣。它們通常用於創建動態查詢和解析表達式。 一、認識表達式樹 為什麼要這樣說?它和委托有 ...
  • 在使用Django等框架來操作MySQL時,實際上底層還是通過Python來操作的,首先需要安裝一個驅動程式,在Python3中,驅動程式有多種選擇,比如有pymysql以及mysqlclient等。使用pip命令安裝mysqlclient失敗應如何解決? 安裝的python版本說明 機器同時安裝了 ...