99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

Python實現(xiàn)眼動數(shù)據(jù)可視化:從注視點軌跡到熱力圖的完整實戰(zhàn)指南

Python實現(xiàn)眼動數(shù)據(jù)可視化:從注視點軌跡到熱力圖的完整實戰(zhàn)指南 簡介本資源是一套面向認知科學(xué)、人機交互與用戶體驗研究者的Python眼動數(shù)據(jù)分析工具包聚焦注視點軌跡繪制與熱圖生成兩大核心任務(wù)解決眼動原始數(shù)據(jù)難以直觀呈現(xiàn)、視覺行為模式難量化的問題。壓縮包共5個文件3個核心Python模塊、1份依賴說明、1份項目文檔總大小僅17KB輕量高效gaze_visualizer.py負責(zé)軌跡動畫與多維熱圖渲染eyetracking_analyzer.py實現(xiàn)注視檢測、AOI劃分與掃視識別main.py提供開箱即用的分析流程。已有126人下載學(xué)習(xí)適合具備基礎(chǔ)Python能力的研究者或工程師快速開展眼動數(shù)據(jù)可視化實踐——無需從零編碼可直接加載CSV/TSV格式眼動數(shù)據(jù)一鍵生成帶時間軸的注視路徑動畫、自適應(yīng)平滑熱圖及注視時長分布統(tǒng)計圖表并支持多被試對比與興趣區(qū)域定量分析。1. 項目概述從數(shù)據(jù)到洞察眼動追蹤可視化的核心價值眼動追蹤技術(shù)聽起來像是實驗室里的高端玩意兒但如今它正快速滲透到用戶體驗研究、廣告效果評估、心理學(xué)實驗?zāi)酥劣螒蚪换ピO(shè)計等眾多領(lǐng)域。簡單來說它記錄的是人眼在觀察一個界面、一張圖片或一段視頻時視線焦點的移動軌跡。然而原始的眼動數(shù)據(jù)只是一系列帶有時間戳的坐標(biāo)點X Y對于非專業(yè)人士而言這無異于天書。這就是數(shù)據(jù)可視化登場的時候——它的使命是將這些冰冷的坐標(biāo)轉(zhuǎn)化為直觀、易懂的視覺故事讓“眼睛在看哪里”這個核心問題一目了然。這個項目的核心就是使用Python這一強大的數(shù)據(jù)科學(xué)工具鏈實現(xiàn)眼動數(shù)據(jù)的兩種經(jīng)典可視化注視點軌跡圖和熱力圖。軌跡圖如同給視線畫出了一條“行走路徑”清晰展示視覺搜索的順序和路徑熱力圖則像給界面做了一次“熱度掃描”用顏色深淺直觀呈現(xiàn)哪些區(qū)域吸引了最多的注意力。對于產(chǎn)品經(jīng)理、交互設(shè)計師、市場研究員或者心理學(xué)學(xué)生來說掌握這套從原始數(shù)據(jù)到可視化洞察的完整流程意味著你能夠獨立完成一次專業(yè)的眼動數(shù)據(jù)分析而無需依賴昂貴或封閉的商業(yè)軟件。我之所以選擇Python來實現(xiàn)是因為它的生態(tài)足夠強大且靈活。從數(shù)據(jù)處理Pandas NumPy到科學(xué)計算SciPy再到可視化Matplotlib Seaborn乃至交互PlotlyPython提供了一站式的解決方案。更重要的是整個過程是透明、可定制、可復(fù)現(xiàn)的。你可以完全控制從數(shù)據(jù)清洗、濾波到最終圖表渲染的每一個環(huán)節(jié)并根據(jù)你的具體研究問題調(diào)整可視化參數(shù)這是很多“黑箱”商業(yè)軟件無法比擬的優(yōu)勢。接下來我將拆解整個流程從數(shù)據(jù)準(zhǔn)備到兩種核心圖表的生成并分享我在實際項目中積累的實操技巧和避坑指南。2. 核心思路與工具選型構(gòu)建高效可復(fù)現(xiàn)的分析流水線面對眼動數(shù)據(jù)可視化一個清晰的頂層設(shè)計能讓你事半功倍。我的核心思路是構(gòu)建一條標(biāo)準(zhǔn)化的數(shù)據(jù)處理與可視化流水線其流程可以概括為原始數(shù)據(jù)接入 - 數(shù)據(jù)清洗與預(yù)處理 - 空間與時間維度分析 - 可視化渲染 - 結(jié)果解讀。這條流水線的每個環(huán)節(jié)都依賴特定的Python工具選型的理由在于它們的成熟度、性能以及彼此間無縫協(xié)作的能力。2.1 數(shù)據(jù)處理基石Pandas與NumPy原始眼動數(shù)據(jù)可能來自Tobii、EyeLink、SMI等不同品牌的設(shè)備導(dǎo)出格式多為CSV或TXT。Pandas的DataFrame是處理這類表格數(shù)據(jù)的絕佳容器。它不僅能輕松完成數(shù)據(jù)讀取、列篩選、缺失值處理其強大的分組、聚合和時間序列操作功能對于按試次、被試或時間段分析數(shù)據(jù)至關(guān)重要。而NumPy則為底層數(shù)值計算提供支持例如計算注視點之間的距離、持續(xù)時間統(tǒng)計等其數(shù)組操作效率遠高于純Python循環(huán)。注意不同設(shè)備導(dǎo)出的數(shù)據(jù)列名可能不同。常見的必要列包括timestamp時間戳、gaze_point_x、gaze_point_y注視點坐標(biāo)通常以像素或標(biāo)準(zhǔn)化坐標(biāo)表示、fixation_index注視點索引如果設(shè)備已在線識別、pupil_diameter瞳孔直徑可選。在數(shù)據(jù)讀取后第一步永遠是統(tǒng)一列名并理解其物理含義。2.2 可視化核心Matplotlib與SeabornMatplotlib是Python繪圖的基石功能強大但API較為底層。Seaborn基于Matplotlib提供了更高級的統(tǒng)計圖形接口和美觀的默認樣式特別適合繪制熱力圖。對于注視點軌跡我們需要精細控制每個點、每條線的樣式Matplotlib的靈活性是首選。對于熱力圖Seaborn的heatmap函數(shù)可以一鍵生成并輕松集成相關(guān)性矩陣或聚合統(tǒng)計量。此外為了在靜態(tài)圖中展示時間序列Matplotlib的動畫模塊FuncAnimation或簡單的顏色漸變映射也是常用技巧。2.3 交互與進階Plotly與自定義算法如果你的分析報告需要交互式探索例如鼠標(biāo)懸停查看具體數(shù)據(jù)點、縮放局部熱點區(qū)域那么Plotly的express或graph_objects模塊是理想選擇。它可以生成HTML格式的交互圖表直接嵌入網(wǎng)頁或Jupyter Notebook中。在算法層面對于原始注視點數(shù)據(jù)的清洗可能需要用到基于速度或散度的算法如I-VT I-DT來識別真正的“注視點”這可以借助SciPy的信號處理功能或自行實現(xiàn)。2.4 環(huán)境搭建與項目結(jié)構(gòu)一個清晰的項目結(jié)構(gòu)有助于維護和復(fù)現(xiàn)。我通常這樣組織eyetracking_visualization/ ├── data/ │ ├── raw/ # 存放原始數(shù)據(jù)文件 │ └── processed/ # 存放清洗后的數(shù)據(jù) ├── notebooks/ # Jupyter Notebook用于探索性分析 ├── src/ # 源代碼模塊 │ ├── data_loader.py # 數(shù)據(jù)加載與清洗函數(shù) │ ├── visualization.py # 軌跡圖、熱圖繪制函數(shù) │ └── analysis.py # 統(tǒng)計分析函數(shù) ├── config.yaml # 配置文件如屏幕分辨率、閾值參數(shù) └── requirements.txt # 項目依賴包列表使用requirements.txt管理依賴是專業(yè)做法內(nèi)容大致如下pandas1.4.0 numpy1.21.0 matplotlib3.5.0 seaborn0.11.0 plotly5.10.0 scipy1.8.0 jupyter通過pip install -r requirements.txt即可一鍵搭建環(huán)境。這種結(jié)構(gòu)化的方式尤其適合團隊協(xié)作或需要多次運行的分析項目。3. 數(shù)據(jù)預(yù)處理實戰(zhàn)清洗、映射與注視點識別拿到原始數(shù)據(jù)后直接繪圖往往得到的是雜亂無章的噪音。高質(zhì)量的可視化始于干凈的數(shù)據(jù)。預(yù)處理主要包括三個步驟數(shù)據(jù)清洗、坐標(biāo)映射以及關(guān)鍵的注視點事件識別。3.1 數(shù)據(jù)清洗處理缺失值與異常點眼動儀可能因眨眼、頭部移動或跟蹤丟失而產(chǎn)生無效數(shù)據(jù)。這些點通常表現(xiàn)為坐標(biāo)值為NaN、0或超出屏幕物理范圍。import pandas as pd import numpy as np def load_and_clean_data(filepath, screen_width1920, screen_height1080): 加載并清洗眼動數(shù)據(jù)。 假設(shè)數(shù)據(jù)包含列timestamp, gaze_x, gaze_y df pd.read_csv(filepath) # 1. 處理缺失值直接刪除或插值謹慎使用 df_clean df.dropna(subset[gaze_x, gaze_y]) # 2. 剔除明顯異常點坐標(biāo)超出屏幕范圍或為0 valid_x (df_clean[gaze_x] 0) (df_clean[gaze_x] screen_width) valid_y (df_clean[gaze_y] 0) (df_clean[gaze_y] screen_height) df_clean df_clean[valid_x valid_y] # 3. 基于速度的簡單濾波可選移除瞬時跳躍點 # 計算逐點速度像素/毫秒 df_clean[delta_x] df_clean[gaze_x].diff() df_clean[delta_y] df_clean[gaze_y].diff() df_clean[delta_t] df_clean[timestamp].diff() df_clean[velocity] np.sqrt(df_clean[delta_x]**2 df_clean[delta_y]**2) / df_clean[delta_t] df_clean df_clean[df_clean[velocity] 100] # 設(shè)置一個經(jīng)驗速度閾值 return df_clean.reset_index(dropTrue)實操心得速度閾值如100像素/毫秒需要根據(jù)你的數(shù)據(jù)采樣率和屏幕尺寸進行校準(zhǔn)。一個經(jīng)驗法則是超過這個速度的眼動更可能是掃視saccade過程中的數(shù)據(jù)或噪音而非有效的注視??梢韵壤L制速度分布直方圖來觀察并確定閾值。3.2 坐標(biāo)映射從數(shù)據(jù)空間到圖像空間你的刺激材料如圖片、網(wǎng)頁截圖和眼動數(shù)據(jù)可能存在于不同的坐標(biāo)空間。例如眼動數(shù)據(jù)可能是屏幕分辨率坐標(biāo)0-1920 0-1080而你的背景圖可能是另一尺寸。必須將注視點坐標(biāo)精確映射到背景圖上。def map_coordinates(df, stim_width, stim_height, screen_width, screen_height): 將注視點坐標(biāo)從屏幕空間線性映射到刺激材料空間。 假設(shè)刺激材料已等比例適配屏幕常見情況。 # 線性映射 df[mapped_x] df[gaze_x] * (stim_width / screen_width) df[mapped_y] df[gaze_y] * (stim_height / screen_height) return df如果刺激材料在屏幕上的位置有偏移例如居中顯示但四周有黑邊則需要更復(fù)雜的映射考慮偏移量offset。關(guān)鍵在于記錄實驗呈現(xiàn)時的準(zhǔn)確布局參數(shù)。3.3 注視點識別從連續(xù)采樣點到有意義事件原始數(shù)據(jù)是高速采樣的凝視點我們需要將其聚類成具有心理學(xué)意義的“注視點”——即視線在空間上相對穩(wěn)定停留的一段時間。這里介紹一種最常用的速度閾值算法I-VT。from scipy import signal import matplotlib.pyplot as plt def identify_fixations_ivt(df, velocity_threshold30, min_duration100): 使用I-VT算法識別注視點。 :param velocity_threshold: 速度閾值單位像素/毫秒 :param min_duration: 最小注視持續(xù)時間單位毫秒 :return: 添加了fixation_id列的DataFrame # 計算速度沿用清洗時的速度或重新計算 if velocity not in df.columns: # ... 計算速度代碼 ... pass # 二值化低于閾值為潛在注視點1高于為掃視0 df[is_fixation_candidate] df[velocity] velocity_threshold # 找到連續(xù)為True的片段 df[fixation_group] (df[is_fixation_candidate] ! df[is_fixation_candidate].shift()).cumsum() df.loc[~df[is_fixation_candidate], fixation_group] -1 # 將非候選點標(biāo)記為-1 # 計算每個候選片段的持續(xù)時間 fixation_groups df[df[fixation_group] ! -1].groupby(fixation_group) group_durations fixation_groups[timestamp].apply(lambda x: x.max() - x.min()) # 篩選出持續(xù)時間大于最小閾值的片段并分配注視點ID valid_groups group_durations[group_durations min_duration].index fixation_id_map {old_id: new_id for new_id, old_id in enumerate(valid_groups, start1)} df[fixation_id] df[fixation_group].map(fixation_id_map) # 計算每個注視點的平均坐標(biāo)和開始、結(jié)束時間 fixations_summary df[df[fixation_id].notna()].groupby(fixation_id).agg({ mapped_x: mean, mapped_y: mean, timestamp: [min, max] }).round(2) fixations_summary.columns [fixation_x, fixation_y, start_time, end_time] fixations_summary[duration] fixations_summary[end_time] - fixations_summary[start_time] return df, fixations_summary這個函數(shù)最終輸出兩個結(jié)果1標(biāo)記了每個采樣點所屬注視點ID的原始數(shù)據(jù)框2一個注視點摘要表包含每個注視點的中心坐標(biāo)、起止時間和持續(xù)時間。這個摘要表是后續(xù)可視化的直接輸入。4. 注視點軌跡圖實現(xiàn)繪制視覺的“足跡”注視點軌跡圖通過按時間順序連接注視點中心直觀展示視覺掃描路徑。它揭示了觀察者的注意轉(zhuǎn)移順序、回視行為等模式。4.1 基礎(chǔ)靜態(tài)軌跡圖繪制我們使用Matplotlib以刺激材料為背景繪制注視點序列。import matplotlib.pyplot as plt from matplotlib.patches import Circle import matplotlib.cm as cm def plot_fixation_trajectory(fixations_df, background_image_pathNone, image_sizeNone): 繪制注視點軌跡圖。 :param fixations_df: 注視點摘要DataFrame需包含fixation_x, fixation_y, duration, 且按時間排序 :param background_image_path: 背景圖片路徑 :param image_size: 背景圖片尺寸寬高用于設(shè)置坐標(biāo)軸范圍 fig, ax plt.subplots(figsize(12, 8)) # 1. 設(shè)置背景 if background_image_path: img plt.imread(background_image_path) if image_size: ax.imshow(img, extent[0, image_size[0], image_size[1], 0]) # 注意y軸方向 else: ax.imshow(img) ax.set_xlim(0, image_size[0] if image_size else img.shape[1]) ax.set_ylim(image_size[1] if image_size else img.shape[0], 0) # 原點在左上角 else: # 如果沒有背景圖根據(jù)數(shù)據(jù)范圍設(shè)置坐標(biāo)軸 ax.set_xlim(fixations_df[fixation_x].min() - 50, fixations_df[fixation_x].max() 50) ax.set_ylim(fixations_df[fixation_y].max() 50, fixations_df[fixation_y].min() - 50) # Y軸反向 ax.set_aspect(equal) # 2. 繪制注視點及連線 # 按時間順序繪制連線 x_coords fixations_df[fixation_x].values y_coords fixations_df[fixation_y].values ax.plot(x_coords, y_coords, o-, colorred, linewidth1.5, markersize4, alpha0.7, labelGaze Path) # 3. 用散點大小表示注視持續(xù)時間 # 將持續(xù)時間映射到點的大小范圍例如50-400平方像素 dur_min, dur_max fixations_df[duration].min(), fixations_df[duration].max() if dur_max dur_min: sizes 50 350 * (fixations_df[duration] - dur_min) / (dur_max - dur_min) else: sizes 200 # 如果所有持續(xù)時間相同使用默認大小 scatter ax.scatter(x_coords, y_coords, ssizes, crange(len(fixations_df)), cmapviridis, alpha0.6, edgecolorsblack, linewidth0.5, zorder5) # 4. 添加起始點標(biāo)記 ax.scatter(x_coords[0], y_coords[0], s200, marker^, colorgreen, edgecolorsdarkgreen, linewidth2, zorder10, labelStart) ax.scatter(x_coords[-1], y_coords[-1], s200, markers, colorblue, edgecolorsdarkblue, linewidth2, zorder10, labelEnd) # 5. 添加注視點序號 for i, row in fixations_df.iterrows(): ax.annotate(str(i1), (row[fixation_x], row[fixation_y]), xytext(5, 5), textcoordsoffset points, fontsize9, colordarkred) # 6. 美化圖表 ax.set_xlabel(X Coordinate (pixels)) ax.set_ylabel(Y Coordinate (pixels)) ax.set_title(Fixation Trajectory with Duration Encoding, fontsize14, pad20) ax.legend(locupper right) # 添加顏色條表示時間順序 cbar plt.colorbar(scatter, axax, shrink0.8) cbar.set_label(Fixation Sequence) plt.tight_layout() return fig, ax這段代碼生成了一張信息豐富的軌跡圖連線表示視線移動順序點的大小編碼了注視持續(xù)時間點越大看的時間越長顏色從紫到黃的變化表示時間先后順序綠色三角和藍色方塊分別標(biāo)記了起點和終點旁邊的數(shù)字是注視點的序號。4.2 進階動態(tài)軌跡圖與交互式探索靜態(tài)圖有時難以表現(xiàn)時間流。我們可以用Matplotlib的動畫功能制作動態(tài)軌跡圖讓注視點按時間順序依次出現(xiàn)。from matplotlib.animation import FuncAnimation def create_animated_trajectory(fixations_df, background_image_path, image_size, interval500): 創(chuàng)建動態(tài)注視點軌跡動畫。 :param interval: 每幀間隔毫秒可關(guān)聯(lián)注視點實際持續(xù)時間。 fig, ax plt.subplots(figsize(10, 7)) img plt.imread(background_image_path) ax.imshow(img, extent[0, image_size[0], image_size[1], 0]) ax.set_xlim(0, image_size[0]) ax.set_ylim(image_size[1], 0) line, ax.plot([], [], ro-, linewidth1.5, markersize6, alpha0.7) scatter ax.scatter([], [], s[], c[], cmapviridis, alpha0.6, edgecolorsk, zorder5) start_marker ax.scatter([], [], s200, marker^, colorgreen, zorder10) text_annotations [] def init(): line.set_data([], []) scatter.set_offsets(np.empty((0, 2))) scatter.set_sizes([]) start_marker.set_offsets(np.empty((0, 2))) for ann in text_annotations: ann.remove() text_annotations.clear() return line, scatter, start_marker def update(frame): # frame代表當(dāng)前繪制的注視點索引0到n current_data fixations_df.iloc[:frame1] x current_data[fixation_x].values y current_data[fixation_y].values # 更新連線 line.set_data(x, y) # 更新散點所有已出現(xiàn)的點 offsets np.column_stack((x, y)) scatter.set_offsets(offsets) # 更新散點大小基于持續(xù)時間 sizes 50 350 * (current_data[duration] - dur_min) / (dur_max - dur_min) scatter.set_sizes(sizes) # 更新散點顏色序列 scatter.set_array(np.arange(len(current_data))) # 更新起點標(biāo)記 if frame 0: start_marker.set_offsets([[x[0], y[0]]]) # 更新序號標(biāo)注 for ann in text_annotations: ann.remove() text_annotations.clear() for i, row in current_data.iterrows(): ann ax.annotate(str(i1), (row[fixation_x], row[fixation_y]), xytext(5,5), textcoordsoffset points, fontsize8) text_annotations.append(ann) ax.set_title(fFixation Trajectory (Frame {frame1}/{len(fixations_df)}), fontsize12) return line, scatter, start_marker, *text_annotations dur_min, dur_max fixations_df[duration].min(), fixations_df[duration].max() ani FuncAnimation(fig, update, frameslen(fixations_df), init_funcinit, intervalinterval, blitFalse, repeat_delay2000) plt.tight_layout() # 保存動畫 # ani.save(fixation_trajectory.gif, writerpillow, fps2) plt.show() return ani這個動畫能更生動地再現(xiàn)視覺搜索過程。參數(shù)interval控制每個注視點顯示的時長可以設(shè)置為固定值也可以與注視點的實際持續(xù)時間相關(guān)聯(lián)實現(xiàn)更真實的重放。5. 熱力圖生成可視化注意力的“密度場”如果說軌跡圖描繪的是視覺路徑那么熱力圖呈現(xiàn)的就是注意力的分布密度。它通過高斯核密度估計將離散的注視點通常加權(quán)了持續(xù)時間轉(zhuǎn)化為一個連續(xù)的密度表面并用顏色梯度表示關(guān)注度高低。5.1 基于高斯核密度估計的熱力圖我們使用scipy.stats.gaussian_kde來計算二維核密度。注視點的持續(xù)時間可以作為權(quán)重表示某些點貢獻了更多的“熱度”。from scipy import stats import seaborn as sns def generate_heatmap(fixations_df, background_image_path, image_size, downscale_factor0.2, sigma20): 生成基于核密度估計的熱力圖。 :param downscale_factor: 熱力圖網(wǎng)格下采樣因子用于平衡精度與計算速度。0.2表示使用原圖20%的分辨率。 :param sigma: 高斯核的標(biāo)準(zhǔn)差帶寬控制平滑程度。值越大熱圖越平滑、分散。 # 1. 準(zhǔn)備數(shù)據(jù) x fixations_df[fixation_x].values y fixations_df[fixation_y].values # 使用持續(xù)時間作為權(quán)重 weights fixations_df[duration].values if duration in fixations_df.columns else None # 2. 創(chuàng)建評估網(wǎng)格 h, w image_size[1], image_size[0] # 下采樣網(wǎng)格以減少計算量 grid_h, grid_w int(h * downscale_factor), int(w * downscale_factor) X, Y np.mgrid[0:h:complex(0, grid_h), 0:w:complex(0, grid_w)] # complex步長創(chuàng)建網(wǎng)格點 positions np.vstack([Y.ravel(), X.ravel()]) # 注意np.mgrid返回的維度順序是(Y, X)需要轉(zhuǎn)置 # 3. 計算核密度估計 # 將數(shù)據(jù)堆疊(2, N) 數(shù)組 values np.vstack([x, y]) # 調(diào)整帶寬矩陣。這里使用一個標(biāo)量sigma意味著各向同性高斯核。 # 對于眼動數(shù)據(jù)通常x和y方向使用相同的帶寬。 bandwidth_matrix np.eye(2) * (sigma ** 2) # 使用自定義協(xié)方差矩陣創(chuàng)建KDE對象 kde stats.gaussian_kde(values, bw_methodscott) # 先使用自動帶寬 # 手動設(shè)置協(xié)方差矩陣影響平滑度 kde.covariance bandwidth_matrix kde.inv_cov np.linalg.inv(kde.covariance) if weights is not None: # 如果提供權(quán)重需要手動計算加權(quán)密度gaussian_kde本身不支持權(quán)重參數(shù) # 這里采用一種簡化方法將每個點按其權(quán)重重復(fù)近似 # 注意對于大數(shù)據(jù)集這可能效率低下。更嚴(yán)謹?shù)淖龇ㄊ菍崿F(xiàn)加權(quán)KDE。 weights_normalized weights / weights.sum() repeated_indices np.repeat(np.arange(len(x)), (weights_normalized * 100).astype(int)) # 放大權(quán)重并取整 if len(repeated_indices) 0: values_weighted np.vstack([x[repeated_indices], y[repeated_indices]]) kde stats.gaussian_kde(values_weighted, bw_methodscott) kde.covariance bandwidth_matrix kde.inv_cov np.linalg.inv(kde.covariance) # 4. 在網(wǎng)格位置上評估KDE Z np.reshape(kde(positions).T, X.shape) # 5. 繪制熱力圖 fig, ax plt.subplots(figsize(14, 10)) # 顯示背景圖 img plt.imread(background_image_path) ax.imshow(img, extent[0, w, h, 0], alpha0.7) # 背景半透明 # 使用Seaborn的heatmap疊加密度設(shè)置透明度 # 需要將Z的坐標(biāo)軸與圖像對齊imshow的extent是左下右上 heatmap sns.heatmap(Z, cmapjet, # 或 hot, coolwarm, viridis alpha0.6, # 熱圖透明度 cbarTrue, cbar_kws{label: Attention Density}, squareFalse, # 根據(jù)網(wǎng)格比例調(diào)整 axax, zorder5) # 調(diào)整熱力圖位置和范圍以匹配背景圖 heatmap.set_xlim(0, w) heatmap.set_ylim(h, 0) heatmap.set_xticks([]) heatmap.set_yticks([]) # 6. 可選疊加注視點位置 ax.scatter(x, y, s10, colorwhite, edgecolorsblack, linewidth0.5, alpha0.7, zorder10, labelFixation Centers) ax.set_title(Gaze Heatmap (Gaussian KDE), fontsize16, pad20) ax.legend(locupper right) plt.tight_layout() return fig, ax, Z這個函數(shù)生成了疊加在背景圖上的半透明熱力圖。顏色越暖如紅色、黃色表示該區(qū)域受到的注視密度越高。參數(shù)sigma是關(guān)鍵它控制高斯核的寬度。sigma值太小熱圖會呈現(xiàn)為分散的斑點值太大則會過度平滑丟失細節(jié)。通常需要根據(jù)屏幕分辨率和研究目的進行調(diào)試。5.2 優(yōu)化與變體自適應(yīng)帶寬與AOI分析有時固定的sigma可能不適用于所有場景。我們可以使用更先進的自適應(yīng)帶寬方法或者在計算熱圖前先定義興趣區(qū)AOI進行分區(qū)分析。def adaptive_heatmap(fixations_df, background_img_path, img_size, k50): 使用k近鄰距離自適應(yīng)確定局部帶寬。 :param k: 用于計算局部密度的近鄰數(shù)。 from sklearn.neighbors import NearestNeighbors x fixations_df[fixation_x].values.reshape(-1, 1) y fixations_df[fixation_y].values.reshape(-1, 1) coords np.hstack([x, y]) # 計算每個點到其第k個近鄰的距離作為局部帶寬的估計 nbrs NearestNeighbors(n_neighborsk1).fit(coords) # 1 因為包含自身 distances, _ nbrs.kneighbors(coords) local_bandwidth distances[:, -1] # 第k個近鄰的距離 # 創(chuàng)建一個網(wǎng)格簡化版實際計算需對每個點用不同帶寬的核計算量較大 # 此處為示意更高效的實現(xiàn)可能需要使用其他庫如KDEpy或近似算法 print(自適應(yīng)帶寬計算完成局部帶寬范圍, local_bandwidth.min(), local_bandwidth.max()) # ... 后續(xù)可使用每個點的local_bandwidth進行加權(quán)或分區(qū)域KDE ... # 作為簡化我們可以取中位數(shù)作為全局帶寬 global_sigma np.median(local_bandwidth) print(f建議的全局sigma值{global_sigma:.2f}) return generate_heatmap(fixations_df, background_img_path, img_size, sigmaglobal_sigma) def aoi_based_analysis(fixations_df, aoi_list): 興趣區(qū)分析。 :param aoi_list: 每個AOI是一個字典如{name: Logo, x: 100, y: 150, width: 200, height: 80} results [] for aoi in aoi_list: name aoi[name] x_min, y_min aoi[x], aoi[y] x_max, y_max x_min aoi[width], y_min aoi[height] # 判斷注視點是否落在AOI內(nèi) inside ((fixations_df[fixation_x] x_min) (fixations_df[fixation_x] x_max) (fixations_df[fixation_y] y_min) (fixations_df[fixation_y] y_max)) aoi_fixations fixations_df[inside] total_fixations len(fixations_df) aoi_count len(aoi_fixations) aoi_total_duration aoi_fixations[duration].sum() if duration in aoi_fixations.columns else np.nan results.append({ AOI: name, Fixation_Count: aoi_count, Fixation_Count_Percent: (aoi_count / total_fixations * 100) if total_fixations 0 else 0, Total_Duration: aoi_total_duration, Average_Duration: aoi_total_duration / aoi_count if aoi_count 0 else np.nan }) return pd.DataFrame(results)AOI分析能夠提供更精確的量化指標(biāo)例如“Logo區(qū)域獲得了多少比例的注視次數(shù)”、“按鈕區(qū)域的總注視時長是多少”這對于A/B測試或設(shè)計元素的效果評估非常有用。6. 實戰(zhàn)整合與結(jié)果輸出從單被試到多被試聚合在實際研究中我們往往需要分析多個被試的數(shù)據(jù)并生成聚合熱力圖或?qū)Ρ溶壽E圖。6.1 多被試數(shù)據(jù)聚合熱圖將多個被試的注視點數(shù)據(jù)合并可以生成反映群體注意力模式的“總覽圖”。關(guān)鍵在于數(shù)據(jù)的對齊確保所有數(shù)據(jù)映射到同一坐標(biāo)空間和標(biāo)準(zhǔn)化。def aggregate_heatmap(data_list, background_img_path, img_size, sigma25, normalizeTrue): 生成多被試聚合熱力圖。 :param data_list: 包含多個被試注視點DataFrame的列表。 :param normalize: 是否對每個被試的貢獻進行歸一化避免個別被試數(shù)據(jù)量過大主導(dǎo)熱圖。 all_x, all_y, all_weights [], [], [] for i, df in enumerate(data_list): x df[fixation_x].values y df[fixation_y].values weights df[duration].values if duration in df.columns else np.ones_like(x) if normalize: weights weights / weights.sum() # 歸一化使每個被試總權(quán)重為1 all_x.append(x) all_y.append(y) all_weights.append(weights) # 合并所有數(shù)據(jù) combined_x np.concatenate(all_x) combined_y np.concatenate(all_y) combined_weights np.concatenate(all_weights) # 使用加權(quán)KDE通過重復(fù)樣本近似 # 為提升效率這里采用采樣策略 combined_df pd.DataFrame({fixation_x: combined_x, fixation_y: combined_y, weight: combined_weights}) # 按權(quán)重進行重采樣近似 sampled_df combined_df.sample(nmin(5000, len(combined_df)), weightsweight, replaceTrue, random_state42) # 調(diào)用之前的generate_heatmap函數(shù)傳入采樣后的數(shù)據(jù) fig, ax, Z generate_heatmap(sampled_df, background_img_path, img_size, sigmasigma) ax.set_title(fAggregated Gaze Heatmap (N{len(data_list)} Participants), fontsize16) return fig, ax, Z6.2 生成專業(yè)報告與圖表導(dǎo)出分析完成后需要將結(jié)果整合成可發(fā)布的圖表。Matplotlib支持多種格式和高DPI導(dǎo)出。def export_visualizations(fixations_df, heatmap_matrix, output_dir./output): 導(dǎo)出所有可視化結(jié)果。 import os os.makedirs(output_dir, exist_okTrue) # 1. 保存注視點軌跡圖 fig_traj, _ plot_fixation_trajectory(fixations_df, background_image_path, image_size) traj_path os.path.join(output_dir, fixation_trajectory.png) fig_traj.savefig(traj_path, dpi300, bbox_inchestight) plt.close(fig_traj) print(f軌跡圖已保存至{traj_path}) # 2. 保存熱力圖 fig_heat, ax_heat, Z generate_heatmap(fixations_df, background_image_path, image_size) heat_path os.path.join(output_dir, gaze_heatmap.png) fig_heat.savefig(heat_path, dpi300, bbox_inchestight, transparentFalse) # 背景不透明 plt.close(fig_heat) # 3. 保存熱力圖數(shù)據(jù)矩陣可用于其他軟件進一步分析 np.savetxt(os.path.join(output_dir, heatmap_matrix.csv), Z, delimiter,) # 4. 保存注視點統(tǒng)計數(shù)據(jù) stats fixations_df.describe().T stats_path os.path.join(output_dir, fixation_statistics.csv) stats.to_csv(stats_path) print(f統(tǒng)計數(shù)據(jù)已保存至{stats_path}) # 5. 生成簡易文本報告 report_path os.path.join(output_dir, analysis_report.txt) with open(report_path, w) as f: f.write(f眼動數(shù)據(jù)分析報告\n) f.write(f*40 \n) f.write(f總注視點數(shù)量{len(fixations_df)}\n) f.write(f總注視時長{fixations_df[duration].sum():.0f} ms\n) f.write(f平均注視時長{fixations_df[duration].mean():.0f} ms\n) f.write(f注視點空間標(biāo)準(zhǔn)差 (X){fixations_df[fixation_x].std():.1f} px\n) f.write(f注視點空間標(biāo)準(zhǔn)差 (Y){fixations_df[fixation_y].std():.1f} px\n) f.write(f熱力圖峰值坐標(biāo)近似{np.unravel_index(Z.argmax(), Z.shape)}\n) print(f報告已保存至{report_path})通過這樣一套流程你就擁有了從原始數(shù)據(jù)到出版級圖表和統(tǒng)計報告的完整能力。導(dǎo)出的高分辨率PNG圖片可以直接用于論文或演示文稿CSV格式的中間數(shù)據(jù)也方便與其他工具如R SPSS進行交互。7. 常見問題與排查技巧實錄在實際操作中你一定會遇到各種預(yù)料之外的情況。下面是我在多個項目中總結(jié)的典型問題及其解決方案。7.1 數(shù)據(jù)與圖像對不齊問題繪制的注視點全部偏移到圖像角落或完全錯位。排查檢查坐標(biāo)映射確認屏幕分辨率screen_width,screen_height和刺激材料尺寸stim_width,stim_height是否輸入正確。確保映射函數(shù)中的乘除順序無誤。檢查坐標(biāo)原點計算機圖形學(xué)中圖像坐標(biāo)原點通常在左上角(0,0)而某些繪圖庫或數(shù)據(jù)可能使用左下角。Matplotlib的imshow的extent參數(shù)[left, right, bottom, top]決定了圖像在坐標(biāo)軸中的位置注意bottom和top的設(shè)置通常bottom是heighttop是0以實現(xiàn)原點在左上角。驗證原始數(shù)據(jù)用簡單的散點圖不帶背景繪制原始gaze_x和gaze_y看其范圍是否與宣稱的屏幕分辨率匹配。有時數(shù)據(jù)可能是歸一化的0-1需要反歸一化。7.2 熱力圖過于稀疏或過度平滑問題熱力圖要么是幾個孤立的亮點要么是一片模糊沒有清晰的焦點。解決調(diào)整sigma帶寬這是最關(guān)鍵的參數(shù)??梢韵葒L試一個經(jīng)驗值如屏幕寬度的1/50到1/20。然后根據(jù)效果微調(diào)。技巧繪制不同sigma值如10 25 50 100的熱力圖進行對比選擇能清晰顯示熱點又不失細節(jié)的那個。檢查數(shù)據(jù)量如果單個被試的注視點很少如少于20個熱力圖必然稀疏。考慮聚合多個試次或多個被試的數(shù)據(jù)。使用自適應(yīng)帶寬如上面提到的adaptive_heatmap函數(shù)對于數(shù)據(jù)分布不均勻的情況效果更好。下采樣網(wǎng)格downscale_factor太小如0.05會導(dǎo)致網(wǎng)格太粗糙丟失細節(jié)太大如0.8則計算緩慢。0.1到0.3是一個合理的范圍。7.3 注視點識別算法效果不佳問題I-VT算法將很多掃視點誤判為注視點或者把長注視拆成了多個短注視。調(diào)參與優(yōu)化速度閾值velocity_threshold這是區(qū)分注視和掃視的關(guān)鍵??梢酝ㄟ^繪制所有采樣點的速度分布直方圖來觀察。通常速度分布會呈現(xiàn)雙峰一個低峰注視一個高峰掃視。閾值應(yīng)設(shè)在兩峰之間的谷底附近。最小注視持續(xù)時間min_duration通常設(shè)置在50-200毫秒。低于此值可能是噪音或微眼跳??梢越Y(jié)合領(lǐng)域知識調(diào)整??紤]使用更復(fù)雜的算法對于高速或噪音大的數(shù)據(jù)可以嘗試I-DT散度閾值算法或者使用開源庫如pymovements、eyekit它們實現(xiàn)了更魯棒的算法。7.4 性能問題處理大數(shù)據(jù)集時速度慢問題當(dāng)處理高頻采樣如500Hz的長時程數(shù)據(jù)或多個被試數(shù)據(jù)時核密度估計計算非常耗時。優(yōu)化策略下采樣在計算熱力圖前對注視點坐標(biāo)進行網(wǎng)格下采樣或者使用downscale_factor大幅降低評估網(wǎng)格的分辨率。近似計算使用更快的近似KDE方法例如通過scipy.ndimage.gaussian_filter對二值化的注視點矩陣進行高斯濾波這在很多情況下是足夠的近似且速度快得多。并行處理如果分析多個獨立被試使用multiprocessing或joblib庫進行并行計算。使用專用庫探索如KDEpy這樣的庫它提供了更高效的算法實現(xiàn)。7.5 可視化圖表不夠美觀或信息過載問題生成的圖看起來不專業(yè)或者元素太多難以閱讀。設(shè)計建議顏色映射熱力圖慎用彩虹色jet雖然對比強但可能扭曲數(shù)據(jù)感知。推薦使用感知均勻的色圖如viridis、plasma、magma適用于黑白打印時仍有區(qū)分度。在Seaborn中cmaprocket或cmapmako也是很好的選擇。簡化軌跡圖如果注視點過多軌跡圖會變成一團亂麻??梢試L試1只繪制前N個或后N個注視點2用透明度alpha表示時間遠近3完全移除連線只用帶序號的散點。分面繪制對于多試次或多被試對比使用plt.subplots創(chuàng)建多個子圖保持坐標(biāo)軸范圍一致便于比較。添加比例尺和指北針如果背景是真實場景圖添加比例尺如“200像素”和方向指示會提升專業(yè)性。掌握這些排查技巧你就能從容應(yīng)對大部分分析過程中遇到的挑戰(zhàn)確保最終的可視化結(jié)果既準(zhǔn)確又具有洞察力。整個Python實現(xiàn)流程雖然涉及多個步驟但一旦構(gòu)建成模塊化的腳本就可以成為你分析眼動數(shù)據(jù)的強大、靈活且可復(fù)用的武器庫。本文還有配套的精品資源點擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
婷婷综合干| 思思热在线视频99| 色五月综合激情网| 丁香五月天电影| 久久这里99| 桔色成人官方网站| 五月天com| 久久婷婷五| 天天插天天玩天天干| 婷婷五月成人有| www.99成人视频| 亚洲乱码日产精品BD| 玖玖婷婷色五月| 亚洲五月婷天天操| 色偷偷AV亚洲男人的天堂| 中文av在线观看| 可以免费看av网站| 伊人在线视频| 玖玖婷婷五月| 激情婷婷。| 五月色情婷婷| 五月婷婷五月天| 婷婷九色| 九九AV| 日韩三级视频一区二区| 激情五月天开心网丁香无码| 天天日天天插| 久久在线大香蕉| 久久久久久久五月婷婷六月丁香综合,开心激情综合网 | 日韩婷久| 99色在线| 丁香六月啪啪| 五月丁香激情综合网| 九九热这里有精品视频| 日韩久久日| 中文成人在线| 久久这里都是精品免费| 亚洲无码色| 婷婷综合在线网| 激情五月色在线播放| 久超免费视频| 天天天天干| 亚洲精品网站色视频| 日本久久网| 人妻AV在线| 色婷婷电影网| 99综合一区| 五月婷婷精品视频| 婷婷天堂站| 五月激情日本在线| 五月婷婷偷拍| 久久久久九九九九视屏小说88| 开心深爱激情网| 激情av在线| 国产操碰| 婷婷基地五月色| 丰滿爆乳一区二区三区| 夜夜夜夜操| 激情玖玖综合网| 六月撸婷婷| 婷婷丁香社区网| 一本大道嫩草AV无码专区| | 色婷婷国产精品综合在线观看| 五月婷婷黄色| 五月丁香啪啪| 深爱激情网五月天| 天天做天天要天天爽| 久久久久久久久99精品| 99色在线观看视频| a毛片二逼wwwwwwwwww| 久久人人妻| 深情五月天| 国产色色网站网址| 婷婷激情五月天7| 91ncm视频| 天天爱天天操| 9久热在线视频精品| 华人在线免费| 日本色婷婷| 国产精品香蕉| 久久九九热视频| 婷婷九月激情网| 色色综合网站| 99视频精品全部免费看| 人人操99| 九月色婷婷| 久久婷婷五月综合一| 久操大香蕉| AA丁香综合激情| 99热天堂| 丁香五月色| 九月丁香婷婷| 综合激情四射一theav| 婷婷伊人綜合中文| 婷婷丁香花五月天| 五月婷婷六月丁香激情深爱| 天天日日人| 色综合久久88色综合天天99| 91天堂网综合| 五月天婷五月天综合网小说首页-五月天激激婷婷大综合,婷婷亚洲综合五月天小说 | 五月天在线视频尤物视频在线看| 五月天啪啪| 日韩色久| 日本欧美成人片AAAA| 激情五月综合| 久久久五月天网站| 六月婷婷色五月| 丁香六月在线| 九九色影院| 粉嫩AV久久一区二区三区 | 久久久婷婷婷| 久久婷婷的综合色丁香五月| 人妻aV在线| 六月丁香视频网站| 91在线日| 超碰在线免费9| 五月婷无码| 亚洲成人在线五月天| 色网五月婷婷| 色五月涩涩婷婷蜜桃| 五月婷婷六月激情在线| 九色婷婷| 9久国产精品| 成人婷婷五月| 性做久久久久久久免费看| 久久无意婷婷| www.sd-xiangsu.cpm| 人妻久久久久久久 | 男人操女人高潮91视频| 色天天狠狠干| 91中文狠狠综合| 久久影视婷婷五月| 婷婷色成人| 日韩黄在免| 99视频色在线观看| 天天日天天干天天操| 超级碰 久久9| 少妇激情五月天| 日本三级色| 色噜噜婷婷| 99热在线观看| 色婷婷裸体色性在线| 搡BBBB搡BBB搡18| 人人舔人人色人人高潮| 成人亚洲精品久久久久| 五月人妻婷婷视频| 国产性爱色| 五月天婷婷在线播放| 色五月天 丁香| 激情五月少妇| 婷婷五月色情| 99精品免费视频| 91丨九色丨东北熟女| AV性爱网| 五月婷婷深爱六月| 色综合网上班开心婷婷久久| 日日夜夜干| 丁香五月,激情五月,深爱五月| 另类婷婷五月天啪帕帕| 一级二级色大片| 中文字幕视频在线播放| 在线观看视频1区| 看全色黄大色大片| 久久精品国产色| 久草丁香婷婷1024| 色五月天电影| 99热精品无码| 思思热99er在线视频| 玖玖婷婷色欲| 91色五月| 欧美这里只有精品| 亚洲成人电影aaaa| 成人午夜无码视频| 成人免费在线电影| 操一操| 99色热| 伊人久热91| 91av传媒高清在线视频网| 久久99热这里只有精品| 国产在线另类五月婷婷| 五月香蕉综合| 俺也去婷婷五月天第五色| 亚洲AV成人精品网站在线播放| 99热91| 色播五月婷婷| 91丨九色丨熟女|新版| 丁香六月爱综合| 色五月天天| 丁香五月激情啪啪| 婷婷五月天激情AV影院| 亚洲综合激| 色就是色婷婷五月亚洲激情| 亚洲午夜AV| 久久色婷婷| 夜夜资源站| 色五月婷婷在线| 粉嫩av蜜桃av蜜臀av| 久久99精品久久久久久噜噜| 九九热99视频| 色五月婷婷老师| 色综合天天综合成人网| www.97视频| 被强行糟蹋的女人A片| 色婷五月天| 色婷婷女优有码五月亭| 一操久久| 精品婷婷五| 26UUU在线观看| 色五月婷婷操逼| http://www.sd-xiangsu.com/| 夜夜骑夜夜撸| 久久久天堂国产精品女人| 四虎成人精品永久免费AV九九| 91人人操| 91黄色五月天视频| 色情五月天小说| 全国最新疫情| 亚洲综合色色色| 婷婷激情五月天桃花网| 黄网免费看| 袁子仪视频观看| 激情网婷婷婷| 日日干日日| 婷婷成人av| 99视频久久久| 丁香六月情| 久久婷婷五月综合色丁香花| 26uuu.| 91超级碰在线| 五月天深爱激情网| 中文字幕在线免费观看视频| 91在线操| 男人的天堂五月丁香| 在线看AV| 五月婷婷激情色情网| 91丨九色丨43老版熟女| 8区视频在线| 开心五月网 | 思思热99在线| 久久婷婷网址| 精品人妻在线| 综合久久9| 人妻激情在线| 久热黄色| 激情网第九色| 天天射网站| 丁香婷婷六月天| 狠狠干在线| 色欲影香| 99婷婷狠狠成为人免费视频| 97人人操在线| av在线免费播放观看| 99高级会所久久| 99热思思| 免费观看亚洲AV片| 天天爽天天日| 婷婷五月天堂| 五月婷婷福利| 99啪视频在线观看| 五月婷婷久久大香蕉| mmm1717.6dbm人人爱人人操| 色婷婷91| 久久怡红院| 91视频精品99| 亚洲性受XXXX五月丁香| 亚洲九区| 色色色.COM| 久久亚洲色导航| 久99在线视频| 91九色最新视频| 深爱激情综合| 色99视频| www.91婷婷| 五月丁香日本在线视频观看| 青青草原爱爱网| 婷婷影视久久| www.婷婷亚洲基地| 大天天伊人| www.天天色综合| 五月天婷婷影院| 99精品国产乱码久久久人妻| 欧美性猛交 XXXX 乱大交| 日日狠狠久久偷偷四色综合免费 | 五月婷婷综合网| 久久婷婷网| 狠狠干.com| 久婷| 六月综合在线| 五月天丁香网站| WwW天天干| 美女要搞搞天天搞搞搞网站| www.99热视频在线观看| 天天爽—爽| 成人网站免费在线播放| 婷婷最新地址| 亚洲成人网站在线播放| av在线婷婷| 色色无码| 五月天婷婷在线AN| 欧美五月婷婷| 五月丁香影视| 久久综合五月婷婷| 九久热| 亚洲免费99| 超碰色女| 久久免费试看120秒| 99re热视频这里只精品| 99热99色| 色播五月丁香| av网址在线| 五月婷婷丁香大陆免费| 色五月播五月| 97色欧美| 六月婷婷色综合| 成人丁香五月| 五月丁香人妻| 激情亚洲婷婷六月| 九九精品综合| 五月婷亚洲精品AV天堂| 五月婷婷综合久久| 婷久久综合| 十区AV| 色综合开心五月深爱五月| 婷婷五月天激情基地| 天天综合在线网| 色久综合| 亚洲色区17| 日操| 另类天堂| 九九蜜臀精品| 九九热精品在线| 少妇人妻人伦A片| 色99超碰| 亚洲色爱综合| 五月丁香六月色情网欧美| 五月天激情网图片| 五月香婷婷| 日韩AV在线免费| 久久99网址| 五月伊人婷婷| 日本三级日本黄色| 婷婷五月天综合蜜桃| 丝袜大香蕉| 九色91国产| 色五月激情| 久久九九国产| 亚洲激情 久久| 人人操人人爱丁香五月| 五月色婷婷影院| 黑人糟蹋人妻HD中文字幕| 麻豆五月丁香婷婷| 国产精品-91JQ就要激情网91JQ6.91JQ27.CASA:16888 | 激情五月丁香五月| 久久性刺激| 亚洲色在线观看| a色色片| 99热这里精品| 综合精品啪啪| 亚洲婷婷五月天激情综合| 超碰在线国产| 人妻射精AV| 欧美色五月天| 五月婷婷综合久久| 婷婷午夜| 666555。COm毛片| 精品婷婷| 婷婷五月欧美综合| 色婷婷小说网| 色五月无码| 亚洲超碰在线| 五月情色天| 91一起操| 亚洲午夜AV| 久热a| 亚洲性视频| 26uuu国产| 播五月丁香三月婷婷| 另类婷婷五月天啪帕帕| 91综合国免费久入| 直接看的AV| 琪琪理论片| 亚洲午夜Av| 91超碰在线观看| 亚洲 在线 性爱 | 人妻丰满精品一区二区A片| 97人人超| www.91.com黄| 99热国产| 99爱在线视频观看| 婷婷五月综合激情小说| 蜜臀综合久草| 热99精品视频五月| 亚洲激情五月天| 99热这里有精品2| 丁香五月婷婷激情四射| 精品久久艹| 日本五月天激情| 婷婷五月六月丁香综合| 久久精品系列| 图片区 小说区 区 亚洲五月| 日本久久性| 五月天激情AV| 欧美日韩AAAAA| caop在线视频| 五月天激情婷婷| 丁香婷婷性爱| 丁香五月天色| 婷婷深爱色五月| 九色激情网| 内射爽无广熟女亚洲| 久久机热这里只有精品| 色五月婷婷、老熟女| 99热综合在线| www.狠狠操.co m| 久久婷婷五月国产激情综合片| 国产全是老熟女太爽了| 99天堂在线观看免费视频| 成人在线观看国产| 五月丁香六月天| 色五月亚洲| 五月婷婷偷拍| 亚洲色在线观看| 狠狠五月激情丁香六月| 青草五月天| 九九热九九| 亚洲色五月| 久热9| 99热插| 大香蕉 伊人夜| 色欲av伊人久久大香线蕉影院| 色五月丁香A欧美com| 婷婷综合久久综合| 丁香五月欧美成人| 久久婷婷五月综合啪| 99综合| 色婷婷操逼| 中文字幕无码人妻少妇免费视频 | 五月丁香无码| 激情五月婷婷在线观看| 五月丁香偷拍| 91美女啪啪| 丁香五月性| 国产精品蜜臀99| 五月天婷婷网站888| 九九视频在线观看视频6 | 99婷婷色| 婷婷射综合| 五月天成人综合| 色婷婷综合综合网| www.五月天婷婷姐姐| 色婷婷五月综合在线| 亚洲欧美在线观看| 91人人爽狠狠狠| 五月天伊人综合| 亚洲九区| 操一区| 99热综合网| 性欧美大战久久久久久久83| 久久刺激网| 人人干人人操人人摸| 欧美性色A片免费免费观看的| 亚洲成人无码网站| 六月婷婷在线视频| 亚洲99一级无嗎特制在线| 九九色中文| 丁香九九九九| 九色 在线| 亚洲色色色色| 亚洲综合五月天| 99久久婷婷国产综合精品草原| 五月婷婷网五月在线| 狠狠色婷婷7777久| 人妻久久久久| 九月婷婷久久| 99自拍视频网站| 五月婷婷丁香俺日污视频| 99热官网| 九九这里有精品视频| 婷婷99狠狠躁天天躁| 1024婷婷综合久久五月天| 情久久综合五月天| 婷婷五月色| 91丨九色丨白浆秘| 婷婷五月天色| 大香蕉久久久| 九九视频这里只有精品| 久婷婷婷| www.超碰| 婷婷色无码| 亚洲国产精品二二三三区| www.夜夜夜| 四虎国产精品永久在线国在线| 色频玖玖五月天| www.91久久| 综合久久丁香婷婷,五月婷婷六月丁香,开心激情综合网,六月丁香在线观看,婷婷丁 | 九月丁香婷婷基地| 丁香五月人妻熟女| 婷婷综合干| 亚洲天天| 久久99这里| 色五月婷婷91在线| 中文字幕av在线| 99re在线观看视频| 久久婷婷五月综合一| 天天天天天久久久久久| 五月丁香婷婷伊人日韩| 五月丁香网av| 三级黄色大片视频| 五月人妻婷婷视频| 色狠狠色综合久久久绯色aⅴ影视| 久9热| 天天做天天爱天天搞| 成人一级片| 丁香五月天啪啪| 99热久| | 91xxxx九色| 91肏| 很很操很很操| 五月天激情视频网站| 激情五月天久久丁香| 亚洲日韩乱码一区二区三区四区 | 激情五月小说婷婷| 久久精品99久久| 亚洲色婷婷色| 超碰色碰碰| 色五月天激情| 免费在线观看av网站| 97在线精品| 天天日天天干天天天| 激情五月激情综合网一级丸片| 在线看黄色| 中文字幕av亚洲| 婷婷综合五月| 久久久精品色色色| 婷婷五月天第四色| 天天色播| 91互操| 欧美啪啪五月天| 成人在线日韩欧美| 激情网站综合五月天| 99爱最新免费视频在线观看| 亚洲精品视频在线| 大香伊人久色| 久久婷狠狠色| 五月丁香在线国产| 五月丁香影视| 国产精品电影| 日本婷色| 久操操| 五月停停丁香| 婷婷丁香五月av| 人人摸人人摸| 亚洲综合视频在线| 亚洲一区国产传媒| 色五月在线播放| 任你躁XXXXX麻豆精品| 999热在线视频| 色停停五月,在线观看| 欧美午夜乱妇午夜福利| 啪啪干伊人婷婷| 青草激情综合| 日本三级韩三级99久久| 久久九色| 91一起操| 婷婷六月久久综合导航| 黄网网站在线播放| 91热在线| 色久九| 九热...av| 日韩伊人大香蕉| 五月丁香六月婷婷无码| 人妻丰满精品一区二区A片| 色啪影院| 日本99热| 人妻操逼视频。| 国产激情综合五月久久| 五月色情婷婷| 五月天婷婷色在线视频免费观看| 99熟女| 丁香五月另类色婷婷麻豆| 操操自拍| 热99精品视频在线观看| 99精品免费| 综合激情五月综合激情五月激情1 天天爱天天做天天舔 | 激情五月婷婷色| 日本美女97在线视频| 色人妻五月| 337久久| www.av骚货| 日韩AV中文字幕在线| 开心五月网| 亚洲综合999| 色婷婷电影网| 一區四區歐美日韓| 五月停停99| 婷婷五月天影院| 性爱网五月天| 99久在线精品99re8| 婷婷综合成人五月天| 色婷婷呢狠禁久禁| 日韩色色视频| 欧美激情 日韩无码 婷婷 五月天 久久婷婷丁香五月一二三 | 欧美五月丁香啪啪响视频| 嫩BBB搡BBBB榛BBBB| yazhouzonghesese| 99热99| 丁香色婷婷五月天| 午夜爱爱爱成人| 欧美久久久中文字幕| 伊人久久大香线蕉av一区| 五月丁香av中文| 激情婷婷五月天| 色综合色色色| 丁香六月婷婷缴情欧美| 91婷婷丁香五月亚洲| 91色综合| 天天拍夜夜爽| 91精品久久久久久久久久久久| 五月丁香激情综合| 亚洲99精品欧美一区| 夜夜资源站| 国产看真人毛片爱做A片| 《蜘蛛女》梁铮1995| 99久久婷婷国产综合| 婷婷色色综合| 精品五月天| 激情综合亚洲色婷婷五月| 日本九九视频| 丁香花大香蕉婷婷综合| 9 1超碰九色| 亚城区在线| 99er这里只有精品视频| www.99免费视频| 亚洲爆乳无码精品AAA片蜜桃| 色中色综合| 玖玖在线视频福利| 天天肏天天肏天天肏| 精品一区二区三区四区五区六区| 99热这里只有精品免费| 色色欧美色色| 五月激激网w'w'w| 免费成片在线观看| 九月停停| 久热99| 欧美人人超级碰| 八戒青柠影视剧在线观看| 另类精品视频在线观看| 狠狠操狠狠操AV| 最新精品视频99| 五月婷久久| 五月久久网| 精品综合网在线| 天天爽夜夜操| 91狠狠色丁香婷婷综合久久| 日韩无码成人电影| 操操自拍| 久久婷.com| 五月天亚洲综合网| 久久久久丁香婷婷五月天| 婷婷激情综合色五月久久,色婷婷丁香花,丁香婷婷五月情天,久久婷婷五月综合色 | 欧美性爱五月天| 欧美精品999| 五月丁香六月婷| 五月天激情视频网站| 日批在线看| www.99热最新视频8| 91狠狠色| aaa丁香五月天| 五月丁香激情四射| 色五月婷婷综合在线| 久久九九re热| 人人综合91网| 婷婷九色| 中文字幕av在线| 精典久久| 亚洲综合在线伊人婷| 丁香五月婷婷亚洲综合精品| 九色激情网| 狼人婷婷综合| 日本久久视频| 四色永久成人网站| 男人天堂亚洲综合| 激情五月综合色婷婷| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 国产成人精品一区二区三区视频| 欧美顶级少妇做爰HD| 一本大道熟女人妻中文字幕在线| 九久9精品| 俺也去五月婷婷丁| 99久久欧美| 性爱激情小说AV五月丁香花| 色在线99| 激情久久久| 无码中文一区二区三区| 婷婷六月伊人| 丁香五月激情啪啪| 久热91| 婷婷六月天| 啪啪日热| 七七色色综合| 日本99热| 精品无码视频| 色欲午夜无码久久久久久张津瑜| 狠狠综合网| 性爱久久| 色yeye色综合| 婷婷久久久| 精品久热| 伊人成综合五月婷婷| 99热在线资源| 久久五月天综合视频网站| 婷婷五月丁香色情| 国产97色在线| 极品少妇XXXX精品少妇偷拍| 操b视频在线观看一区二区| 热热99爱爱| ww亚洲ww在线观看| 亚洲综合激情五月| 五月亭亭直播| 日日操夜夜操中国无码| 午夜丁香丁香婷婷| 中文字幕色色| 国产精品美女| 久久精品天| 久久综合丁香五月| 五月丁香婷婷综合| 国产肥白大熟妇BBBB视频| 97艹| 思思99精品视频在线观看| 五月婷婷婷婷网| 超碰在线国产| 99色日本| 五月天精品综合| 国产激情综合| 玖玖伊人网| 日本熟女三区| 欧美日本黄色| 久久网址99热| 人人人人人人人人人草| 五月丁香综合影院| 99色综合久久| 激情五月图| 热五月婷婷| 天堂在线观看视频| 2015好吊操| 123草逼网| 99色在线观看视频者| 五月激情婷婷图片基地| AV成人在线播放| 婷婷丁香91综合| 五月天天天操天天爽夜夜操| www.99精品在线| 九九视频在线观看视频6| 91viP在线看| 色屌丝中文字幕| 在线视频九色97| 影音先锋五月婷婷| 五月天无码| 操逼六区| 久机视频这只有精品| 色婷婷五月天激情在线播放| 青青草轻轻操| 成人在线综合| 婷婷综合六月| 久久久精品色| 变态另类9| 激情五月婷婷| 激情第四色| 热99在线精品| 玖玖爱综合网| 婷婷六月色| 亚洲AV永久无码影院黑人 | 色综合综合网| 国产精品一区在线观看你懂的| 成人 视频免费观看网站| 99热这里只有精品在线观看| 99热精品免费在线观看| 一本综合丁香日日狠狠色| 99热精品一区| 日日夜夜青青草| 天天操夜夜夜拍拍拍| 97激情五月天| 天天操夜夜啊| 热无码A∨| 婷婷五月天99| 亚洲国产成人裸舞| 婷婷丁香综合成人| 日本三级日本三级三级人妇四虎| 婷婷丁香综合成人| 九九精品婷| 天天操婷婷| 亚洲AV无码成人精品区电影网| 青青草激情网| 99热亚洲| 国产 码在线成人网站| 亚洲综合激情五月天婷婷| 99精品久久| 五月丁香天天| 97在线日韩| 亚洲午夜一区二区| 九月大香蕉| 六月丁香av| 色黑鬼导航| 另类小说五月天| 五月婷久久| 色综合中文综合网| 激情久久久久久| 视频这里只有精品| 蜜桃婷婷丁香综合久久开心亚洲| 女人天堂 AV| 日韩操啪| 亚洲色五月婷婷| 狠狠色激情综合| 久久天堂女人| 亚洲操b| 26uuu欧美亚洲日韩| 丁香婷婷六月| 婷婷伊人中文字幕| 色情播放| 日韩成人中文| 五月天淫乱视频| 五月婷五月婷伊人伊人五月婷| 99精品视频免费观看近期发布| 97五月天婷婷| 色色色婷婷五月| 亚洲视频在线观看| 亚洲欧洲中文日韩久久AV乱码| 97人人看| 丁香五月亚洲综合丝袜| 五月婷婷六月丁香在线视频免费在线观看| 91超碰在线播放| 亚洲宗合激情| 国产精品成人AV在线| 五月天婷婷色小说| 97人人操在线| ..真实国产乱子伦毛片| 丁香五月婷婷超碰在线| 人人爱人人添| 日本无va视频| 一起草av在线观看| 精品亚洲国产成AV人片传媒| 色婷婷中文在线| 婷婷久久六月天| 中文AV在线播放| 另类图片五月天激情| 97色婷| 日本色五月| 激情婷婷综合| 色婷婷文字幕| 无码少妇高潮喷水A片免费| 在线观看av网站| 淫水导航| 99色精品视频| 久热91精品| 久久婷婷电影| 少妇出轨做爰高潮A片| 9久精品视频| 九九婷婷网五月天| 五月婷婷中文网| 伊人久久大香网| 五月天激情综合网| 久久久婷婷五月天| 天天日夜夜爽| 久久激情天堂| 丁香六月丁香婷婷激情| 婷婷五月天开心网| 日韩色久| 99色色| 超碰熟女拍拍| 激情五月五月五月婷婷| 免费成人va| 伊人www22综合色| 婷婷新网址| ztEJj| 亚洲综合色婷| 五月丁香色色网| 色情五月天丁香社区| 天天骑天天操| 久久久91| 2015超碰| 久久久宗合| 91操在线视频| 久久久久激情网| 综合伊人久久| 丁香婷婷五月综合影院| 91se在线观看| 99小视频在线观看| 色天堂操| 2016日日夜夜操| Aα在线免费观看| 色九月综合| 五月婷婷亚洲综合在线| 色婷婷人人| 性爱技巧五月| 色播激情婷婷| 伊人色五月| 一级性爱大片| 亚洲久久天堂| 丁香婷婷久久五月天| 久久久久久婷| 日本97人人| 99热全是精品| 99久在线精品99re5热视频| 欧美69色| 亚洲激情综| 成人视屏在线观看| 日本91在线| 婷婷综合久久| 婷婷狠狠久久| 婷婷五月天香蕉| 亚洲色综合性| 婷婷五月天高清无码| 激情五月综合亚洲另类| 色五月天在线观看| 色情综合网| 三级片AAA久久久AAA久久久AAA| 丁香五月天大香蕉啪啪| 国产XXXX搡XXXXX搡麻豆| 狠狠久久婷五月综合色| yw国产AV| 丁香五月婷婷激情97| 丁香五月天影院| 婷婷九月亚洲| 另类激情五月| 99热r| 五月婷婷这里都是精品| 操操操操操电影网| 精品人妻在线| 天天干天天干天天操| 色色色网站| 黄色AAAAAAA| 色色色色色五月丁香| 狠狠色婷婷| 天天干天天爽天天操| 丁香五月成人| 少妇高潮A片无套内谢麻豆传| 乱精品一区字幕二区| 97久久五月丁香婷婷| 激情综合播播| A A色色| 婷婷性爱影院| 色日本颜射| 丁香久久综合| 五月天激情网址| 99视频在线精品免费观看2| PORNY九色9l自拍视频成人| 在线看的免费网站| 十区AV| 五月天色婷婷视频| 丁香六月久久| 超碰chaompinm| 日本44久久在线| 99人人干人人| 丁香欧美| 99A片| 97人妻碰碰中文无码久热丝袜| 亭亭丁香97| 99色综合网| 午夜五月天| 丰满老熟妇BBBBB搡BBB| 亚洲操B视频| 天天插轮理| 免费国产视频| 美女主播野战视步页| 国产熟女一区二区三区五月婷| 色色色色五月| 婷婷性爱视频在线| 五月天激情在线视频| 五月丁香六月婷婷姐| 成人精品在线观看| 色婷婷免费视频| 五月丁香久久呀| 99热思思| 成人毛片在线免费观看| 国产精品激情五月天色婷婷| 日韩欧洲亚洲| 97碰碰人人视频| 天天草天天舔| 亚洲六月婷婷| 人人干女人| 天天操夜夜玩!| 精品久久久人妻| 啪啪婷婷五月天激情| 热九九在线| 超碰猛烈的性猛交| 日本九九九九九九| 亚洲色无码| 国产乱妇乱子在线播视频播放网站| 久久电影4399| 天天色粽合合合合合合合| 无码成人AAAAA毛片AI换脸| 婷婷丁香社区网| 狠狠爱五月婷婷| 婷婷五月天你懂的| 99网| 久9综合| 91无码视频| 99热这里只有精品在线| 狠狠色综合久久久久| 九九热这里只有精品9| 亚洲最大在线| 色播播婷婷| 色色五月天婷婷丁香| 婷婷五月综合社区在线| 久久网思思| 成人在线日韩| 九九综合| 五月婷综合| WWW.99热| 亚洲超碰在线| 天堂网操| 婷婷五月天伦理| 国产毛片精品一区二区色欲黄A片 欧美交换配乱吟粗大25P | 99内射视频| 婷婷免费视频| 天天做天天爱| 国产夫妻操逼内射视频| av亚洲国产小电影| 日韩另类在线观看| 久9免费视频| 色婷操逼| 色色网站| 婷婷在线操| 日本二级毛片二级毛片| 99性爱无码| 丁香五月激情综合| 丁香大香蕉| AV性爱在线| 色丁香综合影院| 日逼影音先锋男人资源站| www五月天激情com| 五月停亭久久电影| 亚洲无码色色| 超碰99热精品| 久久这里只有精品99| 五月婷婷激情综合在线| 亚洲无码99| 99热只有精品在线观看| 五月色综合| 亚洲va在线| 五月99久久| 精品爆操| 国产成人+综合亚洲+天堂| 久久综合五月天| 久热只有这里有精品| 一级AV片| 日韩99视频| 综合性爱网| 久久99网| 日韩人妻操逼视频| 4438激情网| 亚洲天天操| 五月婷高清视频| 97婷婷久久丁香| 五月天婷婷綜合院| 日韩抽插操逼| 在线综合啪| 亚洲啪视频| 五月天堂婷婷| 六月婷婷香蕉| 丁香五月av| 99热777| 99热99干| 9久久狠狠的| 操碰99| 五月天成人在线精品| 97超碰色| 五月综合久久| 五月天综合激情网| 超碰色女人| 国产肥白大熟妇BBBB视频| 五月天综合在线观看视频| 欧美婷婷| 9l视频自拍九色9l黑人| 九月丁香亭亭| 丁香五月23111| 久/久精品99看9| 久久国产AV| 欧美天天五月丁香免费观看| 久久综合最新网址| 九九人人操| 激情五月天com| 日 日干 日日做| 丁香五月777| 国产亚洲精品久久久久苍井松 | 大香蕉久艹| 怡红院精品视频久久久久久久久| 久久大香蕉同僚| 九月婷婷在线视频| 五月丁香| 欧美色频| 亚洲成人乱码av网站| 五月天日日操夜夜操 | 丁香蜜臀黄色婷婷五月天| 亚洲午夜在线视频| 色综合色色| 色综合九九| 精品一区久热| 91丨九色丨东北熟女| 五月婷婷视频| 五月婷深深爱激情网| 97人人草| 小色小蛇伊人婷婷色香五月| 九九激情| 男女99免费视频| 九九无码| 亚洲bt丁香五月天婷婷激情小说| 五月婷婷综合热| 丁香五月婷婷啪啪| 午夜成人AV在线| 五月天大香蕉AV| 色五月丁香婷婷| 玖玖爱综合网| 色五月丁香五月天| 亚洲免费99| 五月婷婷丁香色播网| 99在线观看这里都是精品| 黄网在线免费观看| 亚洲精品无码久久| 亚洲婷婷91丁香| 亚洲色婷婷五月天| 丁香五月天激情四射网络不好| 久久五月天影院| 屁股翘好撅高迎合跪趴| 性做久久久久久久免费看| 超碰在线91| 天天做天天爱| 久久九九色| 激情五月综合亚洲另类| 337p大胆噜噜噜噜噜91Av| 伊人色综合网| 夜夜操夜夜操| 性综合网| 日韩操逼小电影| 色婷婷色婷婷五月| 日韩精品无码99| 蜜桃五月天色| 五月天婷婷黄色| 亚洲天码视频www蛋播视频| 五月婷婷无码| 亚洲在线操| 丁香五月91| 激情五月天视频| 五月天狠狠网站| 久久天堂| 91在线观看www| 久久精品女人天堂AAA| 久草网大香视频| 亚洲精品网址| 97色97干| 天堂色色色| 久久久久久久久久久久久9| 日韩AV免费电影在线播放| 五月丁香啪啪综合| 中文字幕在线日亚州9| 九九色精品| 乱岳熟女50岁| 九九干视频| 91久久婷婷| 操操碰| 成人超碰网| 色八戒操婷婷| 99乱视频| 天天天操天天天爰| 九九精品视频在线6| 日本婷色| 综合色播| 人人摸人人操人人爱| 亚洲AV成人精品网站在线播放| 五月天婷婷激情四射综合| 五月婷婷丁香大陆免费| 色婷婷影视| WWW、日本色丁香、co m| 免费在线观看av网站| 五月激情婷婷开心| 播四月婷婷六月丁香| 五月丁香啪啪激情| 久久精彩免费视频| 人人操超碰| 婷婷涩涩五月天| 五月婷婷六月丁香综合视频在线| 久久网思思| 99热在线看| 婷婷成人五月天| 日本人妻操| 日韩 欧美 国产 一区 二区| 亚洲婷婷婷| 天天日综合| 激情六月天| 五月丁香久久婷| www.久久99| 日韩AV大全| 九九热精品| 色五月色五天色情网址| av色婷婷| 天天爽天天干天天| 小视频久久久aaa| 超碰A V在线| 亚洲激情亚洲激情 | 9|无码久久久久久| 婷婷五月伦理| 婷婷色五月丁香六月欧美啪| 伊人婷婷大香蕉| 热久久999| 欧美日韩国产一区| er99免费视频在线| 婷婷婷久久久| 高清资源站日A美A欧亚…| 色碰碰| 婷婷五月图片小说视频| 97人人干人人操| 天天综合色| 丁香av网| 婷婷五月天激情综合| 亚洲一区二区无遮挡A片| 99只有精品9| 久久婷婷激情五月天一区二区| 日本欧美成人片AAAA| 成人精品人妻| 99re在线免费视频| 九九热视频免费观看| 天天综合网在线| 好色婷婷| 俺去也五月天婷婷| 成人做爰A片免费看视频| 超级久久久| 亚洲欧洲色色| 五月婷婷啪啪| 91九色无码日韩| 激情五月丁香五月| 成人无码髙潮喷水A片| 婷婷六月色| 噜噜色com| 69超碰在线| 久久色五月| 天天插天天爽| 婷婷五月丁香啪啪| 丁香五月天社区| 国精产品一区一区三区免费视频| 色V狠狠的干| 色婷婷偷拍| 亚洲免费观看高清完整版AV线| 婷婷五月深深爱| 在线观看免费视频| 亚洲va日| 大香蕉九九| 丁香五月天激情五月天激情五月天激情网| 激情狠狠丁香月| 五月天综合网| 一个色的综合| 成人午夜天| 亚洲AV人人操| 97热视频| 久久99免费视屏| 婷婷五月婷婷| 色偷偷人人| 色五开心五月五月深深爱| www...com黄在线观看| 五月天婷婷五月| 五月丁香婷婷伊人日韩| 五月丁香婷婷激情| 免费无码毛片一区二区A片| 久久五月网| 激情内射人妻1区2区3区|