精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

高效使用Python可視化工具Matplotlib

開發 后端
Matplotlib是Python中最常用的可視化工具之一,可以非常方便地創建海量類型的2D圖表和一些基本的3D圖表。本文主要介紹了在學習Matplotlib時面臨的一些挑戰,為什么要使用Matplotlib,并推薦了一個學習使用Matplotlib的步驟。

Matplotlib是Python中最常用的可視化工具之一,可以非常方便地創建海量類型的2D圖表和一些基本的3D圖表。本文主要介紹了在學習Matplotlib時面臨的一些挑戰,為什么要使用Matplotlib,并推薦了一個學習使用Matplotlib的步驟。

簡介

對于新手來說,進入Python可視化領域有時可能會令人感到沮喪。Python有很多不同的可視化工具,選擇一個正確的工具有時是一種挑戰。 例如,即使兩年過去了,這篇《Overview of Python Visualization Tools》是引導人們到這個網站的***帖子之一。 在那篇文章中,我對matplotlib留下了一些陰影,并在分析過程中不再使用。 然而,在使用諸如pandas,scikit-learn,seaborn和其他數據科學技術棧的python工具后,覺得丟棄matplotlib有點過早了。說實話,之前我不太了解matplotlib,也不知道如何在工作流程中有效地使用。

現在我花時間學習了其中的一些工具,以及如何使用matplotlib,已經開始將matplotlib看作是不可或缺的工具了。這篇文章將展示我是如何使用matplotlib的,并為剛入門的用戶或者沒時間學習matplotlib的用戶提供一些建議。我堅信matplotlib是python數據科學技術棧的重要組成部分,希望本文能幫助大家了解如何將matplotlib用于自己的可視化。

為什么對matplotlib都是負面評價?

在我看來,新用戶學習matplotlib之所以會面臨一定的挑戰,主要有以下幾個原因。

首先,matplotlib有兩種接口。***種是基于MATLAB并使用基于狀態的接口。第二種是面向對象的接口。為什么是這兩種接口不在本文討論的范圍之內,但是知道有兩種方法在使用matplotlib進行繪圖時非常重要。

兩種接口引起混淆的原因在于,在stack overflow社區和谷歌搜索可以獲得大量信息的情況下,新用戶對那些看起來有些相似但不一樣的問題,面對多個解決方案會感到困惑。從我自己的經歷說起。回顧一下我的舊代碼,一堆matplotlib代碼的混合——這對我來說非常混亂(即使是我寫的)。

關鍵點

matplotlib的新用戶應該學習使用面向對象的接口。

matplotlib的另一個歷史性挑戰是,一些默認風格選項相當沒有吸引力。 在R語言世界里,可以用ggplot生成一些相當酷的繪圖,相比之下,matplotlib的選項看起來有點丑。令人欣慰的是matplotlib 2.0具有更美觀的樣式,以及非常便捷對可視化的內容進行主題化的能力。

使用matplotlib我認為第三個挑戰是,當繪制某些東西時,應該單純使用matplotlib還是使用建立在其之上的類似pandas或者seaborn這樣的工具,你會感到困惑。任何時候都可以有多種方式來做事,對于新手或不常用matplotlib的用戶來講,遵循正確的路徑是具有挑戰性的。將這種困惑與兩種不同的API聯系起來,是解決問題的秘訣。

為什么堅持要用matplotlib?

盡管有這些問題,但是我慶幸有matplotlib,因為它非常強大。這個庫允許創建幾乎任何你可以想象的可視化。此外,圍繞著它還有一個豐富的python工具生態系統,許多更先進的可視化工具用matplotlib作為基礎庫。如果在python數據科學棧中進行任何工作,都將需要對如何使用matplotlib有一個基本的了解。這是本文的其余部分的重點——介紹一種有效使用matplotlib的基本方法。

基本前提

如果你除了本文之外沒有任何基礎,建議用以下幾個步驟學習如何使用matplotlib:

  1. 學習基本的matplotlib術語,尤其是什么是圖和坐標軸
  2. 始終使用面向對象的接口,從一開始就養成使用它的習慣
  3. 用基礎的pandas繪圖開始你的可視化學習
  4. 用seaborn進行更復雜的統計可視化
  5. 用matplotlib來定制pandas或者seaborn可視化

這幅來自matplotlib faq的圖非常經典,方便了解一幅圖的不同術語。

 

大多數術語都非常直接,但要記住的要點是,Figure是最終的圖像,可能包含一個或多個坐標軸。坐標軸代表一個單獨的劃分。一旦你了解這些內容,以及如何通過面向對象的API訪問它們,下面的步驟才能開始進行。

這些術語知識有另一個好處,當你在網上看某些東西時,就有了一個起點。如果你花時間了解了這一點,才會理解matplotlib API的其余部分。此外,許多python的高級軟件包,如seaborn和ggplot都依賴于matplotlib。因此,了解這些基礎知識后再學那些功能更強大的框架會容易一些。

***,我不是說你應該避免選擇例如ggplot(aka ggpy),bokeh,plotly或者altair等其他更好的工具。我只是認為你需要從對matplotlib + pandas + seaborn 有一個基本了解開始。一旦理解了基本的可視化技術,就可以探索其他工具,并根據自己的需要做出明智的選擇。

入門

本文的其余部分將作為一個入門教程,介紹如何在pandas中進行基本的可視化創建,并使用matplotlib自定義最常用的項目。一旦你了解了基本過程,進一步的定制化創建就相對比較簡單。

重點講一下我遇到的最常見的繪圖任務,如標記軸,調整限制,更新繪圖標題,保存圖片和調整圖例。如果你想跟著繼續學習,在鏈接https://github.com/chris1610/pbpython/blob/master/notebooks/Effectively-Using-Matplotlib.ipynb 中包含附加細節的筆記,應該非常有用。

準備開始,我先引入庫并讀入一些數據:

  1. import pandas as pd 
  2.  
  3. import matplotlib.pyplot as plt 
  4.  
  5. from matplotlib.ticker import FuncFormatter 
  6.  
  7.   
  8.  
  9. df = pd.read_excel("https://github.com/chris1610/pbpython/blob/master/data/sample-salesv3.xlsx?raw=true"
  10.  
  11. df.head() 

 

這是2014年的銷售交易數據。為了使這些數據簡短一些,我將對數據進行聚合,以便我們可以看到前十名客戶的總購買量和總銷售額。為了清楚我還會在繪圖中重新命名列。

  1. top_10 = (df.groupby('name')['ext price''quantity'].agg({'ext price''sum''quantity''count'}) 
  2.  
  3. .sort_values(by='ext price', ascending=False))[:10].reset_index() 
  4.  
  5. top_10.rename(columns={'name''Name''ext price''Sales''quantity''Purchases'}, inplace=True 

下面是數據的處理結果。

 

現在,數據被格式化成一個簡單的表格,我們來看如何將這些結果繪制成條形圖。

如前所述,matplotlib有許多不同的樣式可用于渲染繪圖,可以用plt.style.available查看系統中有哪些可用的樣式。

  1. plt.style.available 
  1. ['seaborn-dark'
  2.  
  3. 'seaborn-dark-palette'
  4.  
  5. 'fivethirtyeight'
  6.  
  7. 'seaborn-whitegrid'
  8.  
  9. 'seaborn-darkgrid'
  10.  
  11. 'seaborn'
  12.  
  13. 'bmh'
  14.  
  15. 'classic'
  16.  
  17. 'seaborn-colorblind'
  18.  
  19. 'seaborn-muted'
  20.  
  21. 'seaborn-white'
  22.  
  23. 'seaborn-talk'
  24.  
  25. 'grayscale'
  26.  
  27. 'dark_background'
  28.  
  29. 'seaborn-deep'
  30.  
  31. 'seaborn-bright'
  32.  
  33. 'ggplot'
  34.  
  35. 'seaborn-paper'
  36.  
  37. 'seaborn-notebook'
  38.  
  39. 'seaborn-poster'
  40.  
  41. 'seaborn-ticks'
  42.  
  43. 'seaborn-pastel' 

這樣簡單使用一個樣式:

  1. plt.style.use('ggplot'

我鼓勵大家嘗試不同的風格,看看你喜歡哪些。

現在我們準備好了一個更美觀的樣式,***步是使用標準的pandas繪圖功能繪制數據:

  1. top_10.plot(kind='barh', y="Sales", x="Name"

 

我推薦先使用pandas繪圖,是因為它是一種快速簡便構建可視化的方法。 由于大多數人可能已經在pandas中進行過一些數據處理/分析,所以請先從基本的繪圖開始。

定制化繪圖

假設你對這個繪圖的要點很滿意,下一步就是定制它。使用pandas繪圖功能定制(如添加標題和標簽)非常簡單。但是,你可能會發現自己的需求在某種程度上超越該功能。這就是我建議養成這樣做的習慣的原因:

  1. fig, ax = plt.subplots() 
  2.  
  3. top_10.plot(kind='barh', y="Sales", x="Name", ax=ax)  

得到的圖看起來與原始圖看起來相同,但是我們向plt.subplots() 添加了一個額外的調用,并將ax傳遞給繪圖函數。為什么要這樣做? 記得當我說在matplotlib中要訪問坐標軸和數字至關重要嗎?這就是我們在這里完成的工作。將來任何定制化都將通過ax或fig對象完成。

我們得益于pandas快速繪圖,獲得了訪問matplotlib的所有權限。我們現在可以做什么呢?用一個例子來展示。另外,通過命名約定,可以非常簡單地把別人的解決方案改成適合自己獨特需求的方案。

假設我們要調整x限制并更改一些坐標軸的標簽?現在坐標軸保存在ax變量中,我們有很多的控制權:

  1. fig, ax = plt.subplots() 
  2.  
  3. top_10.plot(kind='barh', y="Sales", x="Name", ax=ax) 
  4.  
  5. ax.set_xlim([-10000, 140000]) 
  6.  
  7. ax.set_xlabel('Total Revenue'
  8.  
  9. ax.set_ylabel('Customer'); 

 

下面是一個快捷方式,可以用來更改標題和兩個標簽:

  1. fig, ax = plt.subplots() 
  2.  
  3. top_10.plot(kind='barh', y="Sales", x="Name", ax=ax) 
  4.  
  5. ax.set_xlim([-10000, 140000]) 
  6.  
  7. ax.set(title='2014 Revenue', xlabel='Total Revenue', ylabel='Customer'  

 

為了進一步驗證這種方法,還可以調整圖像的大小。通過plt.subplots() 函數,可以用英寸定義figsize。也可以用ax.legend().set_visible(False)來刪除圖例。

  1. fig, ax = plt.subplots(figsize=(5, 6)) 
  2.  
  3. top_10.plot(kind='barh', y="Sales", x="Name", ax=ax) 
  4.  
  5. ax.set_xlim([-10000, 140000]) 
  6.  
  7. ax.set(title='2014 Revenue', xlabel='Total Revenue'
  8.  
  9. ax.legend().set_visible(False  

 

 

 

基于很多原因你可能想要調整一下這個圖。看著最別扭的地方是總收入數字的格式。 Matplotlib可以通過FuncFormatter來幫我們實現。這個功能可以將用戶定義的函數應用于值,并返回一個格式整齊的字符串放置在坐標軸上。

下面是一個貨幣格式化函數,可以優雅地處理幾十萬范圍內的美元格式:

  1. def currency(x, pos): 
  2.  
  3.     'The two args are the value and tick position' 
  4.  
  5.     if x >= 1000000: 
  6.  
  7.         return '${:1.1f}M'.format(x*1e-6) 
  8.  
  9.     return '${:1.0f}K'.format(x*1e-3)  

現在我們有一個格式化函數,需要定義它并將其應用到x軸。以下是完整的代碼:

  1. fig, ax = plt.subplots() 
  2.  
  3. top_10.plot(kind='barh', y="Sales", x="Name", ax=ax) 
  4.  
  5. ax.set_xlim([-10000, 140000]) 
  6.  
  7. ax.set(title='2014 Revenue', xlabel='Total Revenue', ylabel='Customer'
  8.  
  9. formatter = FuncFormatter(currency) 
  10.  
  11. ax.xaxis.set_major_formatter(formatter) 
  12.  
  13. ax.legend().set_visible(False

 

 

 

這樣更美觀,也是一個很好的例子,展示如何靈活地定義自己的問題解決方案。

我們***要去探索的一個自定義功能是通過添加注釋到繪圖。繪制一條垂直線,可以用ax.axvline()。添加自定義文本,可以用ax.text()。

在這個例子中,我們將繪制一條平均線,并顯示三個新客戶的標簽。 下面是完整的代碼和注釋,把它們放在一起。

  1. Create the figure and the axes 
  2.  
  3. fig, ax = plt.subplots() 
  4.  
  5.   
  6.  
  7. # Plot the data and get the averaged 
  8.  
  9. top_10.plot(kind='barh', y="Sales", x="Name", ax=ax) 
  10.  
  11. avg = top_10['Sales'].mean() 
  12.  
  13.   
  14.  
  15. Set limits and labels 
  16.  
  17. ax.set_xlim([-10000, 140000]) 
  18.  
  19. ax.set(title='2014 Revenue', xlabel='Total Revenue', ylabel='Customer'
  20.  
  21.   
  22.  
  23. Add a line for the average 
  24.  
  25. ax.axvline(x=avg, color='b', label='Average', linestyle='--', linewidth=1) 
  26.  
  27.   
  28.  
  29. # Annotate the new customers 
  30.  
  31. for cust in [3, 5, 8]: 
  32.  
  33.     ax.text(115000, cust, "New Customer"
  34.  
  35.   
  36.  
  37. # Format the currency 
  38.  
  39. formatter = FuncFormatter(currency) 
  40.  
  41. ax.xaxis.set_major_formatter(formatter) 
  42.  
  43.   
  44.  
  45. # Hide the legend 
  46.  
  47. ax.legend().set_visible(False  

 

 

 

雖然這可能不是讓人感到興奮(眼前一亮)的繪圖方式,但它展示了你在用這種方法時有多大權限。

圖形和圖像

到目前為止,我們所做的所有改變都是單個圖形。幸運的是,我們也有能力在圖上添加多個圖形,并使用各種選項保存整個圖像。

如果決定要把兩幅圖放在同一個圖像上,我們應對如何做到這一點有基本了解。 首先,創建圖形,然后創建坐標軸,然后將其全部繪制在一起。我們可以用plt.subplots()來完成:

  1. fig, (ax0, ax1) = plt.subplots(nrows=1, ncols=2, sharey=True, figsize=(7, 4)) 

在這個例子中,用nrows和ncols來指定大小,這樣對新用戶來說比較清晰。在示例代碼中,經常看到像1,2這樣的變量。我覺得使用命名的參數,之后在查看代碼時更容易理解。

用sharey = True這個參數,以便yaxis共享相同的標簽。

這個例子也很好,因為各個坐標軸被解壓縮到ax0和ax1。有這些坐標軸軸,你可以像上面的例子一樣繪制圖形,但是在ax0和ax1上各放一個圖。 

  1. # Get the figure and the axes 
  2.  
  3. fig, (ax0, ax1) = plt.subplots(nrows=1,ncols=2, sharey=True, figsize=(7, 4)) 
  4.  
  5. top_10.plot(kind='barh', y="Sales", x="Name", ax=ax0) 
  6.  
  7. ax0.set_xlim([-10000, 140000]) 
  8.  
  9. ax0.set(title='Revenue', xlabel='Total Revenue', ylabel='Customers'
  10.  
  11.   
  12.  
  13. # Plot the average as a vertical line 
  14.  
  15. avg = top_10['Sales'].mean() 
  16.  
  17. ax0.axvline(x=avg, color='b', label='Average', linestyle='--', linewidth=1) 
  18.  
  19.   
  20.  
  21. # Repeat for the unit plot 
  22.  
  23. top_10.plot(kind='barh', y="Purchases", x="Name", ax=ax1) 
  24.  
  25. avg = top_10['Purchases'].mean() 
  26.  
  27. ax1.set(title='Units', xlabel='Total Units', ylabel=''
  28.  
  29. ax1.axvline(x=avg, color='b', label='Average', linestyle='--', linewidth=1) 
  30.  
  31.   
  32.  
  33. # Title the figure 
  34.  
  35. fig.suptitle('2014 Sales Analysis', fontsize=14, fontweight='bold'); 
  36.  
  37.   
  38.  
  39. # Hide the legends 
  40.  
  41. ax1.legend().set_visible(False
  42.  
  43. ax0.legend().set_visible(False 

 

 

 

到目前為止,我一直用jupyter notebook,借助%matplotlib內聯指令來顯示圖形。但是很多時候,需要以特定格式保存數字,和其他內容一起展示。

Matplotlib支持許多不同格式文件的保存。 你可以用fig.canvas.get_supported_filetypes()查看系統支持的格式:

  1. fig.canvas.get_supported_filetypes() 
  1. {'eps''Encapsulated Postscript'
  2.  
  3. 'jpeg''Joint Photographic Experts Group'
  4.  
  5. 'jpg''Joint Photographic Experts Group'
  6.  
  7. 'pdf''Portable Document Format'
  8.  
  9. 'pgf''PGF code for LaTeX'
  10.  
  11. 'png''Portable Network Graphics'
  12.  
  13. 'ps''Postscript'
  14.  
  15. 'raw''Raw RGBA bitmap'
  16.  
  17. 'rgba''Raw RGBA bitmap'
  18.  
  19. 'svg''Scalable Vector Graphics'
  20.  
  21. 'svgz''Scalable Vector Graphics'
  22.  
  23. 'tif''Tagged Image File Format'
  24.  
  25. 'tiff''Tagged Image File Format' 

由于我們有fig對象,我們可以用多個選項來保存圖像:

  1. fig.savefig('sales.png', transparent=False, dpi=80, bbox_inches="tight"

上面的代碼把圖像保存為背景不透明的png。還指定了分辨率dpi和bbox_inches =“tight”來盡量減少多余的空格。

結論

希望這個過程有助于你了解如何在日常的數據分析中更有效地使用matplotlib。 如果在做分析時養成使用這種方法的習慣,你應該可以快速定制出任何你需要的圖像。

作為***的福利,我引入一個快速指南來總結所有的概念。希望這有助于把這篇文章聯系起來,并為今后使用參考提供方便。 

責任編輯:龐桂玉 來源: Python開發者
相關推薦

2017-07-27 09:49:37

Python工具Matplotlib

2019-06-23 15:44:24

Matplotlib可視化圖表

2022-10-21 15:47:59

測試工具鴻蒙

2015-12-02 09:44:04

Python視化工具

2020-07-16 15:10:46

工具可視化Python

2024-12-24 12:00:00

Matplotlib可視化分析Python

2021-03-30 10:10:37

PyTorch可視化工具命令

2017-07-03 16:44:10

數據庫MongoDBNoSQL

2020-11-15 18:00:49

開源可視化工具Python

2023-03-06 08:03:10

Python可視化工具

2021-03-18 09:07:13

日志可視化工具Devops

2021-04-11 09:51:25

Redis可視化工具

2022-09-22 15:42:02

機器學習異常值工具

2020-12-15 09:43:20

Python可視化工具網絡應用

2017-07-25 13:42:00

大數據可視化工具

2020-04-20 08:22:41

SOC安全工具網絡攻擊

2019-10-14 15:51:40

可視化技術微軟數據庫

2018-05-31 08:25:13

誤區工具可視化

2022-11-15 15:14:05

2022-05-07 09:02:27

數據可視化工具庫
點贊
收藏

51CTO技術棧公眾號

久久久久久激情| 日韩精品av一区二区三区| 精品人妻一区二区三区视频| 国产原创在线观看| 国产精品一二三区在线| 丝袜美腿精品国产二区| 午夜免费福利网站| 制服丝袜专区在线| 国产精品成人免费在线| 国产欧美一区二区视频| 五月激情丁香网| 狠狠色丁香久久综合频道| 国产午夜精品全部视频播放| 18深夜在线观看免费视频| 在线免费三级电影网站| 成人美女在线视频| 高清欧美性猛交xxxx黑人猛交| 在线观看网站黄| 乡村艳史在线观看| 亚洲精品videosex极品| 色姑娘综合网| 飘雪影院手机免费高清版在线观看 | 成人精品动漫一区二区三区| 亚洲综合精品自拍| 成人欧美一区二区三区视频 | 69av成人| 亚洲精品久久7777| 国产女人水真多18毛片18精品| 中文在线字幕免费观| 夜夜精品视频| 在线电影欧美日韩一区二区私密| 色婷婷狠狠18| 蜜桃视频在线网站| 亚洲一区二区三区四区在线| 久久国产精品一区二区三区| 亚洲AV午夜精品| 国产精品88888| 91久久国产精品| 日韩av综合在线| 中文字幕午夜精品一区二区三区| 在线观看91久久久久久| 国产亚洲色婷婷久久| 男人亚洲天堂| 欧美日韩一区久久| 亚洲中文字幕无码一区二区三区| 欧美69xxx| 国产精品久久久久四虎| 99一区二区三区| 久久久久99精品成人片我成大片| 精品国产视频| 亚洲天堂影视av| 久久国产柳州莫菁门| 五月天亚洲一区| 精品偷拍各种wc美女嘘嘘| 日本中文字幕观看| 白浆视频在线观看| 午夜精品福利视频网站| 日韩中字在线观看| 一个人看的www视频在线免费观看| 国产精品久久久久四虎| 亚洲日本精品| 日韩在线无毛| 久久久影视传媒| 亚洲自拍高清视频网站| 国产成人免费看| 欧美日韩福利| 色妞在线综合亚洲欧美| 国产中文字幕久久| 欧美精品国产一区| 中文字幕九色91在线| 日本不卡一区视频| 香蕉久久精品日日躁夜夜躁| 日韩精品视频在线| 三上悠亚 电影| 国产精品视屏| 亚洲无亚洲人成网站77777| 亚洲av无码成人精品区| 欧美精品总汇| 精品久久久视频| 国产黄色特级片| 国产高清中文字幕在线| 亚洲天堂网中文字| 免费在线看黄色片| 69久成人做爰电影| 亚洲成av人**亚洲成av**| 老司机av福利| 超碰资源在线| 亚洲五码中文字幕| 男人的天堂99| 成人线上视频| 午夜成人免费视频| 特级西西444| 麻豆成人在线看| 欧美日韩精品区| 1024成人| 91精品国产91久久久久久| 成人一级免费视频| 国产传媒欧美日韩成人| 亚洲aa在线观看| 国产毛片毛片毛片毛片| av不卡免费在线观看| 日韩精品成人一区二区在线观看| 天使と恶魔の榨精在线播放| 日韩欧美一区二区三区| 国产亚洲天堂网| 最近在线中文字幕| 欧美一区二区三区在线| 97超碰在线资源| 韩日欧美一区| 91精品国产电影| 91国在线视频| 久久久亚洲欧洲日产国码αv| 欧美一区二区三区综合| 婷婷色在线播放| 五月天一区二区三区| 久久久久久久久久一区二区| 日韩系列在线| 欧美丰满老妇厨房牲生活 | 日韩免费影院| 午夜精品爽啪视频| 嫩草视频免费在线观看| 久久亚洲精精品中文字幕| 日韩欧美亚洲国产另类| 少妇久久久久久久久久| 青青草国产成人a∨下载安卓| 在线播放日韩欧美| 杨钰莹一级淫片aaaaaa播放| 在线成人www免费观看视频| 91高潮在线观看| 波多野结衣一本一道| 成人a区在线观看| 日本一区二区高清视频| 色开心亚洲综合| 色婷婷激情综合| 中文字幕影片免费在线观看| 激情综合网站| 欧美有码在线观看| 在线观看毛片视频| 岛国一区二区在线观看| 青青视频免费在线观看| 在线高清av| 精品调教chinesegay| 潘金莲一级黄色片| 久久精品国产99国产精品| 先锋在线资源一区二区三区| 最新日韩三级| 欧美不卡一区二区三区四区| 麻豆视频在线观看| 国产 欧美在线| 日韩尤物视频| 日本在线视频中文有码| 91国偷自产一区二区开放时间| 欧洲一级黄色片| 7777久久香蕉成人影院| 成人精品久久久| 成人日韩欧美| 色丁香久综合在线久综合在线观看| 欧美大片免费播放器| 91精品91| 国产精品嫩草视频| 米奇777四色精品人人爽| 69精品人人人人| 免费在线看黄网址| 99久久精品国产网站| 黄色a级在线观看| 欧美久久亚洲| 日韩一区二区精品视频| 亚洲黄色小说图片| 国产成人免费视频| 福利视频一二区| 懂色av一区二区三区在线播放| 国产精九九网站漫画| 外国成人免费视频| 欧美专区国产专区| a天堂在线观看视频| www一区二区| www.xxx麻豆| 久久影视三级福利片| 日韩av免费看| 午夜视频在线播放| 91国产福利在线| 手机在线免费看毛片| 男女性色大片免费观看一区二区| 亚洲精品在线视频观看| 日本一区二区三区电影免费观看| 性视频1819p久久| 东京干手机福利视频| 精品国产户外野外| 亚洲欧美另类日本| 精品一区二区免费| 国产美女主播在线| 精品国产一级毛片| 国产精品久久亚洲7777| 欧美日韩五区| 中文字幕精品—区二区| a级片在线视频| 亚洲综合在线免费观看| 青青操在线视频观看| 国产日韩欧美一区| 亚洲欧美国产精品桃花| 巨胸喷奶水www久久久免费动漫| 久久精品美女视频网站| 日韩一区免费视频| 欧美日韩美女在线| 婷婷伊人五月天| 久久夜色精品一区| 黄色一级大片在线观看| 中文字幕日韩欧美精品高清在线| 欧美亚洲精品日韩| 亚洲日本va| 国产一区红桃视频| 高清不卡av| 中文字幕精品一区久久久久| 亚洲天堂网在线观看视频| 亚洲aⅴ怡春院| 国产av 一区二区三区| 久久看人人爽人人| 在线看的黄色网址| 香蕉精品视频在线观看| 鲁丝一区二区三区免费| 日韩一级二级| 欧美一区二三区| ririsao久久精品一区| 久热在线中文字幕色999舞| 国产在线电影| 亚洲人成在线观| 国产欧美久久久| 亚洲一区二区不卡免费| 日韩在线不卡av| 日本一区二区不卡视频| 亚洲精品乱码久久久久久动漫| 日韩电影在线一区| 蜜臀av午夜一区二区三区| 亚洲美女黄色| 久久艹国产精品| 国色天香一区二区| 日本一区免费| 国产欧美日韩| 久久精品人成| 国产精品xnxxcom| 国产欧美日韩精品在线观看| 91精品国产66| 国产精品一区二区久久久| 国产在线拍揄自揄拍视频 | 欧美性xxxx图片| 97精品国产露脸对白| 国产艳妇疯狂做爰视频| 懂色av一区二区三区蜜臀| 中文在线字幕观看| 日本怡春院一区二区| 久久天天东北熟女毛茸茸| 一区二区三区日本久久久| 久久久久久草| 国产欧美日韩精品高清二区综合区| 日本10禁啪啪无遮挡免费一区二区| 国产免费av国片精品草莓男男| 成人精品久久久| 日韩免费成人| 国产精品一区=区| 九色porny丨国产首页在线| 久久好看免费视频| 美州a亚洲一视本频v色道| 亚洲精品视频久久| 成人小说亚洲一区二区三区 | 青青草观看免费视频在线| 亚洲网站在线看| 特级丰满少妇一级aaaa爱毛片| 欧美美女直播网站| 国产成人无码专区| 懂色av影视一区二区三区| 日本少妇毛茸茸高潮| 色老汉av一区二区三区| 日韩av一区二区在线播放| 亚洲日本电影在线| 国产午夜精品无码| 一区二区三区在线影院| 日韩欧美视频免费观看| 一区二区三区精品视频在线| www.99re6| 亚洲成av人影院在线观看网| 农村黄色一级片| 自拍偷在线精品自拍偷无码专区| 久久久精品国产sm调教网站| 欧美午夜激情在线| 91theporn国产在线观看| 亚洲成人久久一区| 亚洲第一视频在线| 亚洲欧美自拍一区| 撸视在线观看免费视频| 日韩精品在线免费播放| 午夜不卡视频| www.欧美精品一二三区| 中国日本在线视频中文字幕| 欧美极品少妇xxxxⅹ免费视频| 欧美大片免费观看网址| 热久久99这里有精品| 国产精品国产三级在线观看| 久久久影院一区二区三区| 91影院成人| av免费播放网址| 久久久一二三| av网站在线不卡| av亚洲产国偷v产偷v自拍| 蜜桃视频最新网址| 日韩欧美一区视频| 中文字幕777| 亚洲精品成人久久| 欧美精品久久久久久久久久丰满| 久久人人爽人人爽爽久久| 成人欧美一区二区三区的电影| 国产va免费精品高清在线| 日韩免费精品| 久中文字幕一区| 欧美日韩国产一区精品一区| 黄色片视频在线| 激情综合亚洲精品| 精品国产无码在线观看| 国产精品久久久久毛片软件| 全部毛片永久免费看| 日韩欧美资源站| 性xxxx视频播放免费| 亚洲免费视频在线观看| av一区在线观看| 奇米成人av国产一区二区三区| av不卡一区二区| 欧美中日韩免费视频| 伊人影院久久| 91成人在线观看喷潮蘑菇| 国产精品久久久久aaaa樱花| 波多野结衣在线观看视频| 日韩一区二区三区电影| 国产区在线观看| 91精品久久久久久久久久| 国内亚洲精品| av动漫在线播放| 久久一区二区三区超碰国产精品| 中文字幕 亚洲一区| 国产精品色哟哟| 亚洲熟女乱色一区二区三区久久久| 欧美一级国产精品| 天堂影院在线| 7777精品视频| 国产精品日韩精品在线播放| 亚洲一区不卡在线| 99在线|亚洲一区二区| 国产高清成人久久| 亚洲欧洲av一区二区三区久久| 日韩xxxxxxxxx| 亚洲黄色在线观看| 麻豆视频在线播放| 欧美一性一乱一交一视频| 成人自拍视频| 免费日韩在线观看| 日韩国产欧美在线观看| 老司机福利av| 日本乱人伦aⅴ精品| 免费看av毛片| 久久国产精品99国产精| 久久影院一区二区三区| 日产精品一线二线三线芒果| 日本vs亚洲vs韩国一区三区 | 午夜日韩激情| 国内自拍视频一区| 成人综合在线网站| 午夜精品久久久久99蜜桃最新版| 日韩欧美中文字幕在线观看| 国产在线三区| 日本精品视频在线播放| 欧美禁忌电影| 91成人在线观看喷潮教学| 91色综合久久久久婷婷| 精品无码免费视频| 亚洲精品视频在线观看视频| 日韩不卡视频在线观看| 欧美乱偷一区二区三区在线| 亚洲黄色一区| 中文字幕免费高清| 3751色影院一区二区三区| 女囚岛在线观看| 国产成人一区二区三区免费看| 91高清一区| 少妇饥渴放荡91麻豆| 性做久久久久久| 亚洲成人一二三区| 欧美成在线视频| 天堂av一区二区三区在线播放| 国产一级爱c视频| 国产欧美日韩三区| 性一交一乱一色一视频麻豆| 久久视频在线免费观看| 四虎成人精品一区二区免费网站| 日韩啊v在线| 国产中文一区二区三区| 午夜激情福利网| 91精品国产综合久久久久久久| 欧美日韩在线看片| 国产中文字幕日韩| 国产一级久久| 黄色在线观看免费| 精品国产一区a|