精品欧美一区二区三区在线观看 _久久久久国色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)

久久综合狠狠综合久久综青草| 欧美成在线观看| 亚洲xxxx2d动漫1| 天天综合视频在线观看| 国产一级精品在线| 欧美精品国产精品日韩精品| 瑟瑟视频在线观看| 亚洲三级在线| 午夜精品在线看| 四虎一区二区| 亚洲精品97久久中文字幕| 亚洲综合日本| 久久精品这里热有精品| 奇米777第四色| 久久久人成影片一区二区三区在哪下载| 国产精品福利影院| 精品产品国产在线不卡| 伊人精品一区二区三区| 亚洲性视频h| 国产一区二区三区在线观看视频| 日本在线视频播放| 粉嫩一区二区三区| 一区二区三区中文字幕电影 | 国产精品欧美经典| 国产偷国产偷亚洲高清97cao| 五月天中文字幕| 亚洲裸体俱乐部裸体舞表演av| 在线观看成人黄色| 国产婷婷在线观看| 高清国产一区二区三区四区五区| 婷婷国产在线综合| 亚洲一区二区免费视频软件合集| 亚洲国产成人一区二区| 日本不卡一区二区| 欧美极品在线播放| 中文字幕第二区| 嫩草国产精品入口| 欧美日韩五月天| 国产男女无遮挡| 午夜成年人在线免费视频| 国产日韩欧美a| 91久久精品美女高潮| 1级黄色大片儿| 日韩一区电影| 亚洲免费伊人电影在线观看av| 亚洲18在线看污www麻豆| 理论片午夜视频在线观看| 日韩一区中文字幕| 欧洲精品久久| 天天干天天色天天| 韩国欧美一区二区| 国产精品免费一区二区三区都可以| 久草视频中文在线| 欧美hd在线| 亚洲天堂日韩电影| 性色av蜜臀av色欲av| 亚洲一区二区免费在线观看| 欧美日韩视频不卡| 日韩福利视频在线| 夜鲁夜鲁夜鲁视频在线播放| 亚洲一区二区三区四区不卡| 男女啪啪的视频| 91在线视频免费看| 国产清纯美女被跳蛋高潮一区二区久久w | 天堂电影一区| 亚洲乱码国产乱码精品精可以看| 精品日本一区二区三区| 乱精品一区字幕二区| 国产精品自拍毛片| 亚洲va欧美va国产综合久久| 亚洲综合精品视频| 免费视频一区二区| 国产精品揄拍一区二区| 免费无码国产精品| 天堂久久一区二区三区| 欧美性资源免费| 日本一级一片免费视频| av成人天堂| 欧美激情一区二区三区久久久| 免费人成年激情视频在线观看| 亚洲精品成人影院| 精品国产自在精品国产浪潮| 在线观看日本中文字幕| 西野翔中文久久精品国产| 精品成人在线观看| 亚洲美女在线播放| 牛牛视频精品一区二区不卡| 亚洲精品福利在线观看| 性欧美成人播放77777| 欧美猛男同性videos| 精品一区二区三区电影| 亚洲欧美va天堂人熟伦| 精品理论电影| 日韩中文字幕在线播放| 2025国产精品自拍| 好看不卡的中文字幕| 性欧美长视频免费观看不卡| 狠狠躁夜夜躁人人爽天天高潮| 亚洲人成高清| 国产精品久久综合av爱欲tv| 国产深喉视频一区二区| 99热这里都是精品| 日韩性感在线| 国产cdts系列另类在线观看| 午夜欧美大尺度福利影院在线看| 国产美女在线一区| 欧美卡一卡二| 欧美性一级生活| 日日夜夜精品视频免费观看| 蜜臀av一区| 日韩中文理论片| 国产在线观看99| 久久亚洲图片| 91精品国产综合久久香蕉最新版 | 国产一区二区三区四区老人| 欧美在线亚洲一区| 国产女人高潮的av毛片| 波多野结衣亚洲一区| 日韩精品久久久免费观看| 美女黄视频在线观看| 精品国产91久久久久久| 羞羞的视频在线| 国产一区二区在线视频你懂的| 亚洲国产婷婷香蕉久久久久久| 性の欲びの女javhd| 欧美日韩国产成人精品| 欧美激情手机在线视频| 中文字幕在线播放av| 成人黄色av电影| 中文字幕黄色大片| 毛片无码国产| 精品国产乱码久久久久久闺蜜| 免费看黄色的视频| 久久久五月天| 日韩美女免费线视频| 亚洲精品911| 中文字幕亚洲一区二区va在线| 国产九九九九九| 3d性欧美动漫精品xxxx软件| 精品sm在线观看| www.av免费| 久热综合在线亚洲精品| 99三级在线| 日本中文在线| 91福利视频网站| 国产婷婷在线观看| 自产国语精品视频| 国产精品久久国产精品99gif| 亚洲av永久无码国产精品久久 | 成人在线高清视频| 黄色成人在线免费| 91人妻一区二区三区| 欧美独立站高清久久| 97国产真实伦对白精彩视频8| 一级视频在线播放| 久久久美女毛片| 8x8x华人在线| 日韩成人在线电影| 在线观看国产精品91| 无码人妻黑人中文字幕| 91免费精品国自产拍在线不卡| 真实国产乱子伦对白视频| 高清一区二区| 久久激情视频免费观看| 91麻豆成人精品国产| 国产精品乱人伦一区二区| 亚洲黄色小视频在线观看| 国产乱码精品一区二区亚洲| 欧美中文字幕视频在线观看| 亚洲av成人精品毛片| 精品久久久久久久大神国产| 佐佐木明希电影| 国产精品videossex久久发布| 亚洲自拍偷拍一区| 91精选在线| 欧美一区二区三区免费观看视频| 国产第一页浮力| 国产原创一区二区三区| 懂色av粉嫩av蜜臀av| 日韩欧美中文字幕在线视频| 欧美高清视频在线播放| 亚洲精品国产suv一区| 亚洲午夜av在线| 中文字幕日韩三级片| 久久精品成人| 亚洲精品成人三区| 亚瑟国产精品| 欧美激情a在线| a网站在线观看| 亚洲一区精品在线| 久久久久久久无码| 日本网站在线观看一区二区三区| 日本公妇乱淫免费视频一区三区| 2019年精品视频自拍| www.亚洲一区| 亚洲精品国产精品乱码不卡| 欧美日韩国产黄| 影音先锋制服丝袜| 国产一区二区三区不卡在线观看 | 另类尿喷潮videofree| 98视频在线噜噜噜国产| 国产三级在线看| 日韩一二三四区| 在线观看精品国产| 国产欧美日韩综合| 亚洲综合婷婷久久| 激情综合电影网| 日韩影片在线播放| 国产情侣一区在线| 韩国v欧美v日本v亚洲| 色视频免费在线观看| 欧美日韩国产精品成人| 久久视频免费看| 国产亚洲一区字幕| 日本wwww色| 国产精品日韩| 日韩av电影免费播放| 国外成人福利视频| 久久久亚洲影院你懂的| 香蕉视频国产在线| 欧美日韩成人综合在线一区二区 | 欧美日韩精品中文字幕| 四虎影视1304t| 成人av手机在线观看| 精品日韩久久久| 日韩一级不卡| 日本福利视频导航| 国产午夜一区| 精品国产一区二区三区麻豆小说 | 亚洲国产精品嫩草影院| 免费看的黄色录像| 91网站黄www| 一个人看的视频www| 日本欧美一区二区| 国产美女作爱全过程免费视频| 欧州一区二区| 国产精品毛片va一区二区三区| 天天综合网天天| 午夜精品在线视频| 中文字幕有码在线视频| 国产一区二区三区四区福利| 天天综合天天色| 精品久久一二三区| 国产精品毛片一区视频播| 色天天综合色天天久久| 国产福利拍拍拍| 亚洲第一久久影院| 高h视频免费观看| 中文字幕亚洲成人| 摸摸摸bbb毛毛毛片| 91蜜桃婷婷狠狠久久综合9色| 中文字幕天堂av| 国产精品一区二区无线| 十八禁视频网站在线观看| 西西裸体人体做爰大胆久久久| 欧美高清中文字幕| 欧美日韩一区自拍| 777久久精品一区二区三区无码| 妖精一区二区三区精品视频| 精品欧美一区二区精品久久| 国产精品99久久免费| 91青草视频久久| 国产999精品在线观看| 国产一区欧美二区三区| 欧美videos粗暴| 国产欧美最新羞羞视频在线观看| 国产精品第一| 成人性教育视频在线观看| 免费污视频在线一区| 国产成一区二区| 视频二区不卡| 91福利视频网| 厕沟全景美女厕沟精品| 欧美又大又粗又长| 超碰成人av| 国产精品成人免费电影| 九九热线视频只有这里最精品| 国产经典一区二区| 日本久久二区| 国产精品免费观看在线| 四虎视频在线精品免费网址| 97超级碰碰| 国产成人tv| 欧美日韩一区在线视频| 久久最新网址| 色乱码一区二区三在线看| 日韩av二区| japanese在线播放| 伊人激情综合| 美女福利视频在线| 日韩电影一区二区三区四区| 五月婷婷丁香综合网| 狠狠色狠狠色综合日日91app| 免费观看一区二区三区| 久久综合狠狠综合| 青青青视频在线免费观看| 成人免费一区二区三区在线观看| 2021亚洲天堂| 色综合亚洲欧洲| 一级黄色片在线| 91精品国模一区二区三区| 视频二区在线观看| 一本一道久久a久久精品逆3p| 国产激情在线观看| 午夜精品久久久久久99热| 韩国成人在线| 国产精品久久久久av福利动漫| 影视先锋久久| 免费观看国产视频在线| 亚洲经典在线| 男人日女人逼逼| 亚洲日本欧美| 亚洲欧美国产中文| 成人毛片老司机大片| 日本一区二区视频在线播放| 亚洲一区二区三区爽爽爽爽爽| 五月天激情国产综合婷婷婷| 欧美在线影院一区二区| 亚洲成人77777| 国产香蕉一区二区三区在线视频| 青草在线视频| 国产精品三级美女白浆呻吟| 菁菁伊人国产精品| 亚洲精品视频一区二区三区| 精品成人一区| 无人码人妻一区二区三区免费| 久久久精品tv| 五月婷婷一区二区| 欧美日韩一区久久| 欧美婷婷久久五月精品三区| 欧美猛交ⅹxxx乱大交视频| av在线视屏| 91原创国产| 天堂网在线观看国产精品| 国产精品亚洲αv天堂无码| 国产中文一区二区三区| 一级黄色录像毛片| 欧美性xxxxhd| 免费国产黄色片| 欧美老肥婆性猛交视频| 少妇精品视频在线观看| 日韩在线三级| 亚洲美女少妇无套啪啪呻吟| 一区二区三区人妻| 亚洲图片你懂的| 在线免费一级片| 伊人久久免费视频| 一区二区三区四区日本视频| 韩日午夜在线资源一区二区| 好吊日精品视频| 少妇愉情理伦片bd| 亚洲欧洲日本在线| 中文字幕人妻精品一区| 国产亚洲精品久久久| 欧美大片高清| 精品国产乱码久久久久久郑州公司 | 91蝌蚪精品视频| 日本高清不卡三区| 午夜亚洲激情| 右手影院亚洲欧美| 亚洲精品国产a| 成人免费一区二区三区| 国产一区二区三区视频免费| 国产精品高清乱码在线观看| 日韩欧美在线一区二区| 欧美一级一区| 国产传媒国产传媒| 欧美色电影在线| 国产福利电影在线| 国产精品偷伦视频免费观看国产| 欧美日韩精品在线一区| 尤蜜粉嫩av国产一区二区三区| 国产精品网站一区| 国产女人18毛片水18精| 欧美成人精品在线| 精品免费av在线| 欧美日韩中文字幕在线播放| 成人免费av资源| 日本午夜视频在线观看| 亚洲色图国产精品| 日日夜夜亚洲| 青青视频免费在线| 99在线精品视频| 精品成人av一区二区在线播放| 亚洲精品一区二区网址| 国产精品videossex撒尿| 国产日韩视频在线播放| 国产69精品久久777的优势| 中文在线观看免费网站| 亚洲图片在区色| 国产成人视屏| 精品久久一二三| 国产精品欧美经典| 成人黄色免费视频| 日本精品在线视频| 天天射成人网| 天天躁日日躁狠狠躁免费麻豆| 日韩欧美国产免费播放| 99reav在线| 国产精品国产精品|