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

JFreeChart最佳實(shí)踐:折線圖

開發(fā) 后端
本文將介紹作者通過Java最佳圖形解決方案JFreeChart實(shí)現(xiàn)折線圖的詳細(xì)過程。

在這個(gè)公司,用到了太多的JfreeChart,今天就對(duì)折線圖作一個(gè)總結(jié),希望對(duì)大家有點(diǎn)幫助,我這里直接是與業(yè)務(wù)邏輯相關(guān)的,業(yè)務(wù)需要的數(shù)據(jù)加載到數(shù)據(jù)集等,不過我會(huì)作一些注釋的,呵,之前有網(wǎng)友建議寫注釋。

折線圖,大可分為兩種,

(1)X軸值類型為String的。

2)常用的是X軸值是日期的,并且,有時(shí)需要滿足這樣的需求:

1、時(shí)間要連續(xù)。

2、時(shí)間可以設(shè)置固定的跨度,比如,2009-02-01,2009-02-04,2009-02-07……

3、由于時(shí)間跨度較大,想要做到不同精度的圖表,如時(shí)間為10天時(shí),以日(yyyy-MM-dd)格式為精度,時(shí)間跨度為2個(gè)月時(shí),以周(如2009年第3周)為精度,跨度為6個(gè)月時(shí),以月(2009年8月)為精度。

下面,針對(duì)比較復(fù)雜的(2)來講解:

1、取到業(yè)務(wù)邏輯需要的數(shù)據(jù):(具體過程就不啰嗦了,就是查詢數(shù)據(jù)庫,得到想要的字段的值,加載到List里面) 返回List<PressureBean>

PressureBean的包含的屬性:
 

  1. int userId;  
  2.     String bpDate;  
  3.     String bpTime;  
  4.     int syspress;  //收縮壓(mmHg)  
  5.     int diapress; //舒張壓(mmHg) 

2、加載數(shù)據(jù)集

  1. public static TimeSeriesCollection createTimeSeries(  
  2.             List<PressureBean> list, int dayOrweekOrmonth, Log log, String shou,String shu  
  3.             ) {  
  4.  
  5.         TimeSeriesCollection timesers = new TimeSeriesCollection();  
  6.  
  7.         int mon = 1;  
  8.         int day = 1;  
  9.         int ye = 2000;  
  10.         int week = 1;  
  11.  
  12.         // 按天顯示  
  13.         if (dayOrweekOrmonth == 0) {  
  14.  
  15.             TimeSeries timeseries = new TimeSeries(shou,  
  16.                     org.jfree.data.time.Day.class);  
  17.             TimeSeries timeseries1 = new TimeSeries("c1",  
  18.                     org.jfree.data.time.Day.class);  
  19.  
  20.             TimeSeries timeseriedia = new TimeSeries(shu,  
  21.                     org.jfree.data.time.Day.class);  
  22.             TimeSeries timeseriedia1 = new TimeSeries("d1",  
  23.                     org.jfree.data.time.Day.class);  
  24.  
  25.             Iterator<PressureBean> it = list.iterator();  
  26.             while (it.hasNext()) {  
  27.                 PressureBean pres = it.next();  
  28.                 String date = pres.getBpDate();  
  29.  
  30.                 ye = Integer.parseInt(date.substring(04));  
  31.                 mon = Integer.parseInt(date.substring(57));  
  32.                 day = Integer.parseInt(date.substring(8, date.length()));  
  33.                 Day days = new Day(day, mon, ye);  
  34.  
  35.                 double sys = pres.getSyspress();  
  36.                 double dia = pres.getDiapress();  
  37.                 if (sys != -1 && sys > 0) {  
  38.                     timeseries.add(days, sys);  
  39.                 } else {  
  40.                     timeseries1.add(days, null);  
  41.                 }  
  42.                 if (sys != -1 && sys > 0) {  
  43.                     timeseriedia.add(days, dia);  
  44.                 } else {  
  45.                     timeseriedia1.add(days, null);  
  46.                 }  
  47.  
  48.             }  
  49.  
  50.             timesers.addSeries(timeseries);  
  51.             timesers.addSeries(timeseriedia);  
  52.             timesers.addSeries(timeseries1);  
  53.             timesers.addSeries(timeseriedia1);  
  54.  
  55.         } else if (dayOrweekOrmonth == 1) {//按周顯示  
  56.             TimeSeries timeseries = new TimeSeries(shou,  
  57.                     org.jfree.data.time.Week.class);  
  58.             TimeSeries timeseries1 = new TimeSeries("c1",  
  59.                     org.jfree.data.time.Week.class);  
  60.  
  61.             TimeSeries timeseriedia = new TimeSeries(shu,  
  62.                     org.jfree.data.time.Week.class);  
  63.             TimeSeries timeseriedia1 = new TimeSeries("d1",  
  64.                     org.jfree.data.time.Week.class);  
  65.  
  66.             Iterator<PressureBean> it = list.iterator();  
  67.             while (it.hasNext()) {  
  68.                 PressureBean pres = it.next();  
  69.                 String date = pres.getBpDate();  
  70.  
  71.                 String[] spls = date.split("-");  
  72.                 if (spls.length == 2) {  
  73.                     ye = Integer.parseInt(spls[0]);  
  74.                     mon = Integer.parseInt(spls[1]);  
  75.                 } else {  
  76.                     log.error("the date of weeks is wrong");  
  77.                 }  
  78.  
  79.                 Week days = new Week(mon, ye);  
  80.                 double sys = pres.getSyspress();  
  81.                 double dia = pres.getDiapress();  
  82.  
  83.                 if (sys != -1 && sys > 0) {  
  84.                     timeseries.add(days, sys);  
  85.                 } else {  
  86.                     timeseries1.add(days, null);  
  87.                 }  
  88.                 if (sys != -1 && sys > 0) {  
  89.                     timeseriedia.add(days, dia);  
  90.                 } else {  
  91.                     timeseriedia1.add(days, null);  
  92.                 }  
  93.  
  94.             }  
  95.  
  96.             timesers.addSeries(timeseries);  
  97.             timesers.addSeries(timeseriedia);  
  98.             timesers.addSeries(timeseries1);  
  99.               
  100.             timesers.addSeries(timeseriedia1);  
  101.  
  102.         } else {//按月顯示  
  103.             TimeSeries timeseries = new TimeSeries(shou,  
  104.                     org.jfree.data.time.Month.class);  
  105.             TimeSeries timeseries1 = new TimeSeries("c1",  
  106.                     org.jfree.data.time.Month.class);  
  107.  
  108.             TimeSeries timeseriedia = new TimeSeries(shu,  
  109.                     org.jfree.data.time.Month.class);  
  110.             TimeSeries timeseriedia1 = new TimeSeries("s",  
  111.                     org.jfree.data.time.Month.class);  
  112.  
  113.             Iterator<PressureBean> it = list.iterator();  
  114.             while (it.hasNext()) {  
  115.                 PressureBean pres = it.next();  
  116.                 String date = pres.getBpDate();  
  117.  
  118.                 String[] spls = date.split("-");  
  119.                 if (spls.length == 2) {  
  120.                     ye = Integer.parseInt(spls[0]);  
  121.                     mon = Integer.parseInt(spls[1]);  
  122.                 } else {  
  123.                     log.error("the date of weeks is wrong");  
  124.                 }  
  125.  
  126.                 Month days = new Month(mon, ye);  
  127.  
  128.                 double sys = pres.getSyspress();  
  129.                 double dia = pres.getDiapress();  
  130.  
  131.                 if (sys != -1 && sys > 0) {  
  132.                     timeseries.add(days, sys);  
  133.                 } else {  
  134.                     timeseries1.add(days, null);  
  135.                 }  
  136.                 if (sys != -1 && sys > 0) {  
  137.                     timeseriedia.add(days, dia);  
  138.                 } else {  
  139.                     timeseriedia1.add(days, null);  
  140.                 }  
  141.  
  142.             }  
  143.             timesers.addSeries(timeseries);  
  144.             timesers.addSeries(timeseriedia);  
  145.             timesers.addSeries(timeseries1);  
  146.               
  147.             timesers.addSeries(timeseriedia1);  
  148.  
  149.         }  
  150.  
  151.         return timesers;  
  152.     } 

3、畫折線圖,兩個(gè)數(shù)據(jù)集,收縮壓和舒張壓,并且,這兩條曲線還各自包含一個(gè)區(qū)域范圍,并不單單是一條基準(zhǔn)線,而是一個(gè)基準(zhǔn)范圍。

  1. private static JFreeChart createChartPress(XYDataset xydataset,  
  2.             int weekOrmonth, String title, String y, String index, String week,  
  3.             String year, int searchby, String month, String nodatamess,  
  4.             List list, Log log, String bp_shou, String bp_shuzhang) {  
  5.  
  6.         // 有可能用戶在后面的版本中故意輸入不正常數(shù)值,但是為了保證圖片畫圖的完整,這里先計(jì)算  
  7.         // 用戶血壓值的***值。  
  8.  
  9.  
  10.         double maxpress = 0;  
  11.         double addmax = 50;  
  12.         double min = 40;  
  13.  
  14.         if (list != null && list.size() > 0) {  
  15.             Iterator<PressureBean> it = list.iterator();  
  16.             while (it.hasNext()) {  
  17.                 PressureBean pres = it.next();  
  18.                 double sys = pres.getSyspress();  
  19.                 double dia = pres.getDiapress();  
  20.  
  21.                 if (maxpress < sys) {  
  22.                     maxpress = sys;  
  23.  
  24.                 }  
  25.  
  26.                 if (maxpress < dia)  
  27.                     maxpress = dia;  
  28.  
  29.                 if (min > sys) {  
  30.                     min = sys;  
  31.                 }  
  32.  
  33.                 if (min > dia)  
  34.                     min = dia;  
  35.  
  36.             }  
  37.  
  38.             maxpress += addmax;  
  39.             min -= 10;  
  40.  
  41.  
  42.             log.info("high press value is =" + maxpress);  
  43.  
  44.         }  
  45.           
  46.         if (xydataset != null) {  
  47.             int counts = xydataset.getItemCount(0);  
  48.             if (counts == 0) {  
  49.                 xydataset = null;  
  50.             }  
  51.         }  
  52.  
  53.         JFreeChart jfreechart = ChartFactory.createTimeSeriesChart(title, "",  
  54.                 y, xydataset, truetruefalse);  
  55.         jfreechart.setBackgroundPaint(Color.white);  
  56.           
  57.  
  58.         // 設(shè)置標(biāo)題的顏色  
  59.         TextTitle text = new TextTitle(title);  
  60.         text.setPaint(new Color(102102102));  
  61.         jfreechart.setTitle(text);  
  62.         XYPlot xyplot = jfreechart.getXYPlot();  
  63.         xyplot.setBackgroundPaint(new Color(255253246));  
  64.         xyplot.setOutlineStroke(new BasicStroke(1.5f)); // 邊框粗細(xì)  
  65.         ValueAxis vaxis = xyplot.getDomainAxis();  
  66.         vaxis.setAxisLineStroke(new BasicStroke(1.5f)); // 坐標(biāo)軸粗細(xì)  
  67.         vaxis.setAxisLinePaint(new Color(215215215)); // 坐標(biāo)軸顏色  
  68.         xyplot.setOutlineStroke(new BasicStroke(1.5f)); // 邊框粗細(xì)  
  69.         vaxis.setLabelPaint(new Color(101010)); // 坐標(biāo)軸標(biāo)題顏色  
  70.         vaxis.setTickLabelPaint(new Color(102102102)); // 坐標(biāo)軸標(biāo)尺值顏色  
  71.         vaxis.setLowerMargin(0.06d);// 分類軸下(左)邊距  
  72.         vaxis.setUpperMargin(0.14d);// 分類軸下(右)邊距,防止***邊的一個(gè)數(shù)據(jù)靠近了坐標(biāo)軸。  
  73.           
  74.         //X軸為日期格式,這里是專門的處理日期的類,  
  75.         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");  
  76.         DateAxis dateaxis = (DateAxis) xyplot.getDomainAxis();  
  77.         if (weekOrmonth == 0) {//以天為刻度,時(shí)間格式為yyyy-MM-dd,如2008-02-06  
  78.             dateaxis.setTickUnit(new DateTickUnit(DateTickUnit.DAY, 1, format));  
  79.         } else if (weekOrmonth == 1) {//以周為刻度,時(shí)間顯示為 2009年第4周((這里是SimpleDateFormat的用法,  
  80.             //這里為了作繁體版,英文版和簡體版,用了國際化處理,將這些可變的資源在文字資源里面,注意一下,這里的y,M、w是SimpleDateFormat的關(guān)鍵字,  
  81.             //如英文表示09年第3周就是09W3,那么,這里的W需要用‘’引起來)  
  82.             format = new SimpleDateFormat("yyyy" + year + index + "w" + week);  
  83.             dateaxis.setTickUnit(new DateTickUnit(DateTickUnit.DAY, 7, format));  
  84.         } else if (weekOrmonth == 2) {//以月為刻度,時(shí)間顯示為09-02 (09年2月)  
  85.             format = new SimpleDateFormat("yy-MM");  
  86.             dateaxis  
  87.                     .setTickUnit(new DateTickUnit(DateTickUnit.MONTH, 1, format));  
  88.  
  89.         }  
  90.         dateaxis.setVerticalTickLabels(false); // 設(shè)為true表示橫坐標(biāo)旋轉(zhuǎn)到垂直。  
  91.         if (searchby == 6 || searchby == 3) {  
  92.             dateaxis.setAutoTickUnitSelection(true); // 由于橫軸標(biāo)簽過多,這里設(shè)置為自動(dòng)格式 。  
  93.             dateaxis.setDateFormatOverride(format);  
  94.         }  
  95.         dateaxis.setTickMarkPosition(DateTickMarkPosition.START);  
  96.  
  97.         ValueAxis valueAxis = xyplot.getRangeAxis();  
  98.         valueAxis.setUpperBound(maxpress);  
  99.         valueAxis.setAutoRangeMinimumSize(1);  
  100.         valueAxis.setLowerBound(min);  
  101.         valueAxis.setAutoRange(false);  
  102.  
  103.         valueAxis.setAxisLineStroke(new BasicStroke(1.5f)); // 坐標(biāo)軸粗細(xì)  
  104.         valueAxis.setAxisLinePaint(new Color(215215215)); // 坐標(biāo)軸顏色  
  105.         valueAxis.setLabelPaint(new Color(101010)); // 坐標(biāo)軸標(biāo)題顏色  
  106.         valueAxis.setTickLabelPaint(new Color(102102102)); // 坐標(biāo)軸標(biāo)尺值顏色  
  107.           
  108.         xyplot.setRangeGridlinesVisible(true);  
  109.         xyplot.setDomainGridlinesVisible(true);  
  110.         xyplot.setRangeGridlinePaint(Color.LIGHT_GRAY);  
  111.         xyplot.setDomainGridlinePaint(Color.LIGHT_GRAY);  
  112.         xyplot.setBackgroundPaint(new Color(255253246));  
  113.         xyplot.setNoDataMessage(nodatamess);//沒有數(shù)據(jù)時(shí)顯示的文字說明。  
  114.         xyplot.setNoDataMessageFont(new Font("", Font.BOLD, 14));//字體的大小,粗體。  
  115.         xyplot.setNoDataMessagePaint(new Color(87149117));//字體顏色  
  116.         xyplot.setAxisOffset(new RectangleInsets(0d, 0d, 0d, 5d)); //  
  117.  
  118.         // add range marker(舒張壓的區(qū)域marker,范圍是從62到81)  
  119.  
  120.         double lowpress = 62;  
  121.         double uperpress = 81;  
  122.         IntervalMarker intermarker = new IntervalMarker(lowpress, uperpress);  
  123.         intermarker.setPaint(Color.decode("#66FFCC"));// 域顏色  
  124.           
  125.         intermarker.setLabelFont(new Font("SansSerif"4114));  
  126.         intermarker.setLabelPaint(Color.RED);  
  127.         intermarker.setLabel(bp_shuzhang);  
  128.  
  129.         if (xydataset != null) {  
  130.             xyplot.addRangeMarker(intermarker, Layer.BACKGROUND);  
  131.         }  
  132.     //(收縮壓的區(qū)域marker,范圍是從102到120)  
  133.         double lowpress1 = 102;  
  134.         double uperpress1 = 120;  
  135.         IntervalMarker inter = new IntervalMarker(lowpress1, uperpress1);  
  136.         inter.setLabelOffsetType(LengthAdjustmentType.EXPAND);  
  137.         inter.setPaint(Color.decode("#66FFCC"));// 域顏色  
  138.  
  139.  
  140.         inter.setLabelFont(new Font("SansSerif"4114));  
  141.         inter.setLabelPaint(Color.RED);  
  142.         inter.setLabel(bp_shou);  
  143.           
  144.         if (xydataset != null) {  
  145.             xyplot.addRangeMarker(inter, Layer.BACKGROUND); // 加上Layer.BACKGROUND,將maker調(diào)到折線下面。  
  146.         }  
  147.  
  148.         XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer) xyplot  
  149.                 .getRenderer();  
  150.         //***條折線的顏色  
  151.         xylineandshaperenderer.setBaseItemLabelsVisible(true);  
  152.         xylineandshaperenderer.setSeriesFillPaint(0new Color(1271280));  
  153.         xylineandshaperenderer.setSeriesPaint(0new Color(1271280));  
  154.  
  155.         xylineandshaperenderer.setSeriesShapesVisible(0true);  
  156.         xylineandshaperenderer.setSeriesShapesVisible(1true);  
  157.  
  158.         //第二條折線的顏色  
  159.         xylineandshaperenderer.setSeriesFillPaint(1new Color(2541030));  
  160.         xylineandshaperenderer.setSeriesPaint(1new Color(2541030));  
  161.         xylineandshaperenderer.setSeriesShapesVisible(1true);  
  162.         xylineandshaperenderer.setSeriesVisible(2false);//  
  163.         xylineandshaperenderer.setSeriesVisible(3false);//不顯示下面標(biāo)題  
  164.  
  165.         //折線的粗細(xì)調(diào)  
  166.         StandardXYToolTipGenerator xytool = new StandardXYToolTipGenerator();  
  167.         xylineandshaperenderer.setToolTipGenerator(xytool);  
  168.         xylineandshaperenderer.setStroke(new BasicStroke(1.5f));  
  169.  
  170.         // 顯示節(jié)點(diǎn)的值  
  171.         xylineandshaperenderer.setBaseItemLabelsVisible(true);  
  172.         xylineandshaperenderer  
  173.                 .setBasePositiveItemLabelPosition(new ItemLabelPosition(  
  174.                         ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_CENTER));  
  175.         xylineandshaperenderer  
  176.                 .setBaseItemLabelGenerator(new StandardXYItemLabelGenerator());  
  177.         xylineandshaperenderer.setBaseItemLabelPaint(new Color(102102102));// 顯示折點(diǎn)數(shù)值字體的顏色  
  178.  
  179.         return jfreechart;  
  180.     } 

4、將圖片URL返回到頁面

  1. public static void drawPressLineChart(IrisIoInterface io, Log log,  
  2.             TimeSeriesCollection timesers, int weekormonth, String title,  
  3.             String y, String index, String week, String year, int searchby,  
  4.             String month, String nodatamess, List list, String bp_shou,  
  5.             String bp_shuzhang) {  
  6.  
  7.         JFreeChart chart = createChartPress(timesers, weekormonth, title, y,  
  8.                 index, week, year, searchby, month, nodatamess, list, log,  
  9.                 bp_shou, bp_shuzhang);  
  10.  
  11.         HttpServletRequest request = io.getRequest();  
  12.         String filename = "";  
  13.         String graphURL = "";  
  14.         try {  
  15.             filename = ServletUtilities.saveChartAsPNG(chart, 650280null,  
  16.                     io.getSession());  
  17.             graphURL = request.getContextPath() + "/displayChart?filename=" 
  18.                     + filename;  
  19.         } catch (IOException e) {  
  20.             // TODO Auto-generated catch block  
  21.             e.printStackTrace();  
  22.             log.error(e);  
  23.         }  
  24.  
  25.         io.setData("filename1", filename, BeanShare.BEAN_SHARE_REQUEST);  
  26.         io.setData("presslineurl", graphURL, BeanShare.BEAN_SHARE_REQUEST);  
  27.  
  28.     } 

效果圖如下:

以天為刻度:

以周為刻度:

以月為刻度:

原文鏈接:http://juliana-only.iteye.com/blog/393266

【編輯推薦】

  1. JFreeChart***實(shí)踐:儀表盤
  2. JFreeChart***實(shí)踐:柱狀圖
  3. JFreeChart***實(shí)踐:3D餅圖
  4. JFreeChart***實(shí)踐:時(shí)序圖
  5. JFreeChart***實(shí)踐:甘特圖
責(zé)任編輯:林師授 來源: 遠(yuǎn)去的渡口博客
相關(guān)推薦

2011-12-21 13:35:39

JavaJFreeChart

2011-12-21 13:52:27

JavaJFreeChart

2011-12-21 13:44:33

JavaJFreeChart

2011-12-21 14:15:08

JavaJFreeChart

2011-12-21 12:58:41

JavaJFreeChart

2011-12-21 14:34:33

JavaJFreeChart

2022-02-23 15:17:04

鴻蒙OpenHarmonJacascript

2011-12-21 12:46:43

2020-05-25 15:00:41

matplotlibplot()折線圖

2021-01-08 10:32:24

Charts折線圖數(shù)據(jù)可視化

2023-11-10 18:07:42

Python折線圖折線

2023-06-27 13:46:20

2022-11-07 08:42:50

iOS 16SwiftUI

2022-11-18 09:03:09

SwiftUIiOS16

2011-12-20 12:53:43

JavaJFreeChart

2020-04-25 20:11:23

Python熱力圖代碼

2011-08-18 11:05:21

jQuery

2023-07-21 01:12:30

Reactfalse?變量

2024-12-24 12:00:00

Matplotlib可視化分析Python

2021-03-05 07:03:38

Pyecharts可視化工具復(fù)合圖
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

五月婷婷久久久| 久久这里只有精品国产| 日本一区二区电影| 自拍偷自拍亚洲精品播放| 91情侣在线视频| 国产精品视频123| 四季av一区二区三区免费观看| 91精品国产一区二区三区蜜臀| 草b视频在线观看| 成在在线免费视频| 粉嫩一区二区三区性色av| 欧美在线一级视频| 国产激情无码一区二区三区 | 国产精品色婷婷视频| 黄色在线观看免费| 日韩欧美电影| 日韩av一区在线观看| 福利视频999| 天堂网在线最新版www中文网| 一区在线播放视频| 欧美亚洲免费高清在线观看| www.久久精品.com| 久久精品国产亚洲一区二区三区| 国内偷自视频区视频综合| 国产亚洲精品久久久久久豆腐| 美国一区二区| 日韩精品一区二区三区在线播放 | 亚洲天堂男人天堂| 日本人dh亚洲人ⅹxx| 欧美大片免费高清观看| 亚洲国产你懂的| 国产欧美综合一区| gogogo高清在线观看免费完整版| 99久久久精品| 99视频在线免费观看| 国产又爽又黄免费软件| 日韩成人免费电影| 国产精品69久久久久| 日产精品久久久久| 一区在线免费| 欧美成人精品在线| 在线看的片片片免费| 欧美电影免费播放| 色爱av美腿丝袜综合粉嫩av | 精品久久久久久亚洲综合网站| 日本美女一区二区| 国产精品1区2区在线观看| 国产成人一级片| 亚洲一区二区三区免费在线观看 | 在线视频一区二区三区四区| 亚洲国产一区二区三区高清| 欧美日韩福利电影| 免费在线视频观看| 国产精品成人一区二区网站软件| 两个人的视频www国产精品| 中文字幕求饶的少妇| 爽成人777777婷婷| www国产精品视频| 成人免费精品动漫网站| 欧美.日韩.国产.一区.二区| 欧美大胆a视频| 久久国产精品波多野结衣| 国产一区日韩一区| 97在线精品国自产拍中文| 国产成人无码精品| 视频一区二区三区中文字幕| 国产精品jizz在线观看麻豆| 亚洲综合成人av| 久草中文综合在线| av资源站久久亚洲| 天天av天天翘| 国产欧美一区二区三区在线看蜜臀| 色女人综合av| 国产乱色在线观看| 亚洲一区二区三区四区不卡| 少妇高潮毛片色欲ava片| 成人影院网站| 欧美久久一二三四区| 久久综合桃花网| 日韩超碰人人爽人人做人人添| 亚洲视频视频在线| 手机在线免费看片| 夜久久久久久| 成人免费视频97| 人妻少妇精品无码专区| 国产日韩av一区| 国产日产欧美一区二区| 老司机深夜福利在线观看| 在线免费观看日本欧美| 精品人妻一区二区三| 亚洲裸色大胆大尺寸艺术写真 | 韩国日本一区| 欧洲另类一二三四区| 欧美xxxxxbbbbb| 偷拍自拍一区| 欧美成人免费播放| 亚洲黄网在线观看| 国产不卡视频在线观看| 日韩国产伦理| av片在线观看网站| 色综合久久综合中文综合网| 亚洲一二区在线观看| 台湾佬综合网| 欧美国产精品人人做人人爱| 黄色网址中文字幕| 粉嫩aⅴ一区二区三区四区五区| 婷婷久久青草热一区二区| 色www永久免费视频首页在线| 日本高清不卡视频| 国产精品成人99一区无码| 欧美在线色图| 欧美亚洲成人精品| 亚洲卡一卡二卡三| 国产精品的网站| 国产无套内射久久久国产| 欧美一级大片在线视频| 在线看国产精品| 色婷婷在线观看视频| 韩国视频一区二区| 亚洲精品一区二区三区樱花 | 亚洲va男人天堂| 国内av一区二区三区| 午夜精品久久久久久久99樱桃 | 26uuu精品一区二区| 玖玖精品在线视频| 在线日韩三级| 深夜福利国产精品| 国产美女www爽爽爽| 91蝌蚪porny成人天涯| 欧洲精品在线播放| 高清不卡一区| 久久天天躁日日躁| 91 中文字幕| 日本一区二区成人在线| 国产视频一区二区视频| 久久成人av| 欧美主播福利视频| 色视频免费在线观看| 亚洲电影中文字幕在线观看| 黑人无套内谢中国美女| 自拍偷拍欧美| 99一区二区三区| 黄色美女视频在线观看| 精品欧美久久久| 欧美成人一二三区| 国产福利一区在线| 亚洲色婷婷久久精品av蜜桃| 久久综合给合| 欧美大荫蒂xxx| 国产成人精品一区二区无码呦 | 在线观看欧美www| 中文字幕观看视频| 中文字幕一区二区三区在线播放| 一本色道久久亚洲综合精品蜜桃 | 久久久五月婷婷| 成人免费观看毛片| 成人亚洲一区二区| 成人黄色中文字幕| a篇片在线观看网站| 日韩欧美成人一区二区| 黄网站免费在线| 91原创在线视频| 亚洲色图久久久| 午夜激情久久| 成人av资源网| 亚洲美女久久精品| 亚洲无亚洲人成网站77777| 国产成人精品亚洲| 亚洲人成网站在线| 白嫩情侣偷拍呻吟刺激| 久久福利毛片| 中文字幕一区二区三区四区五区| 国产区一区二| 亚洲18私人小影院| 浮生影视网在线观看免费| 欧美卡1卡2卡| 国偷自拍第113页| 国产精品免费aⅴ片在线观看| 久久艹这里只有精品| 亚洲国产一区二区三区a毛片| 欧美性大战久久久久| 性欧美video另类hd尤物| 欧美激情一二三| 精品视频三区| 欧美一区二区三区免费视频| 97超碰人人干| 亚洲欧洲精品一区二区三区不卡| 又色又爽又黄18网站| 丝袜美腿亚洲综合| 日韩视频 中文字幕| 香蕉久久99| 亚洲字幕在线观看| 中文字幕乱码在线播放| 久久久精品久久| 欧美孕妇孕交| 欧美成人午夜电影| 中日韩av在线| 欧美日韩精品在线播放| 永久av免费网站| 久久亚洲春色中文字幕久久久| 激情文学亚洲色图| 久久久久免费| 久久久久久久久久久99| 91精品1区| 欧美一区国产一区| 国产精品成人自拍| 成人免费高清完整版在线观看| 悠悠资源网亚洲青| 欧美激情第一页xxx| aaa在线观看| 日韩成人激情在线| 午夜精品久久久久久久爽| 欧美视频在线一区二区三区| 午夜婷婷在线观看| 亚洲国产精品久久一线不卡| 亚洲AV成人无码网站天堂久久| 久久青草国产手机看片福利盒子| 欧美一级片在线免费观看| 久久99国产精品麻豆| www.日日操| 性欧美暴力猛交另类hd| 国产欧美日韩小视频| 在线国产一区二区| 在线视频欧美一区| 欧美日韩在线二区| 欧美中日韩免费视频| 啪啪国产精品| 久久66热这里只有精品| h视频久久久| www国产亚洲精品| 国产一区二区三区黄网站| 国产精品入口日韩视频大尺度| 国模套图日韩精品一区二区| 国模视频一区二区| 678在线观看视频| 欧美精品18videos性欧| 免费在线中文字幕| 欧美夫妻性生活视频| 欧美xxxx黑人又粗又长| 九色成人免费视频| av毛片在线播放| 欧美精品在线观看91| 影音先锋在线播放| 欧美激情在线视频二区| 暧暧视频在线免费观看| 欧美激情视频一区| 96av在线| 国自产精品手机在线观看视频| av资源一区| 91sao在线观看国产| 中文字幕成在线观看| 国产成人精品免高潮在线观看 | 亚洲综合二区| 超碰网在线观看| 免费在线成人网| 亚洲精品免费一区亚洲精品免费精品一区 | 午夜影院免费体验区| 日韩精品免费在线视频| 欧美一区二区少妇| 在线观看国产精品淫| 日本中文字幕在线观看| 久久亚洲电影天堂| 国产www视频在线观看| 97免费视频在线| 成人激情综合| 国产一区二中文字幕在线看| 日本成人精品| 久久久影院一区二区三区| 曰本一区二区三区视频| 奇米888一区二区三区| 日韩免费av| 一本色道久久88亚洲精品综合| 国色天香一区二区| 那种视频在线观看| 国内精品国产成人| 久久偷拍免费视频| 国产精品每日更新| 黄色小视频在线免费看| 欧美在线综合视频| www.黄色av| 亚洲色无码播放| 国产在线二区| 欧美亚洲第一区| 97久久中文字幕| 精品国产乱码久久久久久108| 亚洲欧美日本伦理| 国产四区在线观看| 狂野欧美一区| 交换做爰国语对白| 91麻豆免费看| 青青草原在线免费观看| 色呦呦国产精品| 国产xxxx孕妇| 国产亚洲欧美另类中文| 日本孕妇大胆孕交无码| 国产精品 欧美在线| 亚洲国产欧美国产第一区| 日本一区二区三区四区在线观看| 欧美va天堂| 亚洲一二三区av| 99久久精品国产一区二区三区| 婷婷丁香综合网| 狠狠干狠狠久久| 国产sm主人调教女m视频| 在线成人免费网站| 九色porny自拍视频在线播放| 91性高湖久久久久久久久_久久99| 九九精品在线| 国产亚洲黄色片| 国产精品一二二区| 萌白酱视频在线| 色久综合一二码| 少妇无码一区二区三区| 另类图片亚洲另类| 欧美日韩免费看片| 国产精品一区在线播放| 91精品啪在线观看国产81旧版| 无码人妻丰满熟妇区五十路百度| 国产成人精品影视| 精品亚洲乱码一区二区| 欧美综合亚洲图片综合区| 天天操天天干天天爱| 欧美精品在线极品| 精品亚洲a∨一区二区三区18| 亚洲精品在线免费| 三级欧美韩日大片在线看| 日本丰满少妇裸体自慰| 亚洲国产日韩a在线播放| 99热这里只有精品9| 俺去啦;欧美日韩| 欧美成人福利| 伊人久久大香线蕉成人综合网| 日本女人一区二区三区| 女女互磨互喷水高潮les呻吟| 欧美日韩视频在线| 色就是色亚洲色图| 97av在线影院| 天堂综合网久久| 草草久久久无码国产专区| av欧美精品.com| 91av在线免费视频| 亚洲美女在线视频| av激情成人网| 亚洲欧美久久234| 久久狠狠亚洲综合| 国产视频精品免费| 日韩欧美一区二区不卡| 激情网站在线| 精品福利影视| 老牛嫩草一区二区三区日本| 无码人妻精品一区二区中文| 91福利社在线观看| 亚洲成a人v欧美综合天堂麻豆| 国产精品小说在线| 久久久久国产精品| 亚洲美女精品视频| 午夜精品国产更新| 欧美捆绑视频| 国产精品久久久久久久7电影| 日韩精品1区| 国产欧美精品一二三| 亚洲午夜免费电影| 欧美在线观看在线观看| 国产精品免费网站| 欧美一区国产在线| 亚洲男人在线天堂| 欧美视频一区在线| 亚洲奶水xxxx哺乳期| 精品国产综合| 麻豆免费看一区二区三区| 青青青在线免费观看| 日韩高清av在线| 欧洲亚洲精品久久久久| 成年人深夜视频| 久久综合九色综合97_久久久| 探花国产精品一区二区| 欧美精品生活片| 国产成人调教视频在线观看| 三区视频在线观看| 精品久久久久久国产| 亚洲图片88| 久久久久久国产精品一区| 麻豆精品视频在线观看| 日本特黄一级片| 最新的欧美黄色| 欧美91在线| 岛国av在线免费| 福利二区91精品bt7086| 色网站在线看| 精品一区在线播放| 久久国产精品72免费观看| 国产精品自拍视频一区| 亚洲午夜精品视频| 好吊妞国产欧美日韩免费观看网站| 亚洲成人av免费看| 亚洲地区一二三色| 黄色片网站在线| 日韩免费av一区二区三区| 国产高清在线精品| 中文字幕欧美人妻精品一区蜜臀|