Repository: liangliangzhuang/R_example Branch: master Commit: 14a9ba56c52e Files: 607 Total size: 154.8 MB Directory structure: gitextract_2nr_zcnv/ ├── 2020年/ │ ├── 2020.07.13Network_igraph/ │ │ ├── edge.csv │ │ ├── graph.r │ │ └── vertices.csv │ ├── 2020.07.14China_map/ │ │ ├── bou2_4p.dbf │ │ ├── bou2_4p.shp │ │ ├── bou2_4p.shx │ │ ├── china_map.r │ │ └── data_dt.csv │ ├── 2020.07.15World_map/ │ │ ├── Country_Data.csv │ │ ├── cores.r │ │ └── world_data.csv │ ├── 2020.07.22Movielense/ │ │ ├── ch11-task.Rmd │ │ └── ch11-task.log │ ├── 2020.07.22坐标轴截断画图/ │ │ ├── code_truncation .R │ │ ├── code_truncation .Rmd │ │ └── code_truncation-.docx │ ├── 2020.07.24饼图与圆环图/ │ │ └── pie.rmd │ ├── 2020.07.29温大招生/ │ │ └── code_ggimage.r │ ├── 2020.08.14amazon/ │ │ ├── RECOM.Rmd │ │ ├── code.Rmd │ │ └── 亚马逊产品推荐算法.xmind │ ├── 2020.08.15分面/ │ │ ├── .R数据科学.pdf.icloud │ │ ├── facet.log │ │ └── facet.rmd │ ├── 2020.08.23好玩的图/ │ │ ├── fun.r │ │ └── readme.txt │ ├── 2020.08.25马赛克/ │ │ ├── 马赛克.html │ │ └── 马赛克.rmd │ ├── 2020.08.26混合多个图形/ │ │ ├── 混合图.html │ │ └── 混合图.rmd │ ├── 2020.09.15reticulate/ │ │ └── reticulate.rmd │ ├── 2020.09.27tidyverse数据清洗/ │ │ └── Tidy_data.rmd │ ├── 2020.10.09散点图系列一/ │ │ ├── scater_plot1.html │ │ └── scater_plot1.rmd │ ├── 2020.10.27散点图系列二/ │ │ ├── HighDensity_Scatter_Data.csv │ │ ├── scater_plot2.html │ │ └── scater_plot2.rmd │ ├── 2020.10.30ggpubr/ │ │ └── ggpubr.rmd │ ├── 2020.11.05气泡图/ │ │ ├── 1.txt │ │ ├── Bubble_plot.html │ │ └── Bubble_plot.rmd │ ├── 2020.11.14gghalves/ │ │ ├── gghalves.html │ │ └── gghalves.rmd │ ├── 2020.11.16flexdashboard/ │ │ ├── flexdashboard.md │ │ ├── test.html │ │ ├── test.rmd │ │ ├── 例子/ │ │ │ └── 09_rbokeh-iris-dataset/ │ │ │ ├── dashboard-pandoc2.0.3.html │ │ │ └── dashboard.Rmd │ │ ├── 教程.html │ │ ├── 教程.rmd │ │ └── 链接.txt │ ├── 2020.11.22三维散点图/ │ │ ├── 3d_scatter.html │ │ ├── 3d_scatter.rmd │ │ └── ThreeD_Scatter_Data.csv │ ├── 2020.11.22数据处理ntile()/ │ │ └── 数据处理数据按从小到大分成n类.md │ ├── 2020.11.28等高线/ │ │ ├── .RData │ │ ├── .Rhistory │ │ ├── 等高线.html │ │ ├── 等高线.r │ │ ├── 等高线.rmd │ │ └── 等高线.txt │ ├── 2020.12.05日历/ │ │ ├── .My_calendar7(1).pdf.icloud │ │ ├── 日历_EasyShu.rmd │ │ ├── 日历教程.md │ │ ├── 日历教程.rmd │ │ └── 背景/ │ │ ├── .1.png.icloud │ │ ├── .2.png.icloud │ │ └── .3.jpg.icloud │ ├── 2020.12.07瀑布图/ │ │ ├── Facting_Data.csv │ │ └── 瀑布图.rmd │ ├── 2020.12.21esquisse包/ │ │ └── esquisse包.md │ ├── 2020.12.24Mandalas/ │ │ └── Mandalas/ │ │ ├── .Rproj.user/ │ │ │ ├── 9B97F8EE/ │ │ │ │ └── sources/ │ │ │ │ ├── prop/ │ │ │ │ │ ├── 34FB05E2 │ │ │ │ │ ├── 5C967418 │ │ │ │ │ ├── B38F6FEB │ │ │ │ │ ├── D25723BC │ │ │ │ │ └── INDEX │ │ │ │ └── s-75E8F375/ │ │ │ │ ├── 17CC9D9C │ │ │ │ ├── 17CC9D9C-contents │ │ │ │ ├── 20B6EE7D │ │ │ │ ├── 20B6EE7D-contents │ │ │ │ ├── 28FAC3B5 │ │ │ │ ├── 28FAC3B5-contents │ │ │ │ ├── 4326A9CE │ │ │ │ ├── 4326A9CE-contents │ │ │ │ ├── C7D0C74B │ │ │ │ ├── C7D0C74B-contents │ │ │ │ └── lock_file │ │ │ └── shared/ │ │ │ └── notebooks/ │ │ │ ├── 40CC0FD6-Mandalas/ │ │ │ │ └── 1/ │ │ │ │ ├── 9B97F8EE87974FA4/ │ │ │ │ │ └── chunks.json │ │ │ │ └── s/ │ │ │ │ ├── cct2o5lt4yw4d/ │ │ │ │ │ └── 000011.csv │ │ │ │ └── chunks.json │ │ │ ├── 540673E1-峰峦图/ │ │ │ │ └── 1/ │ │ │ │ ├── 9B97F8EE75E8F375/ │ │ │ │ │ └── chunks.json │ │ │ │ ├── 9B97F8EE87974FA4/ │ │ │ │ │ └── chunks.json │ │ │ │ └── s/ │ │ │ │ └── chunks.json │ │ │ ├── patch-chunk-names │ │ │ └── paths │ │ ├── Mandalas.Rproj │ │ ├── Mandalas.html │ │ └── Mandalas.rmd │ ├── 2020.12.24圣诞节/ │ │ ├── 1.json │ │ └── marry.R │ ├── 2020.12.25峰峦图/ │ │ └── 峰峦图.rmd │ ├── 2020.12.30ggvis/ │ │ ├── ggvis.html │ │ ├── ggvis.md │ │ └── ggvis.rmd │ └── 2020年R数据科学系列/ │ ├── 2020.08.23几何对象/ │ │ └── 几何对象.md │ ├── 2020.08.23速查表/ │ │ ├── 让微信排版变 Nice.html │ │ └── 速查表.html │ ├── 2020.09.27tidy data/ │ │ └── Tidy_data.rmd │ └── 《R数据科学》源代码/ │ ├── DESCRIPTION │ ├── EDA.Rmd │ ├── LICENSE │ ├── README.md │ ├── _bookdown.yml │ ├── _common.R │ ├── _output.yaml │ ├── communicate-plots.Rmd │ ├── communicate.Rmd │ ├── contribs.txt │ ├── contribute.rmd │ ├── datetimes.Rmd │ ├── explore.Rmd │ ├── factors.Rmd │ ├── figures.R │ ├── functions.Rmd │ ├── hierarchy.Rmd │ ├── import.Rmd │ ├── index.rmd │ ├── intro.Rmd │ ├── issues.json │ ├── iteration.Rmd │ ├── model-assess.Rmd │ ├── model-basics.Rmd │ ├── model-building.Rmd │ ├── model-many.Rmd │ ├── model.Rmd │ ├── pipes.Rmd │ ├── program.Rmd │ ├── r4ds.Rproj │ ├── r4ds.css │ ├── relational-data.Rmd │ ├── rmarkdown-formats.Rmd │ ├── rmarkdown-workflow.Rmd │ ├── rmarkdown.Rmd │ ├── strings.Rmd │ ├── tibble.Rmd │ ├── transform.Rmd │ ├── vectors.Rmd │ ├── visualize.Rmd │ ├── workflow-basics.Rmd │ ├── workflow-projects.Rmd │ ├── workflow-scripts.Rmd │ └── wrangle.Rmd ├── 2021年/ │ ├── 2021.01.31主成分结果可视化/ │ │ ├── pac_visual.log │ │ └── pac_visual.rmd │ ├── 2021.02.21克利夫兰点图系列/ │ │ ├── DotPlots_Data.csv │ │ ├── cleveland's .Rmd │ │ └── cleveland-s-.log │ └── 2021.02.28常用主题风格/ │ ├── .R可视乎|ggplot常用主题风格汇总.pdf.icloud │ └── R可视乎|ggplot常用主题风格汇总.md ├── 2022年/ │ ├── 2022.01.14 如何使用 ggplot2 绘制双轴分离图?/ │ │ └── 双轴分离.R │ ├── 2022.01.28 如何绘制省市级地图?/ │ │ ├── df_China4.csv │ │ ├── 各区县经营效率平均值.csv │ │ ├── 温州地图绘制.r │ │ ├── 温州市.json │ │ └── 绘制浙江省地图.R │ ├── 2022.02.08读者投稿|绘制一系列黑白印刷风格图表/ │ │ └── acchist.r │ ├── 2022.03.14绘制混合密度函数图以及添加分位数线/ │ │ └── mix-quantile.r │ ├── 2022.04.08R 案例|绘制不同分布的 QQ 图/ │ │ └── qqplot.r │ ├── 2022.05.15老板让你复现一个图片,你会使用什么软件?/ │ │ └── example.r │ ├── 2022.08.08 ggplot 分面的细节调整汇总/ │ │ └── ggplot_facet.r │ ├── 2022.09.09 如何在分面中添加数学表达式标签? / │ │ └── add_math_label.r │ ├── 2022.09.24 中国地图绘制/ │ │ ├── .RData │ │ ├── .Rhistory │ │ └── .Rproj.user/ │ │ ├── 161F88A0/ │ │ │ ├── pcs/ │ │ │ │ ├── files-pane.pper │ │ │ │ ├── packages-pane.pper │ │ │ │ ├── source-pane.pper │ │ │ │ ├── windowlayoutstate.pper │ │ │ │ └── workbench-pane.pper │ │ │ ├── rmd-outputs │ │ │ ├── saved_source_markers │ │ │ └── sources/ │ │ │ └── prop/ │ │ │ ├── 212A8ABB │ │ │ ├── 21BA30B6 │ │ │ ├── 702BC91B │ │ │ ├── 9F335933 │ │ │ ├── D8AA2E2E │ │ │ └── INDEX │ │ └── shared/ │ │ └── notebooks/ │ │ ├── patch-chunk-names │ │ └── paths │ ├── 2022.10.12使用 ggplot2 绘制单个和多个省份地图/ │ │ ├── china_shp/ │ │ │ ├── CHN_adm0.cpg │ │ │ ├── CHN_adm0.csv │ │ │ ├── CHN_adm0.dbf │ │ │ ├── CHN_adm0.prj │ │ │ ├── CHN_adm0.shp │ │ │ ├── CHN_adm0.shx │ │ │ ├── CHN_adm1.cpg │ │ │ ├── CHN_adm1.csv │ │ │ ├── CHN_adm1.dbf │ │ │ ├── CHN_adm1.prj │ │ │ ├── CHN_adm1.shp │ │ │ ├── CHN_adm1.shx │ │ │ ├── CHN_adm2.cpg │ │ │ ├── CHN_adm2.csv │ │ │ ├── CHN_adm2.dbf │ │ │ ├── CHN_adm2.prj │ │ │ ├── CHN_adm2.shp │ │ │ ├── CHN_adm2.shx │ │ │ ├── CHN_adm3.cpg │ │ │ ├── CHN_adm3.csv │ │ │ ├── CHN_adm3.dbf │ │ │ ├── CHN_adm3.prj │ │ │ ├── CHN_adm3.shp │ │ │ ├── CHN_adm3.shx │ │ │ ├── license.txt │ │ │ └── my_file.txt │ │ ├── colour.csv │ │ ├── map.Rproj │ │ ├── province.csv │ │ ├── 南海.geojson │ │ ├── 地图十段线.R │ │ ├── 测试数据.xlsx │ │ └── 省份地图.R │ ├── 2022.11.07 常用 7 大类图形可视化汇总——ggplot2包/ │ │ ├── .RData │ │ ├── .Rhistory │ │ ├── .Rproj.user/ │ │ │ ├── 161F88A0/ │ │ │ │ ├── build_options │ │ │ │ ├── build_options 2 │ │ │ │ ├── pcs/ │ │ │ │ │ ├── .files-pane 2.pper.icloud │ │ │ │ │ ├── .packages-pane 2.pper.icloud │ │ │ │ │ ├── .source-pane 2.pper.icloud │ │ │ │ │ ├── .windowlayoutstate 2.pper.icloud │ │ │ │ │ ├── .workbench-pane 2.pper.icloud │ │ │ │ │ ├── files-pane.pper │ │ │ │ │ ├── packages-pane.pper │ │ │ │ │ ├── source-pane.pper │ │ │ │ │ ├── windowlayoutstate.pper │ │ │ │ │ └── workbench-pane.pper │ │ │ │ ├── rmd-outputs │ │ │ │ ├── saved_source_markers │ │ │ │ └── sources/ │ │ │ │ ├── per/ │ │ │ │ │ ├── t/ │ │ │ │ │ │ ├── CD5422DD │ │ │ │ │ │ ├── CD5422DD 2 │ │ │ │ │ │ ├── CD5422DD-contents │ │ │ │ │ │ └── CD5422DD-contents 2 │ │ │ │ │ └── u/ │ │ │ │ │ ├── 86D463FB │ │ │ │ │ ├── 86D463FB 2 │ │ │ │ │ ├── 86D463FB-contents │ │ │ │ │ └── 86D463FB-contents 2 │ │ │ │ └── prop/ │ │ │ │ ├── 6244B089 │ │ │ │ ├── 6244B089 2 │ │ │ │ ├── 66C45745 │ │ │ │ ├── 66C45745 2 │ │ │ │ ├── DCED28DF │ │ │ │ ├── DCED28DF 2 │ │ │ │ ├── INDEX │ │ │ │ └── INDEX 2 │ │ │ ├── C6560784/ │ │ │ │ ├── pcs/ │ │ │ │ │ ├── .files-pane 2.pper.icloud │ │ │ │ │ ├── .source-pane 2.pper.icloud │ │ │ │ │ ├── .windowlayoutstate 2.pper.icloud │ │ │ │ │ ├── .workbench-pane 2.pper.icloud │ │ │ │ │ ├── files-pane.pper │ │ │ │ │ ├── source-pane.pper │ │ │ │ │ ├── windowlayoutstate.pper │ │ │ │ │ └── workbench-pane.pper │ │ │ │ ├── rmd-outputs │ │ │ │ ├── saved_source_markers │ │ │ │ └── sources/ │ │ │ │ ├── per/ │ │ │ │ │ └── t/ │ │ │ │ │ ├── C36CFFC0 │ │ │ │ │ ├── C36CFFC0 2 │ │ │ │ │ ├── C36CFFC0-contents │ │ │ │ │ └── C36CFFC0-contents 2 │ │ │ │ └── prop/ │ │ │ │ ├── F9089F45 │ │ │ │ ├── F9089F45 2 │ │ │ │ ├── INDEX │ │ │ │ └── INDEX 2 │ │ │ └── shared/ │ │ │ └── notebooks/ │ │ │ ├── CED44E14-50pictures_ggplot/ │ │ │ │ └── 1/ │ │ │ │ ├── C656078445C2030A/ │ │ │ │ │ ├── chunks 2.json │ │ │ │ │ └── chunks.json │ │ │ │ └── s/ │ │ │ │ ├── cg7cix78cerjz/ │ │ │ │ │ ├── .00000f 2.metadata.icloud │ │ │ │ │ ├── .00000f 2.rdf.icloud │ │ │ │ │ ├── 00000f.metadata │ │ │ │ │ └── 00000f.rdf │ │ │ │ ├── chunks 2.json │ │ │ │ ├── chunks.json │ │ │ │ └── csetup_chunk/ │ │ │ │ ├── .00000f 2.csv.icloud │ │ │ │ └── 00000f.csv │ │ │ ├── patch-chunk-names │ │ │ ├── patch-chunk-names 2 │ │ │ ├── paths │ │ │ └── paths 2 │ │ ├── 50pictures_ggplot.Rproj │ │ ├── 50pictures_ggplot.html │ │ ├── 50pictures_ggplot.rmd │ │ ├── midwest.csv │ │ └── readme.txt │ ├── 2022.11.15 R绘图案例|基于分面的折线图绘制/ │ │ ├── .RData │ │ ├── .Rhistory │ │ ├── .Rproj.user/ │ │ │ ├── C6560784/ │ │ │ │ ├── pcs/ │ │ │ │ │ ├── files-pane.pper │ │ │ │ │ ├── packages-pane.pper │ │ │ │ │ ├── source-pane.pper │ │ │ │ │ ├── windowlayoutstate.pper │ │ │ │ │ └── workbench-pane.pper │ │ │ │ ├── rmd-outputs │ │ │ │ ├── saved_source_markers │ │ │ │ └── sources/ │ │ │ │ ├── prop/ │ │ │ │ │ ├── 3664F9C7 │ │ │ │ │ ├── A35D258F │ │ │ │ │ ├── E600AE88 │ │ │ │ │ └── INDEX │ │ │ │ └── session-417D82C1/ │ │ │ │ ├── 3B4320B1 │ │ │ │ ├── 3B4320B1-contents │ │ │ │ └── lock_file │ │ │ └── shared/ │ │ │ └── notebooks/ │ │ │ ├── patch-chunk-names │ │ │ └── paths │ │ ├── data_city.csv │ │ ├── line_point.R │ │ └── plot.Rproj │ ├── 2022.11.19 分面中添加不同的直线/ │ │ ├── facet-line.r │ │ ├── plot.Rproj │ │ └── test.xlsx │ ├── 2022.11.29 R绘图案例|基于分面的面积图绘制/ │ │ ├── .RData │ │ ├── .Rhistory │ │ ├── .Rproj.user/ │ │ │ ├── C6560784/ │ │ │ │ ├── jobs/ │ │ │ │ │ └── 7897C193-output.json │ │ │ │ ├── pcs/ │ │ │ │ │ ├── files-pane.pper │ │ │ │ │ ├── source-pane.pper │ │ │ │ │ ├── windowlayoutstate.pper │ │ │ │ │ └── workbench-pane.pper │ │ │ │ ├── rmd-outputs │ │ │ │ ├── saved_source_markers │ │ │ │ └── sources/ │ │ │ │ ├── prop/ │ │ │ │ │ ├── 0508C42F │ │ │ │ │ ├── 0D0D59B5 │ │ │ │ │ ├── 19008281 │ │ │ │ │ ├── A62E60CA │ │ │ │ │ └── INDEX │ │ │ │ ├── session-23478791/ │ │ │ │ │ ├── 0BC0007C │ │ │ │ │ ├── 0BC0007C-contents │ │ │ │ │ ├── AF358D71-contents │ │ │ │ │ ├── EB6BB15A │ │ │ │ │ ├── EB6BB15A-contents │ │ │ │ │ └── lock_file │ │ │ │ └── session-51C83C65/ │ │ │ │ ├── 8752579D │ │ │ │ ├── 8752579D-contents │ │ │ │ └── lock_file │ │ │ └── shared/ │ │ │ └── notebooks/ │ │ │ ├── patch-chunk-names │ │ │ └── paths │ │ ├── R-plot.Rproj │ │ ├── rev_plot.R │ │ └── test.xlsx │ └── 2022.12.31 2023年日历大派送/ │ ├── .RData │ ├── .Rhistory │ ├── .Rproj.user/ │ │ ├── C6560784/ │ │ │ ├── jobs/ │ │ │ │ └── E803742C-output.json │ │ │ ├── pcs/ │ │ │ │ ├── files-pane.pper │ │ │ │ ├── source-pane.pper │ │ │ │ ├── windowlayoutstate.pper │ │ │ │ └── workbench-pane.pper │ │ │ ├── rmd-outputs │ │ │ ├── saved_source_markers │ │ │ └── sources/ │ │ │ ├── per/ │ │ │ │ └── t/ │ │ │ │ ├── 13B3FE41 │ │ │ │ ├── 13B3FE41-contents │ │ │ │ ├── 873D867D │ │ │ │ └── 873D867D-contents │ │ │ └── prop/ │ │ │ ├── 26BD393F │ │ │ ├── 8A1E9267 │ │ │ ├── F0AB5896 │ │ │ └── INDEX │ │ └── shared/ │ │ └── notebooks/ │ │ ├── patch-chunk-names │ │ └── paths │ ├── version1.R │ ├── version2.R │ └── 未命名.Rproj ├── 2023年/ │ ├── 2022.08.31 分面+双轴/ │ │ ├── .RData │ │ ├── .Rhistory │ │ ├── .Rproj.user/ │ │ │ ├── C6560784/ │ │ │ │ ├── pcs/ │ │ │ │ │ ├── files-pane.pper │ │ │ │ │ ├── source-pane.pper │ │ │ │ │ ├── windowlayoutstate.pper │ │ │ │ │ └── workbench-pane.pper │ │ │ │ ├── rmd-outputs │ │ │ │ ├── saved_source_markers │ │ │ │ └── sources/ │ │ │ │ ├── per/ │ │ │ │ │ └── t/ │ │ │ │ │ ├── EA22C3C6 │ │ │ │ │ └── EA22C3C6-contents │ │ │ │ └── prop/ │ │ │ │ ├── D4B371E0 │ │ │ │ ├── F02804FC │ │ │ │ └── INDEX │ │ │ └── shared/ │ │ │ └── notebooks/ │ │ │ ├── patch-chunk-names │ │ │ └── paths │ │ ├── Add secondary axis.R │ │ └── df.csv │ ├── 2023.03.07 高亮柱状图/ │ │ └── 高亮柱状图.R │ ├── 2023.03.08 基于 ggridges 绘制剩余使用寿命密度图/ │ │ └── rul_ggbridges.R │ ├── 2023.03.09基于 ggdensity 包的等高线绘制/ │ │ └── 等高线绘制.R │ ├── 2023.03.16使用 ggTimeSeries 包构建日历图/ │ │ ├── timeseries.R │ │ ├── 日历图.html │ │ ├── 日历图.qmd │ │ └── 日历图_files/ │ │ └── libs/ │ │ ├── bootstrap/ │ │ │ └── bootstrap-icons.css │ │ └── quarto-html/ │ │ ├── quarto-syntax-highlighting.css │ │ ├── quarto.js │ │ └── tippy.css │ ├── 2023.04.01 基于 R 语言的科研论文绘图技巧汇总/ │ │ ├── .RData │ │ ├── .Rhistory │ │ ├── .Rproj.user/ │ │ │ ├── C6560784/ │ │ │ │ ├── pcs/ │ │ │ │ │ ├── files-pane.pper │ │ │ │ │ ├── packages-pane.pper │ │ │ │ │ ├── source-pane.pper │ │ │ │ │ ├── windowlayoutstate.pper │ │ │ │ │ └── workbench-pane.pper │ │ │ │ ├── rmd-outputs │ │ │ │ ├── saved_source_markers │ │ │ │ └── sources/ │ │ │ │ ├── per/ │ │ │ │ │ └── t/ │ │ │ │ │ ├── 7696DA26 │ │ │ │ │ ├── 7696DA26-contents │ │ │ │ │ ├── 83B6CCD0 │ │ │ │ │ ├── 83B6CCD0-contents │ │ │ │ │ ├── A32C5A91 │ │ │ │ │ ├── A32C5A91-contents │ │ │ │ │ ├── E41305B6 │ │ │ │ │ └── E41305B6-contents │ │ │ │ └── prop/ │ │ │ │ ├── 31AEA8EB │ │ │ │ ├── 51574A35 │ │ │ │ ├── 53B7DAA0 │ │ │ │ ├── 5916C35B │ │ │ │ ├── 5B81A5B2 │ │ │ │ ├── 75B7761D │ │ │ │ ├── 86D189DF │ │ │ │ ├── ABCABC27 │ │ │ │ ├── BCA3F795 │ │ │ │ ├── C757E81D │ │ │ │ ├── E86E28FA │ │ │ │ └── INDEX │ │ │ └── shared/ │ │ │ └── notebooks/ │ │ │ ├── 18DAA490-A/ │ │ │ │ └── 1/ │ │ │ │ └── s/ │ │ │ │ └── chunks.json │ │ │ ├── patch-chunk-names │ │ │ └── paths │ │ ├── LICENSE │ │ ├── Panel_C.R │ │ ├── Panel_D.R │ │ ├── Panel_E.R │ │ ├── Panel_F.R │ │ ├── README.md │ │ ├── data_B.csv │ │ ├── data_Cmu_E10.5.csv │ │ ├── data_Cmu_E11.5.csv │ │ ├── data_Cmu_E8.5.csv │ │ ├── data_Cmu_E9.5.csv │ │ ├── data_Cwt_E10.5.csv │ │ ├── data_Cwt_E11.5.csv │ │ ├── data_Cwt_E8.5.csv │ │ ├── data_Cwt_E9.5.csv │ │ ├── data_D1.csv │ │ ├── data_D2.csv │ │ ├── data_Ea.csv │ │ ├── data_Eb.csv │ │ ├── data_Ec.csv │ │ ├── data_F.csv │ │ ├── figure_example.R │ │ └── figure_example.Rproj │ ├── 2023.04.12 Rmarkdown重复性报告/ │ │ ├── .RData │ │ ├── .Rhistory │ │ ├── .Rproj.user/ │ │ │ ├── C6560784/ │ │ │ │ ├── pcs/ │ │ │ │ │ ├── files-pane.pper │ │ │ │ │ ├── source-pane.pper │ │ │ │ │ ├── windowlayoutstate.pper │ │ │ │ │ └── workbench-pane.pper │ │ │ │ ├── quarto-crossref/ │ │ │ │ │ ├── AA033108 │ │ │ │ │ └── INDEX │ │ │ │ ├── rmd-outputs │ │ │ │ ├── saved_source_markers │ │ │ │ └── sources/ │ │ │ │ ├── per/ │ │ │ │ │ ├── t/ │ │ │ │ │ │ ├── 24D937C1 │ │ │ │ │ │ ├── 24D937C1-contents │ │ │ │ │ │ ├── 47C21D39 │ │ │ │ │ │ └── 47C21D39-contents │ │ │ │ │ └── u/ │ │ │ │ │ ├── F684F954 │ │ │ │ │ └── F684F954-contents │ │ │ │ └── prop/ │ │ │ │ ├── 07CCB8CA │ │ │ │ ├── 55F7E8FD │ │ │ │ ├── 5A14198B │ │ │ │ ├── 998B2979 │ │ │ │ ├── CA24840E │ │ │ │ ├── DD741787 │ │ │ │ ├── EAE6CDE4 │ │ │ │ ├── FD4997C5 │ │ │ │ └── INDEX │ │ │ └── shared/ │ │ │ └── notebooks/ │ │ │ ├── 72C89A46-中文/ │ │ │ │ └── 1/ │ │ │ │ ├── C65607844eefea2c/ │ │ │ │ │ └── chunks.json │ │ │ │ ├── C6560784b90da11a/ │ │ │ │ │ └── chunks.json │ │ │ │ ├── C6560784f87258bb/ │ │ │ │ │ └── chunks.json │ │ │ │ └── s/ │ │ │ │ ├── chunks.json │ │ │ │ ├── cq8zbuk6wx2qd/ │ │ │ │ │ ├── 00000f.metadata │ │ │ │ │ └── 00000f.rdf │ │ │ │ └── csetup_chunk/ │ │ │ │ └── 00000f.csv │ │ │ ├── patch-chunk-names │ │ │ └── paths │ │ ├── Project.Rproj │ │ ├── data/ │ │ │ ├── A中学.csv │ │ │ ├── B中学.csv │ │ │ └── C中学.csv │ │ ├── exploratory_A中学.log │ │ ├── exploratory_B中学.log │ │ ├── libs/ │ │ │ ├── header-attrs-2.20/ │ │ │ │ └── header-attrs.js │ │ │ └── remark-css-0.0.1/ │ │ │ └── default.css │ │ ├── test.R │ │ ├── zh-CN.css │ │ └── 中文.Rmd │ ├── 2023.05.04 如何一步步提高图形 B 格?以 ggplot 绘图为例/ │ │ ├── .Rhistory │ │ └── line.R │ ├── 2023.05.08个性化树状图/ │ │ └── ggparty.R │ ├── 2023.05.13 高级棒棒图/ │ │ └── 棒棒图.R │ ├── 2023.06.29 旭日图/ │ │ ├── .Rproj.user/ │ │ │ ├── C6560784/ │ │ │ │ ├── jobs/ │ │ │ │ │ └── 4152B7D6-output.json │ │ │ │ └── sources/ │ │ │ │ ├── prop/ │ │ │ │ │ ├── 1E4518E3 │ │ │ │ │ ├── 5E635AFA │ │ │ │ │ └── INDEX │ │ │ │ └── session-ef7e8bd6/ │ │ │ │ ├── 3A928347-contents │ │ │ │ ├── F749EB52 │ │ │ │ ├── F749EB52-contents │ │ │ │ └── lock_file │ │ │ └── shared/ │ │ │ └── notebooks/ │ │ │ ├── patch-chunk-names │ │ │ └── paths │ │ ├── d.csv │ │ ├── 旭日图.R │ │ ├── 未命名.Rproj │ │ └── 未命名.html │ ├── 2023.08.05 局部细节放大图/ │ │ └── 局部细节放大图.R │ ├── 2023.08.24 绘制足球数据/ │ │ └── ggsoccer.R │ ├── 2023.10.08 灯芯柱状图/ │ │ ├── .RData │ │ ├── .Rhistory │ │ ├── .Rproj.user/ │ │ │ ├── C6560784/ │ │ │ │ ├── pcs/ │ │ │ │ │ ├── debug-breakpoints.pper │ │ │ │ │ ├── files-pane.pper │ │ │ │ │ ├── source-pane.pper │ │ │ │ │ ├── windowlayoutstate.pper │ │ │ │ │ └── workbench-pane.pper │ │ │ │ ├── persistent-state │ │ │ │ ├── rmd-outputs │ │ │ │ ├── saved_source_markers │ │ │ │ └── sources/ │ │ │ │ ├── prop/ │ │ │ │ │ ├── 00943EE4 │ │ │ │ │ ├── 59990D2B │ │ │ │ │ └── INDEX │ │ │ │ └── session-6c0d0c41/ │ │ │ │ ├── 4BEAD114 │ │ │ │ ├── 4BEAD114-contents │ │ │ │ └── lock_file │ │ │ └── shared/ │ │ │ └── notebooks/ │ │ │ ├── patch-chunk-names │ │ │ └── paths │ │ ├── animal_rescues.txt │ │ ├── df_animals_sum.csv │ │ ├── 未命名.Rproj │ │ └── 灯芯柱状图.r │ ├── 2023.12.02 分面中添加不同表格/ │ │ ├── .RData │ │ ├── .Rhistory │ │ ├── .Rproj.user/ │ │ │ ├── C6560784/ │ │ │ │ ├── pcs/ │ │ │ │ │ ├── files-pane.pper │ │ │ │ │ ├── source-pane.pper │ │ │ │ │ ├── windowlayoutstate.pper │ │ │ │ │ └── workbench-pane.pper │ │ │ │ ├── rmd-outputs │ │ │ │ ├── saved_source_markers │ │ │ │ └── sources/ │ │ │ │ ├── per/ │ │ │ │ │ └── t/ │ │ │ │ │ ├── 23FB0CA3 │ │ │ │ │ └── 23FB0CA3-contents │ │ │ │ └── prop/ │ │ │ │ ├── 276F3DD0 │ │ │ │ └── INDEX │ │ │ └── shared/ │ │ │ └── notebooks/ │ │ │ └── patch-chunk-names │ │ ├── project.Rproj │ │ └── 分面中添加不同表格.R │ ├── 2023.12.16 分面中添加拟合曲线/ │ │ ├── .Rproj.user/ │ │ │ ├── C6560784/ │ │ │ │ ├── pcs/ │ │ │ │ │ ├── files-pane.pper │ │ │ │ │ ├── source-pane.pper │ │ │ │ │ ├── windowlayoutstate.pper │ │ │ │ │ └── workbench-pane.pper │ │ │ │ └── sources/ │ │ │ │ ├── prop/ │ │ │ │ │ ├── DAA25768 │ │ │ │ │ └── INDEX │ │ │ │ └── session-427bca66/ │ │ │ │ ├── AB1928BC │ │ │ │ ├── AB1928BC-contents │ │ │ │ ├── C6EFA56A-contents │ │ │ │ └── lock_file │ │ │ └── shared/ │ │ │ └── notebooks/ │ │ │ └── patch-chunk-names │ │ ├── data_fit.RData │ │ ├── project.Rproj │ │ ├── true_data.RData │ │ └── 分面中添加拟合曲线.R │ └── 合并图形+共享图例/ │ └── 合并图形-共享图例.R ├── 2024年/ │ ├── 2024.02.07 多分类的条形图并标记数字/ │ │ ├── .RData │ │ ├── .Rhistory │ │ ├── .Rproj.user/ │ │ │ ├── C6560784/ │ │ │ │ ├── pcs/ │ │ │ │ │ ├── files-pane.pper │ │ │ │ │ ├── source-pane.pper │ │ │ │ │ ├── windowlayoutstate.pper │ │ │ │ │ └── workbench-pane.pper │ │ │ │ ├── rmd-outputs │ │ │ │ ├── saved_source_markers │ │ │ │ └── sources/ │ │ │ │ ├── per/ │ │ │ │ │ └── t/ │ │ │ │ │ ├── AF66B3A8 │ │ │ │ │ └── AF66B3A8-contents │ │ │ │ └── prop/ │ │ │ │ ├── 0418CBEF │ │ │ │ ├── 048F8B4D │ │ │ │ ├── 1A4EC317 │ │ │ │ └── INDEX │ │ │ └── shared/ │ │ │ └── notebooks/ │ │ │ ├── patch-chunk-names │ │ │ └── paths │ │ ├── project.Rproj │ │ └── 多分类条形图并标记数字.R │ ├── 2024.02.12 TiKZ绘图/ │ │ ├── tutorial.aux │ │ ├── tutorial.log │ │ └── tutorial.tex │ └── 2024.02.19 柱状图+分面/ │ ├── .Rproj.user/ │ │ ├── C6560784/ │ │ │ ├── pcs/ │ │ │ │ ├── files-pane.pper │ │ │ │ ├── source-pane.pper │ │ │ │ ├── windowlayoutstate.pper │ │ │ │ └── workbench-pane.pper │ │ │ └── sources/ │ │ │ ├── prop/ │ │ │ │ ├── 23624D4E │ │ │ │ └── INDEX │ │ │ └── session-fd2b58b4/ │ │ │ ├── 1FF7DD4B │ │ │ ├── 1FF7DD4B-contents │ │ │ └── lock_file │ │ └── shared/ │ │ └── notebooks/ │ │ ├── patch-chunk-names │ │ └── paths │ ├── demo_dat.csv │ ├── project.Rproj │ └── 柱状图+分面.R ├── README.md ├── 公众号资料/ │ ├── nice主题.docx │ ├── ~$创意大气述职报告.pptx │ ├── 封面制作模板.pptx │ ├── 年度总结/ │ │ └── 2020年公众号文章汇总.md │ ├── 数据科学模板.docx │ └── 资料获取.md └── 资料分享.md ================================================ FILE CONTENTS ================================================ ================================================ FILE: 2020年/2020.07.13Network_igraph/edge.csv ================================================ V1,V2 24,25 1,23 13,18 23,24 14,25 9,14 14,26 16,22 1,16 2,23 18,32 9,17 24,31 7,8 2,21 23,32 7,35 19,27 7,23 1,19 3,17 10,11 15,30 10,20 15,18 11,34 16,20 10,33 6,34 12,21 4,29 29,34 5,30 13,28 5,36 ================================================ FILE: 2020年/2020.07.13Network_igraph/graph.r ================================================ library(igraph) #1)导入边数据和节点数据======= setwd("") edges <- read.table('edge.csv', header=T, sep=',') #导入边数据,里面可以包含每个边的频次数据或权重 vertices <- read.table('vertices.csv', header=T, sep=',') #导入节点数据,可以包含属性数据,如分类 edges ;vertices #2)导入数据后,要转化成图数据才能用R作图,不同数据格式用不同方式======= graph <- graph_from_data_frame(edges, directed = F, vertices=vertices) #directed = TRUE表示有方向,如果不需要点数据,可以设置vertices=NULL #生成方式1(没有颜色分类):====== igraph.options(vertex.size=3, vertex.label=NA, edge.arrow.size=0.5) V(graph)$color <- colrs[V(graph)$color] plot(graph, layout=layout.reingold.tilford(graph,circular=T), #layout.fruchterman.reingold表示弹簧式发散的布局, #其他还有环形布局layout.circle,分层布局layout.reingold.tilford,中心向外发散layout.reingold.tilford(graph,circular=T) ,核心布局layout_as_star,大型网络可视化layout_with_drl vertex.size=5, #节点大小 vertex.shape='circle', #节点不带边框none,,圆形边框circle,方块形rectangle vertex.color="lightgreen",#设置颜色,其他如red,blue,cyan,yellow等 vertex.label=vertices$name, #NULL表示不设置,为默认状态,即默认显示数据中点的名称,可以是中文。如果是NA则表示不显示任何点信息 vertex.label.cex=0.8, #节点字体大小 vertex.label.color='black', #节点字体颜色,red vertex.label.dist=0.4, #标签和节点位置错开 edge.arrow.size=0,#连线的箭头的大小,若为0即为无向图,当然有些数据格式不支持有向图 edge.width = 0.5, #连接线宽度 edge.label=NA, #不显示连接线标签,默认为频次 edge.color="gray") #连线颜色 #生成方式2(有颜色分类):========== #set.seed() #生成随机数,这样图的布局就会可重复,而不是每次生成的时候都变 #l<-layout.fruchterman.reingold(graph) #设置图的布局方式为弹簧式发散的布局 l = layout.reingold.tilford(graph,circular=T) #具体修改过程 V(graph)$size <- 8 #节点大小与点中心度成正比,中心度即与该点相连的点的总数 colrs <- c('#0096ff', "lightblue", "azure3","firebrick1") V(graph)$color <- colrs[vertices$color] #根据类型设置颜色,按照类型分组 V(graph)$label.color <- 'black' #设置节点标记的颜色 V(graph)$label <- V(graph)$name #E(graph)$width <- E(graph)$fre #根据频次列设置边宽度 #E(graph)$label <- E(graph)$fre #根据频次列设置边标签 E(graph)$arrow.size=0.3 #设置箭头大小 #生成图 plot(graph, layout=l) ================================================ FILE: 2020年/2020.07.13Network_igraph/vertices.csv ================================================ id,name,color 1,,1 2,,1 3,,2 4,ҵ,3 5,ͳƵʵ,1 6,ְҵķչ,3 7,,4 8,һ,4 9,,2 10,ʵ,3 11,¡,3 12,ݷ,1 13,ԪͳƷ,1 14,,2 15,˼ͷ,1 16,ߵȴ(),1 17,ߵȴ(һ),2 18,ѧ,1 19,ͳƷ뽨ģ,1 20,˼,3 21,ʱз,1 22,ʵ,1 23,ͳ,1 24,ѧ(),2 25,ѧ(),2 26,ѧ(һ),2 27,ͳƷ׫д,1 28,ͳƽģ,1 29,,3 30,ͳƶӦ,1 31,ͳѧ,2 32,Ӧ,1 33,й˼,3 34,йִʷҪ,3 35,רҵ,4 36,רҵʵϰ,1 ================================================ FILE: 2020年/2020.07.14China_map/china_map.r ================================================ #9.1中国疫情图============ #(https://my.oschina.net/u/2306127/blog/473842) library(mapdata) library(maptools) library(ggplot2) library(plyr) china_map = readShapePoly("bou2_4p.shp")#导入shp格式的中国地图 x<-china_map@data xs<-data.frame(x,id=seq(0:924)-1)#地图中共计有925个地域信息 china_map1<-fortify(china_map) #转化为数据框 china_map_data<-join(china_map1,xs,type="full")#基于id进行连接 a = data.frame(unique(china_map@data$NAME)) #准备数据 mydata<-read.csv("data_dt.csv",header=T,as.is=T) china_data <- join(china_map_data, mydata, type="full")#基于NAME字段进行连接,NAME字段来自于地图文件中 #3、绘制地图 ## 版本一(无省份名称的当日各省确认人数) ggplot(china_data, aes(x = long, y = lat, group = group, fill = people)) + geom_polygon(colour="grey40") + scale_fill_gradient(low="white",high="steelblue") +#指定渐变填充色,可使用RGB theme( #清除不需要的元素 panel.grid = element_blank(), panel.background = element_blank(), axis.text = element_blank(), axis.ticks = element_blank(), axis.title = element_blank(), legend.position = c(0.2,0.3) ) ## 版本二(有省份名称的当日各省确认人数) midpos <- function(x) mean(range(x,na.rm=TRUE)) #取形状内的平均坐标 centres <- ddply(china_data,.(NAME),colwise(midpos,.(long,lat))) ggplot(china_data,aes(long,lat))+ #此处语法与前面不同,参考ggplot2一书P85 geom_polygon(aes(group=group,fill=people),colour="black")+ scale_fill_gradient(low="white",high="steelblue") + geom_text(aes(label=NAME),data=centres) + theme( panel.grid = element_blank(), panel.background = element_blank(), axis.text = element_blank(), axis.ticks = element_blank(), axis.title = element_blank() ) ================================================ FILE: 2020年/2020.07.14China_map/data_dt.csv ================================================ NAME,ratio,people,province ʡ,68135,1405, 㶫ʡ,1637,732,㶫 ʡ,1276,667, 㽭ʡ,1269,572,㽭 ʡ,1019,532, ʡ,991,510, ʡ,947,452, ʡ,932,340, ,905,322, ɽʡ,792,297,ɽ Ϻ,707,270,Ϻ ʡ,654,242, Ĵʡ,589,205,Ĵ ,582,201, ʡ,363,176, ӱʡ,349,166,ӱ ʡ,320,154, ׳,254,103, ɹ,238,93,ɹ ʡ,198,84, ɽʡ,198,77,ɽ ʡ,185,54, ʡ,171,49, ʡ,163,45, ʡ,155,45, ʡ,154,42, ʡ,147,40, ½ά,76,27,½ Ļ,75,9, ຣʡ,18,7,ຣ ,1,5, ر,1197,1, ̨ʡ,447,100,̨ ================================================ FILE: 2020年/2020.07.15World_map/Country_Data.csv ================================================ "Country ",Scale Aruba, Afghanistan,14337184953 Angola,122686093 Anguilla, Albania,52348966 Finland, Andorra, United Arab Emirates,1420302 Argentina,4793871 Armenia,118083985 American Samoa,1706789 Antarctica, Australia, French Southern and Antarctic Lands, Antigua,1024000 Barbuda, Austria, Azerbaijan,99645874 Burundi,71626580 Belgium,4143675 Benin,72834739 Burkina Faso,291773051 Bangladesh,657712016 Bulgaria,40346336 Bahrain,22984534 Bahamas,5530627 Bosnia and Herzegovina,113820206 Saint Barthelemy, Belarus,33366555 Belize,19013177 Bermuda, Bolivia,40456906 Brazil,47003710 Barbados,1195377 Brunei,336196 Bhutan,827607 Botswana,108084913 Central African Republic,163301353 Canada,25171012 Switzerland,1182463 Chile,9166231 China,109468893 Ivory Coast,230099050 Cameroon,107714146 Democratic Republic of the Congo,774104905 Republic of Congo,9313958 Cook Islands, Colombia,1008396303 Comoros,1162798 Cape Verde, Costa Rica,23807023 Cuba,19674492 Curacao, Cayman Islands, Cyprus,5878004 Czech Republic,12429517 Germany,627585 Djibouti,43437611 Dominica,958000 Denmark, Dominican Republic,105256853 Algeria,21999637 Ecuador,66630571 Egypt,285844459 Eritrea,1113076 Canary Islands, Spain,5227911 Estonia,12470092 Ethiopia,1421649545 Fiji,4602905 Falkland Islands, Reunion, Mayotte, French Guiana, Martinique, Guadeloupe, France,1464862 Faroe Islands, Micronesia,302553791 Gabon,13844417 UK,244658 Georgia,495691015 Guernsey, Ghana,307723748 Guinea,62034795 Gambia,4398110 Guinea-Bissau,3299809 Equatorial Guinea,335973 Greece,1347158 Grenada,991550 Greenland, Guatemala,304130054 Guam, Guyana,18365479 Heard Island, Honduras,197701659 Croatia,14439801 Haiti,702753017 Hungary,32842750 Indonesia,425241264 Isle of Man, India,261495537 Cocos Islands, Christmas Island, Chagos Archipelago, Ireland,7389871 Iran,2064968 Iraq,817392816 Iceland, Israel,6249503135 Italy,2758463 San Marino, Jamaica,63406681 Jersey, Jordan,2229268225 Japan,5583196 Siachen Glacier, Kazakhstan,284994227 Kenya,1757291419 Kyrgyzstan,142055012 Cambodia,215972560 Kiribati, Nevis, Saint Kitts, South Korea,2457582 Kosovo,133600340 Kuwait,92372 Laos,50370856 Lebanon,639875848 Liberia,456462263 Libya,70061408 Saint Lucia, Liechtenstein, Sri Lanka,81459320 Lesotho,108025026 Lithuania,18158581 Luxembourg, Latvia,9766796 Saint Martin, Morocco,170856475 Monaco, Moldova,186466454 Madagascar,125564678 Maldives,4842109 Mexico,557646557 Marshall Islands,128170833 Macedonia,56725720 Mali,361809062 Malta,1602646 Myanmar,225938871 Montenegro,9798308 Mongolia,30992965 Northern Mariana Islands, Mozambique,777992540 Mauritania,41288351 Montserrat, Mauritius,2569586 Malawi,440212898 Malaysia,25398180 Namibia,231306565 New Caledonia, Niger,217698383 Norfolk Island, Nigeria,1165516940 Nicaragua,94025520 Niue, Bonaire, Sint Eustatius, Saba, Netherlands,80365 Norway, Nepal,169303579 Nauru, New Zealand,7154 Oman,26659268 Pakistan,1972822305 Panama,24522344 Pitcairn Islands, Peru,304607830 Philippines,728003613 Palau,28769020 Papua New Guinea,14424130 Poland,93171533 Puerto Rico, North Korea,3997348 Madeira Islands, Azores, Portugal,916654 Paraguay,36856601 Palestine,884730488 French Polynesia, Qatar,3098 Romania,76362825 Russia,297186633 Rwanda,343709226 Western Sahara, Saudi Arabia,713501 Sudan,412033512 South Sudan,1480315209 Senegal,389694501 Singapore,1040834 South Sandwich Islands, South Georgia, Saint Helena, Ascension Island, Solomon Islands,2817980 Sierra Leone,53212837 El Salvador,153467672 Somalia,699889670 Saint Pierre and Miquelon, Serbia,75712324 Sao Tome and Principe,933472 Suriname,1453709 Slovakia,4589332 Slovenia,7086955 Sweden,45798 Swaziland,91046517 Sint Maarten, Seychelles,552879 Syria,1581881739 Turks and Caicos Islands, Chad,245554164 Togo,7650651 Thailand,132772482 Tajikistan,132816030 Turkmenistan,17402234 Timor-Leste,72044958 Tonga,3221962 Trinidad, Tobago, Tunisia,137888152 Turkey,190530825 Taiwan,2722516 Tanzania,1187669230 Uganda,1058084960 Ukraine,500475016 Uruguay,2884931 USA, Uzbekistan,104348366 Vatican, Grenadines, Saint Vincent, Venezuela,14047441 Virgin Islands, Vietnam,240210318 Vanuatu,5726365 Wallis and Futuna, Samoa, Yemen,485596030 South Africa,1072163281 Zambia,1011659748 Zimbabwe,357528936 ================================================ FILE: 2020年/2020.07.15World_map/cores.r ================================================ #======================================================================== #============================= Task ===================================== #======================================================================== setwd("C:/Users/DELL/Desktop/wechat/2020.07.15World_map") # 世界疫情图========== library(maps) library(ggplot2) library(RColorBrewer) library(plyr) colormap<-c(rev(brewer.pal(9,"Greens")[c(4,6)]), brewer.pal(9,"YlOrRd")[c(3,4,5,6,7,8,9)]) mydata1<-read.csv("Country_Data.csv",stringsAsFactors=FALSE)#这个是全球数据 names(mydata1)=c("Country","Scale") #重新命名 mydata2 = read.csv("world_data.csv",header=TRUE) #我们的数据(疫情) head(mydata2) #将两个表格匹配 mydata <- join(mydata1, mydata2, type="full") head(mydata) #把ratio参数设置成分类型,以便于好绘制 mydata$fan<-cut(mydata$ratio, breaks=c(min(mydata$million,na.rm=TRUE), 0,1000,5000,10000,50000,200000,500000,2000000, max(mydata$ratio,na.rm=TRUE)), labels=c(" <=0","0~1000","1000~5000","5000~10000","10000~50000","50000~200000", "200000~500000","500000~2000000"," >=2000000"), order=TRUE) #定义地图用全球的 world_map <- map_data("world") #绘图 ggplot()+ geom_map(data=mydata,aes(map_id=Country,fill=fan),map=world_map)+ geom_path(data=world_map,aes(x=long,y=lat,group=group),colour="black",size=.2)+ scale_y_continuous(breaks=(-3:3)*30) + scale_x_continuous(breaks=(-6:6)*30) + scale_fill_manual(name="Ratio",values= colormap,na.value="grey75")+ guides(fill=guide_legend(reverse=TRUE)) + theme_minimal() ================================================ FILE: 2020年/2020.07.15World_map/world_data.csv ================================================ Country,long,lat,ratio Andorra,1.601554,42.546245,855 United Arab Emirates,53.847818,23.424076,NA Afghanistan,67.709953,33.93911,30175 Antigua and Barbuda,-61.796428,17.060816,26 Anguilla,-63.068615,18.220554,3 Albania,20.168331,41.153332,2192 Armenia,45.038189,40.069099,22488 Netherlands Antilles,-69.060087,12.226079,NA Angola,17.873887,-11.202692,189 Antarctica,-0.071389,-75.250973,NA Argentina,-63.616672,-38.416097,49851 American Samoa,-170.132217,-14.270972,NA Austria,14.550072,47.516231,17477 Australia,133.775136,-25.274398,7558 Aruba,-69.968338,12.52111,101 Azerbaijan,47.576927,40.143105,14852 Bosnia and Herzegovina,17.679076,43.915886,NA Barbados,-59.543198,13.193887,97 Bangladesh,90.356331,23.684994,126606 Belgium,4.469936,50.503887,61007 Burkina Faso,-1.561593,12.238333,NA Bulgaria,25.48583,42.733883,4242 Bahrain,50.637772,25.930414,23570 Burundi,29.918886,-3.373056,144 Benin,2.315834,9.30769,1017 Bermuda,-64.75737,32.321384,141 Brunei,114.727669,4.535277,141 Bolivia,-63.588653,-16.290154,28631 Brazil,-51.92528,-14.235004,1193609 Bahamas,-77.39628,25.03428,104 Bhutan,90.433601,27.514162,70 Bouvet Island,3.413194,-54.423199,NA Botswana,24.684866,-22.328474,89 Belarus,27.953389,53.709807,60382 Belize,-88.49765,17.189877,23 Canada,-106.346771,56.130366,102242 Cocos [Keeling] Islands,96.870956,-12.164165,NA Congo [DRC],21.758664,-4.038333,NA Central African Republic,20.939444,6.611111,NA Congo [Republic],15.827659,-0.228021,NA Switzerland,8.227512,46.818188,31428 C?te d'Ivoire,-5.54708,7.539989,NA Cook Islands,-159.777671,-21.236736,NA Chile,-71.542969,-35.675147,254416 Cameroon,12.354722,7.369722,12592 China,104.195397,35.86166,85260 Colombia,-74.297333,4.570868,77113 Costa Rica,-83.753428,9.748917,2515 Cuba,-77.781167,21.521757,2319 Cape Verde,-24.013197,16.002082,NA Christmas Island,105.690449,-10.447525,NA Cyprus,33.429859,35.126413,991 Czech Republic,15.472962,49.817492,NA Germany,10.451526,51.165691,193987 Djibouti,42.590275,11.825138,4630 Denmark,9.501785,56.26392,12636 Dominica,-61.370976,15.414999,NA Dominican Republic,-70.162651,18.735693,NA Algeria,1.659626,28.033886,12248 Ecuador,-78.183406,-1.831239,51643 Estonia,25.013607,58.595272,1984 Egypt,30.802498,26.820553,59561 Western Sahara,-12.885834,24.215527,9 Eritrea,39.782334,15.179384,143 Spain,-3.74922,40.463667,247086 Ethiopia,40.489673,9.145,5034 Finland,25.748151,61.92411,7172 Fiji,179.414413,-16.578193,18 Falkland Islands [Islas Malvinas],-59.523613,-51.796253,NA Micronesia,150.550812,7.425554,NA Faroe Islands,-6.911806,61.892635,187 France,2.213749,46.227638,161348 Gabon,11.609444,-0.803689,4956 United Kingdom,-3.435973,55.378051,306862 Grenada,-61.604171,12.262776,23 Georgia,43.356892,42.315407,917 French Guiana,-53.125782,3.933889,2827 Guernsey,-2.585278,49.465691,252 Ghana,-1.023194,7.946527,15013 Gibraltar,-5.345374,36.137741,176 Greenland,-42.604303,71.706936,13 Gambia,-15.310139,13.443182,42 Guinea,-9.696645,9.945587,5174 Guadeloupe,-62.067641,16.995971,174 Equatorial Guinea,10.267895,1.650801,NA Greece,21.824312,39.074208,3310 South Georgia and the South Sandwich Islands,-36.587909,-54.429579,NA Guatemala,-90.230759,15.783471,14819 Guam,144.793731,13.444304,226 Guinea-Bissau,-15.180413,11.803749,1556 Guyana,-58.93018,4.860416,206 Gaza Strip,34.308825,31.354676,NA Hong Kong,114.109497,22.396428,NA Heard Island and McDonald Islands,73.504158,-53.08181,NA Honduras,-86.241905,15.199999,14571 Croatia,15.2,45.1,2483 Haiti,-72.285215,18.971187,5429 Hungary,19.503304,47.162494,4123 Indonesia,113.921327,-0.789275,51087 Ireland,-8.24389,53.41291,25396 Israel,34.851612,31.046051,22139 Isle of Man,-4.548056,54.236107,NA India,78.96288,20.593684,473634 British Indian Ocean Territory,71.876519,-6.343194,NA Iraq,43.679291,33.223191,39139 Iran,53.688046,32.427908,215096 Iceland,-19.020835,64.963051,1824 Italy,12.56738,41.87194,239410 Jersey,-2.13125,49.214439,308 Jamaica,-77.297508,18.109581,678 Jordan,36.238414,30.585164,1071 Japan,138.252924,36.204824,18212 Kenya,37.906193,-0.023559,5384 Kyrgyzstan,74.766098,41.20438,3954 Cambodia,104.990963,12.565679,130 Kiribati,-168.734039,-3.370417,NA Comoros,43.872219,-11.875001,265 Saint Kitts and Nevis,-62.782998,17.357822,15 North Korea,127.510093,40.339852,NA South Korea,127.766922,35.907757,NA Kuwait,47.481766,29.31166,42788 Cayman Islands,-80.566956,19.513469,NA Kazakhstan,66.923684,48.019573,19285 Laos,102.495496,19.85627,19 Lebanon,35.862285,33.854721,1644 Saint Lucia,-60.978893,13.909444,NA Liechtenstein,9.555373,47.166,86 Sri Lanka,80.771797,7.873054,NA Liberia,-9.429499,6.428055,662 Lesotho,28.233608,-29.609988,17 Lithuania,23.881275,55.169438,1806 Luxembourg,6.129583,49.815273,4140 Latvia,24.603189,56.879635,1111 Libya,17.228331,26.3351,670 Morocco,-7.09262,31.791702,11279 Monaco,7.412841,43.750298,101 Moldova,28.369885,47.411631,15078 Montenegro,19.37439,42.708678,389 Madagascar,46.869107,-18.766947,1829 Marshall Islands,171.184478,7.131474,NA Macedonia [FYROM],21.745275,41.608635,NA Mali,-3.996166,17.570692,2005 Myanmar [Burma],95.956223,21.913965,NA Mongolia,103.846656,46.862496,213 Macau,113.543873,22.198745,NA Northern Mariana Islands,145.38469,17.33083,31 Martinique,-61.024174,14.641528,236 Mauritania,-10.940835,21.00789,3519 Montserrat,-62.187366,16.742498,11 Malta,14.375416,35.937496,668 Mauritius,57.552152,-20.348404,341 Maldives,73.22068,3.202778,2261 Malawi,34.301525,-13.254308,941 Mexico,-102.552784,23.634501,196847 Malaysia,101.975766,4.210484,8600 Mozambique,35.529562,-18.665695,762 Namibia,18.49041,-22.95764,76 New Caledonia,165.618042,-20.904305,21 Niger,8.081666,17.607789,1051 Norfolk Island,167.954712,-29.040835,NA Nigeria,8.675277,9.081999,22020 Nicaragua,-85.207229,12.865416,2170 Netherlands,5.291266,52.132633,49914 Norway,8.468946,60.472024,8788 Nepal,84.124008,28.394857,11162 Nauru,166.931503,-0.522778,NA Niue,-169.867233,-19.054445,NA New Zealand,174.885971,-40.900557,1519 Oman,55.923255,21.512583,34902 Panama,-80.782127,8.537981,28030 Peru,-75.015152,-9.189967,264689 French Polynesia,-149.406843,-17.679742,60 Papua New Guinea,143.95555,-6.314993,NA Philippines,121.774017,12.879721,33069 Pakistan,69.345116,30.375321,192970 Poland,19.145136,51.919438,33119 Saint Pierre and Miquelon,-56.27111,46.941936,NA Pitcairn Islands,-127.439308,-24.703615,NA Puerto Rico,-66.590149,18.220833,6877 Palestinian Territories,35.233154,31.952162,NA Portugal,-8.224454,39.399872,40415 Palau,134.58252,7.51498,NA Paraguay,-58.443832,-23.442503,1528 Qatar,51.183884,25.354826,91838 Runion,55.536384,-21.115141,NA Romania,24.96676,45.943161,NA Serbia,21.005859,44.016521,13372 Russia,105.318756,61.52401,613994 Rwanda,29.873888,-1.940278,830 Saudi Arabia,45.079162,23.885942,170639 Solomon Islands,160.156194,-9.64571,NA Seychelles,55.491977,-4.679574,11 Sudan,30.217636,12.862807,8889 Sweden,18.643501,60.128161,62324 Singapore,103.819836,1.352083,42736 Saint Helena,-10.030696,-24.143474,NA Slovenia,14.995463,46.151241,1547 Svalbard and Jan Mayen,23.670272,77.553604,NA Slovakia,19.699024,48.669026,1630 Sierra Leone,-11.779889,8.460555,NA San Marino,12.457777,43.94236,NA Senegal,-14.452362,14.497401,6233 Somalia,46.199616,5.152149,2835 Suriname,-56.027783,3.919305,357 S?o Tom and Prncipe,6.613081,0.18636,NA El Salvador,-88.89653,13.794185,5336 Syria,38.996815,34.802075,231 Swaziland,31.465866,-26.522503,690 Turks and Caicos Islands,-71.797928,21.694025,NA Chad,18.732207,15.454166,860 French Southern Territories,69.348557,-49.280366,NA Togo,0.824782,8.619543,583 Thailand,100.992541,15.870032,3158 Tajikistan,71.276093,38.861034,5630 Tokelau,-171.855881,-8.967363,NA Timor-Leste,125.727539,-8.874217,NA Turkmenistan,59.556278,38.969719,NA Tunisia,9.537499,33.886917,1160 Tonga,-175.198242,-21.178986,NA Turkey,35.243322,38.963745,191657 Trinidad and Tobago,-61.222503,10.691803,123 Tuvalu,177.64933,-7.109535,NA Taiwan,120.960515,23.69781,NA Tanzania,34.888822,-6.369028,509 Ukraine,31.16558,48.379433,40008 Uganda,32.290275,1.373333,805 U.S. Minor Outlying Islands,NA,NA,NA United States,-95.712891,37.09024,NA Uruguay,-55.765835,-32.522779,902 Uzbekistan,64.585262,41.377491,6990 Vatican City,12.453389,41.902916,NA Saint Vincent and the Grenadines,-61.287228,12.984305,29 Venezuela,-66.58973,6.42375,4366 British Virgin Islands,-64.639968,18.420695,NA U.S. Virgin Islands,-64.896335,18.335765,NA Vietnam,108.277199,14.058324,NA Vanuatu,166.959158,-15.376706,NA Wallis and Futuna,-177.156097,-13.768752,NA Samoa,-172.104629,-13.759029,NA Kosovo,20.902977,42.602636,2216 Yemen,48.516388,15.552727,1015 Mayotte,45.166244,-12.8275,2467 South Africa,22.937506,-30.559482,111796 Zambia,27.849332,-13.133897,1497 Zimbabwe,29.154857,-19.015438,530 USA,NA,NA,2462554 Bosnia,NA,NA,3676 Burkina faso,NA,NA,934 Burma,NA,NA,293 Bvi,NA,NA,8 Cape verde,NA,NA,999 Cayman islands,NA,NA,195 Congo (Bu),NA,NA,1087 Congo (DRC),NA,NA,6213 Curacao,NA,NA,20 Czech,NA,NA,10780 Diamond Princess,NA,NA,712 Dominic,NA,NA,18 Dominican,NA,NA,28631 East timor,NA,NA,24 Equatorial guinea,NA,NA,1664 Falkland islands,NA,NA,13 Isle,NA,NA,336 Ivory coast,NA,NA,8164 Korea,NA,NA,12563 Lucia,NA,NA,19 Netherlands Caribbean,NA,NA,7 Non -,NA,NA,3099 North Macedonia,NA,NA,5445 Palestinian,NA,NA,1328 Papua new guinea,NA,NA,9 Reunion,NA,NA,426 Romanian,NA,NA,25286 Saint Barthelemi,NA,NA,6 Saint-Pierre and Miquelon Islands,NA,NA,1 San marino,NA,NA,698 Sao Tome and Principe,NA,NA,710 Sierra leone,NA,NA,1354 South Sudan,NA,NA,1942 Sri lanka,NA,NA,2007 "St. Martin, France",NA,NA,117 "St. Martin, Netherlands",NA,NA,77 Tci,NA,NA,14 U.A.E,NA,NA,46563 Usvi,NA,NA,76 Vatican,NA,NA,12 Viet Nam,NA,NA,352 ================================================ FILE: 2020年/2020.07.22Movielense/ch11-task.Rmd ================================================ --- title: "第11章作业MovieLense数据集分析" author: documentclass: ctexart output: word_document: default html_document: default pdf_document: default rticles::ctex: fig_caption: yes number_sections: yes toc: yes classoption: "hyperref," --- # 前言 R的recommenderlab包可以实现协同过滤算法。这个包中有许多关于推荐算法建立、处理及可视化的函数。选用recommenderlab包中内置的MovieLense数据集进行分析,该数据集收集了网站MovieLens(movielens.umn.edu)从1997年9月19日到1998年4月22日的数据,包括943名用户对1664部电影的评分。 ```{r message=FALSE, warning=FALSE} library(recommenderlab) library(ggplot2) ``` # 数据处理与数据探索性分析 ```{r message=FALSE, warning=FALSE} data(MovieLense) image(MovieLense) # 获取评分 ratings.movie <- data.frame(ratings = getRatings(MovieLense)) summary(ratings.movie$ratings) ggplot(ratings.movie, aes(x = ratings)) + geom_histogram(fill = "beige", color = "black", binwidth = 1, alpha = 0.7) + xlab("rating") + ylab("count") ``` 利用`summary()`获取评分数据,可知最大值为5,最小值为1,平均值为3.53。并将其柱状图进行绘制,如下所示。 ## 数据标准化 在进行数据分析前,利用`normalize()`我们将数据进行标准化,并进行绘制。 ```{r message=FALSE, warning=FALSE} ratings.movie1 <- data.frame(ratings = getRatings(normalize(MovieLense, method = "Z-score"))) summary(ratings.movie1$ratings) ggplot(ratings.movie1, aes(x = ratings)) + geom_histogram(fill = "beige", color = "black", alpha = 0.7) + xlab("rating") + ylab("count") ``` ## 用户的电影点评数 我们还对用户的电影点评数进行描述性分析,具体结果如下所示。 ```{r message=FALSE, warning=FALSE} movie.count <- data.frame(count = rowCounts(MovieLense)) ggplot(movie.count, aes(x = count)) + geom_histogram(fill = "beige", color = "black", alpha = 0.7) + xlab("counts of users") + ylab("counts of movies rated") rating.mean <- data.frame(rating = colMeans(MovieLense)) ggplot(rating.mean, aes(x = rating)) + geom_histogram(fill = "beige", color = "black", alpha = 0.7) + xlab("rating") + ylab("counts of movies ") ``` # 建立推荐模型与模型评估 对于realRatingMatrix有六种方法:IBCF(基于物品的推荐)、UBCF(基于用户的推荐)、SVD(矩阵因子化)、PCA(主成分分析)、 RANDOM(随机推荐)、POPULAR(基于流行度的推荐)。 模型评估主要使用:recommenderlab包中自带的评估方案,对应的函数是evaluationScheme,能够设置采用n-fold交叉验证还是简单的training/train分开验证,本文采用后一种方法,即将数据集简单分为training和test,在training训练模型,然后在test上评估。接下来我们使用三种不同技术进行构建推荐系统,并利用评估方案比较三种技术的好坏。 ```{r message=FALSE, warning=FALSE} library(recommenderlab) data(MovieLense) scheme <- evaluationScheme(MovieLense, method = "split", train = 0.9, k = 1, given = 10, goodRating = 4) algorithms <- list(popular = list(name = "POPULAR", param = list(normalize = "Z-score")), ubcf = list(name = "UBCF", param = list(normalize = "Z-score", method = "Cosine",nn = 25, minRating = 3)), ibcf = list(name = "IBCF", param = list(normalize = "Z-score"))) results <- evaluate(scheme, algorithms, n = c(1, 3, 5, 10, 15, 20)) plot(results, annotate = 1:3, legend = "topleft") #ROC plot(results, "prec/rec", annotate = 3)#precision-recall ``` ```{r} # 按照评价方案建立推荐模型 model.popular <- Recommender(getData(scheme, "train"), method = "POPULAR") model.ibcf <- Recommender(getData(scheme, "train"), method = "IBCF") model.ubcf <- Recommender(getData(scheme, "train"), method = "UBCF") # 对推荐模型进行预测 predict.popular <- predict(model.popular, getData(scheme, "known"), type = "ratings") predict.ibcf <- predict(model.ibcf, getData(scheme, "known"), type = "ratings") predict.ubcf <- predict(model.ubcf, getData(scheme, "known"), type = "ratings") # 做误差的计算 predict.err <- rbind(calcPredictionAccuracy(predict.popular, getData(scheme, "unknown")),calcPredictionAccuracy(predict.ubcf, getData(scheme, "unknown")), calcPredictionAccuracy(predict.ibcf,getData(scheme, "unknown"))) rownames(predict.err) <- c("POPULAR", "UBCF", "IBCF") predict.err ``` 通过结果我们可以看到:基于流行度推荐系统对于本案例数据的效果最好,RMSE,MSE,MAE都是三者中的最小值。其次是基于用户的推荐,最后是基于项目协同过滤。 # 参考资料{-} 1. [Recommenderlab包实现电影评分预测(R语言) ](https://blog.csdn.net/seuponder/article/details/21040917) 2. [R语言:recommenderlab包的总结与应用案例](https://www.cnblogs.com/yjd_hycf_space/p/6702764.html) 3. [recommender system handbook](https://www.amazon.com/Recommender-Systems-Handbook-Francesco-Ricci/dp/1489976361) 4. [Item-Based Collaborative Filtering Recommendation Algorithms](http://www.ra.ethz.ch/CDstore/www10/papers/pdf/p519.pdf) 5. [recommenderlab: A Framework for Developing and Testing Recommendation Algorithms](https://cran.r-project.org/web/packages/recommenderlab/vignettes/recommenderlab.pdf) ================================================ FILE: 2020年/2020.07.22Movielense/ch11-task.log ================================================ This is XeTeX, Version 3.14159265-2.6-0.999991 (TeX Live 2019/W32TeX) (preloaded format=xelatex 2020.3.24) 12 AUG 2020 15:23 entering extended mode restricted \write18 enabled. %&-line parsing enabled. **ch11-task.tex (./ch11-task.tex LaTeX2e <2020-02-02> patch level 5 L3 programming layer <2020-02-25> (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf- dist/tex/latex/ctex/ctexart.cls (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-di st/tex/latex/l3kernel/expl3.sty Package: expl3 2020-02-25 L3 programming layer (loader) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/l3backend/l3backend -xdvipdfmx.def File: l3backend-xdvipdfmx.def 2020-02-23 L3 backend support: xdvipdfmx \g__graphics_track_int=\count163 \l__pdf_internal_box=\box45 \g__pdf_backend_object_int=\count164 \g__pdf_backend_annotation_int=\count165 )) Document Class: ctexart 2019/05/29 v2.4.16 Chinese adapter for class article (C TEX) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/l3packages/xparse/x parse.sty Package: xparse 2020-02-25 L3 Experimental document command parser \l__xparse_current_arg_int=\count166 \g__xparse_grabber_int=\count167 \l__xparse_m_args_int=\count168 \l__xparse_v_nesting_int=\count169 ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/l3packages/l3keys2e /l3keys2e.sty Package: l3keys2e 2020-02-25 LaTeX2e option processing using LaTeX3 keys ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/ctex/ctexhook.sty Package: ctexhook 2019/05/29 v2.4.16 Document and package hooks (CTEX) ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/ctex/ctexpatch.st y Package: ctexpatch 2019/05/29 v2.4.16 Patching commands (CTEX) ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/base/fix-cm.sty Package: fix-cm 2015/01/14 v1.1t fixes to LaTeX (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/base/ts1enc.def File: ts1enc.def 2001/06/05 v3.0e (jk/car/fm) Standard LaTeX file LaTeX Font Info: Redeclaring font encoding TS1 on input line 47. )) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/ms/everysel.sty Package: everysel 2011/10/28 v1.2 EverySelectfont Package (MS) ) \l__ctex_tmp_int=\count170 \l__ctex_tmp_box=\box46 \l__ctex_tmp_dim=\dimen134 \g__ctex_section_depth_int=\count171 \g__ctex_font_size_int=\count172 (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/ctex/config/ctexopt s.cfg File: ctexopts.cfg 2019/05/29 v2.4.16 Option configuration file (CTEX) ) Package ctex Warning: Option `hyperref' is deprecated. (ctex) `hyperref' package will be loaded. (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/base/article.cls Document Class: article 2019/12/20 v1.4l Standard LaTeX document class (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/base/size10.clo File: size10.clo 2019/12/20 v1.4l Standard LaTeX file (size option) ) \c@part=\count173 \c@section=\count174 \c@subsection=\count175 \c@subsubsection=\count176 \c@paragraph=\count177 \c@subparagraph=\count178 \c@figure=\count179 \c@table=\count180 \abovecaptionskip=\skip47 \belowcaptionskip=\skip48 \bibindent=\dimen135 ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/ctex/engine/ctex-en gine-xetex.def File: ctex-engine-xetex.def 2019/05/29 v2.4.16 XeLaTeX adapter (CTEX) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/xelatex/xecjk/xeCJK.sty Package: xeCJK 2020/02/18 v3.8.2 Typesetting CJK scripts with XeLaTeX (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/l3packages/xtemplat e/xtemplate.sty Package: xtemplate 2020-02-25 L3 Experimental prototype document functions \l__xtemplate_tmp_dim=\dimen136 \l__xtemplate_tmp_int=\count181 \l__xtemplate_tmp_muskip=\muskip16 \l__xtemplate_tmp_skip=\skip49 ) \l__xeCJK_tmp_int=\count182 \l__xeCJK_tmp_box=\box47 \l__xeCJK_tmp_dim=\dimen137 \l__xeCJK_tmp_skip=\skip50 \g__xeCJK_space_factor_int=\count183 \l__xeCJK_begin_int=\count184 \l__xeCJK_end_int=\count185 \c__xeCJK_CJK_class_int=\XeTeXcharclass1 \c__xeCJK_FullLeft_class_int=\XeTeXcharclass2 \c__xeCJK_FullRight_class_int=\XeTeXcharclass3 \c__xeCJK_HalfLeft_class_int=\XeTeXcharclass4 \c__xeCJK_HalfRight_class_int=\XeTeXcharclass5 \c__xeCJK_NormalSpace_class_int=\XeTeXcharclass6 \c__xeCJK_CM_class_int=\XeTeXcharclass7 \c__xeCJK_HangulJamo_class_int=\XeTeXcharclass8 \l__xeCJK_last_skip=\skip51 \g__xeCJK_node_int=\count186 \c__xeCJK_CJK_node_dim=\dimen138 \c__xeCJK_CJK-space_node_dim=\dimen139 \c__xeCJK_default_node_dim=\dimen140 \c__xeCJK_default-space_node_dim=\dimen141 \c__xeCJK_CJK-widow_node_dim=\dimen142 \c__xeCJK_normalspace_node_dim=\dimen143 \l__xeCJK_ccglue_skip=\skip52 \l__xeCJK_ecglue_skip=\skip53 \l__xeCJK_punct_kern_skip=\skip54 \l__xeCJK_last_penalty_int=\count187 \l__xeCJK_last_bound_dim=\dimen144 \l__xeCJK_last_kern_dim=\dimen145 \l__xeCJK_widow_penalty_int=\count188 Package xtemplate Info: Declaring object type 'xeCJK/punctuation' taking 0 (xtemplate) argument(s) on line 2302. \l__xeCJK_fixed_punct_width_dim=\dimen146 \l__xeCJK_mixed_punct_width_dim=\dimen147 \l__xeCJK_middle_punct_width_dim=\dimen148 \l__xeCJK_fixed_margin_width_dim=\dimen149 \l__xeCJK_mixed_margin_width_dim=\dimen150 \l__xeCJK_middle_margin_width_dim=\dimen151 \l__xeCJK_bound_punct_width_dim=\dimen152 \l__xeCJK_bound_margin_width_dim=\dimen153 \l__xeCJK_margin_minimum_dim=\dimen154 \l__xeCJK_kerning_total_width_dim=\dimen155 \l__xeCJK_same_align_margin_dim=\dimen156 \l__xeCJK_different_align_margin_dim=\dimen157 \l__xeCJK_kerning_margin_width_dim=\dimen158 \l__xeCJK_kerning_margin_minimum_dim=\dimen159 \l__xeCJK_bound_dim=\dimen160 \l__xeCJK_reverse_bound_dim=\dimen161 \l__xeCJK_margin_dim=\dimen162 \l__xeCJK_minimum_bound_dim=\dimen163 \l__xeCJK_kerning_margin_dim=\dimen164 \g__xeCJK_family_int=\count189 \l__xeCJK_fam_int=\count190 \g__xeCJK_fam_allocation_int=\count191 \l__xeCJK_verb_case_int=\count192 \l__xeCJK_verb_exspace_skip=\skip55 (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/fontspec/fontspec.s ty Package: fontspec 2020/02/21 v2.7i Font selection for XeLaTeX and LuaLaTeX (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/fontspec/fontspec-x etex.sty Package: fontspec-xetex 2020/02/21 v2.7i Font selection for XeLaTeX and LuaLaTe X \l__fontspec_script_int=\count193 \l__fontspec_language_int=\count194 \l__fontspec_strnum_int=\count195 \l__fontspec_tmp_int=\count196 \l__fontspec_tmpa_int=\count197 \l__fontspec_tmpb_int=\count198 \l__fontspec_tmpc_int=\count199 \l__fontspec_em_int=\count266 \l__fontspec_emdef_int=\count267 \l__fontspec_strong_int=\count268 \l__fontspec_strongdef_int=\count269 \l__fontspec_tmpa_dim=\dimen165 \l__fontspec_tmpb_dim=\dimen166 \l__fontspec_tmpc_dim=\dimen167 (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/base/fontenc.sty Package: fontenc 2020/02/11 v2.0o Standard LaTeX package ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/fontspec/fontspec.c fg))) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/xelatex/xecjk/xeCJK .cfg File: xeCJK.cfg 2020/02/18 v3.8.2 Configuration file for xeCJK package )) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/xelatex/xecjk/xeCJKfntef. sty Package: xeCJKfntef 2020/02/18 v3.8.2 xeCJK font effect (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/generic/ulem/ulem.sty \UL@box=\box48 \UL@hyphenbox=\box49 \UL@skip=\skip56 \UL@hook=\toks15 \UL@height=\dimen168 \UL@pe=\count270 \UL@pixel=\dimen169 \ULC@box=\box50 Package: ulem 2019/11/18 \ULdepth=\dimen170 ) \l__xeCJK_space_skip=\skip57 \c__xeCJK_ulem-begin_node_dim=\dimen171 \c__xeCJK_null_box=\box51 \l__xeCJK_fntef_box=\box52 \l__xeCJK_under_symbol_box=\box53 \c__xeCJK_filll_skip=\skip58 ) \ccwd=\dimen172 \l__ctex_ccglue_skip=\skip59 ) \l__ctex_ziju_dim=\dimen173 (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/zhnumber/zhnumber.s ty Package: zhnumber 2019/04/07 v2.7 Typesetting numbers with Chinese glyphs \l__zhnum_scale_int=\count271 (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/zhnumber/zhnumber-u tf8.cfg File: zhnumber-utf8.cfg 2019/04/07 v2.7 Chinese numerals with UTF8 encoding )) \l__ctex_heading_skip=\skip60 (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/ctex/scheme/ctex-sc heme-chinese-article.def File: ctex-scheme-chinese-article.def 2019/05/29 v2.4.16 Chinese scheme for art icle (CTEX) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/ctex/config/ctex-na me-utf8.cfg File: ctex-name-utf8.cfg 2019/05/29 v2.4.16 Caption with encoding UTF8 (CTEX) )) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/ctex/ctex-c5size.cl o File: ctex-c5size.clo 2019/05/29 v2.4.16 c5size option (CTEX) ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/ctex/fontset/ctex-f ontset-windows.def File: ctex-fontset-windows.def 2019/05/29 v2.4.16 Windows fonts definition (CTE X) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/ctex/fontset/ctex-f ontset-windowsnew.def File: ctex-fontset-windowsnew.def 2019/05/29 v2.4.16 Windows fonts definition f or Vista or later version (CTEX) Package fontspec Info: Could not resolve font "KaiTi/B" (it probably doesn't (fontspec) exist). Package fontspec Info: Could not resolve font "SimHei/I" (it probably doesn't (fontspec) exist). Package fontspec Info: Could not resolve font "SimSun/BI" (it probably doesn't (fontspec) exist). Package fontspec Info: Font family 'SimSun(0)' created for font 'SimSun' with (fontspec) options (fontspec) [Script={CJK},BoldFont={SimHei},ItalicFont={KaiTi}]. (fontspec) (fontspec) This font family consists of the following NFSS (fontspec) series/shapes: (fontspec) (fontspec) - 'normal' (m/n) with NFSS spec.: (fontspec) <->"SimSun/OT:script=hani;language=dflt;" (fontspec) - 'small caps' (m/sc) with NFSS spec.: (fontspec) - 'bold' (b/n) with NFSS spec.: (fontspec) <->"SimHei/OT:script=hani;language=dflt;" (fontspec) - 'bold small caps' (b/sc) with NFSS spec.: (fontspec) - 'italic' (m/it) with NFSS spec.: (fontspec) <->"KaiTi/OT:script=hani;language=dflt;" (fontspec) - 'italic small caps' (m/scit) with NFSS spec.: ))) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/ctex/config/ctex.cf g File: ctex.cfg 2019/05/29 v2.4.16 Configuration file (CTEX) ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/lm/lmodern.sty Package: lmodern 2009/10/30 v1.6 Latin Modern Fonts LaTeX Font Info: Overwriting symbol font `operators' in version `normal' (Font) OT1/cmr/m/n --> OT1/lmr/m/n on input line 22. LaTeX Font Info: Overwriting symbol font `letters' in version `normal' (Font) OML/cmm/m/it --> OML/lmm/m/it on input line 23. LaTeX Font Info: Overwriting symbol font `symbols' in version `normal' (Font) OMS/cmsy/m/n --> OMS/lmsy/m/n on input line 24. LaTeX Font Info: Overwriting symbol font `largesymbols' in version `normal' (Font) OMX/cmex/m/n --> OMX/lmex/m/n on input line 25. LaTeX Font Info: Overwriting symbol font `operators' in version `bold' (Font) OT1/cmr/bx/n --> OT1/lmr/bx/n on input line 26. LaTeX Font Info: Overwriting symbol font `letters' in version `bold' (Font) OML/cmm/b/it --> OML/lmm/b/it on input line 27. LaTeX Font Info: Overwriting symbol font `symbols' in version `bold' (Font) OMS/cmsy/b/n --> OMS/lmsy/b/n on input line 28. LaTeX Font Info: Overwriting symbol font `largesymbols' in version `bold' (Font) OMX/cmex/m/n --> OMX/lmex/m/n on input line 29. LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `normal' (Font) OT1/cmr/bx/n --> OT1/lmr/bx/n on input line 31. LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `normal' (Font) OT1/cmss/m/n --> OT1/lmss/m/n on input line 32. LaTeX Font Info: Overwriting math alphabet `\mathit' in version `normal' (Font) OT1/cmr/m/it --> OT1/lmr/m/it on input line 33. LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `normal' (Font) OT1/cmtt/m/n --> OT1/lmtt/m/n on input line 34. LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `bold' (Font) OT1/cmr/bx/n --> OT1/lmr/bx/n on input line 35. LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `bold' (Font) OT1/cmss/bx/n --> OT1/lmss/bx/n on input line 36. LaTeX Font Info: Overwriting math alphabet `\mathit' in version `bold' (Font) OT1/cmr/bx/it --> OT1/lmr/bx/it on input line 37. LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `bold' (Font) OT1/cmtt/m/n --> OT1/lmtt/m/n on input line 38. ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/amsfonts/amssymb.st y Package: amssymb 2013/01/14 v3.01 AMS font symbols (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/amsfonts/amsfonts.s ty Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support \@emptytoks=\toks16 \symAMSa=\mathgroup4 \symAMSb=\mathgroup5 LaTeX Font Info: Redeclaring math symbol \hbar on input line 98. LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold' (Font) U/euf/m/n --> U/euf/b/n on input line 106. )) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/amsmath/amsmath.sty Package: amsmath 2020/01/20 v2.17e AMS math features \@mathmargin=\skip61 For additional information on amsmath, use the `?' option. (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/amsmath/amstext.sty Package: amstext 2000/06/29 v2.01 AMS text (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/amsmath/amsgen.sty File: amsgen.sty 1999/11/30 v2.0 generic functions \@emptytoks=\toks17 \ex@=\dimen174 )) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/amsmath/amsbsy.s ty Package: amsbsy 1999/11/29 v1.2d Bold Symbols \pmbraise@=\dimen175 ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/amsmath/amsopn.st y Package: amsopn 2016/03/08 v2.02 operator names ) \inf@bad=\count272 LaTeX Info: Redefining \frac on input line 227. \uproot@=\count273 \leftroot@=\count274 LaTeX Info: Redefining \overline on input line 389. \classnum@=\count275 \DOTSCASE@=\count276 LaTeX Info: Redefining \ldots on input line 486. LaTeX Info: Redefining \dots on input line 489. LaTeX Info: Redefining \cdots on input line 610. \Mathstrutbox@=\box54 \strutbox@=\box55 \big@size=\dimen176 LaTeX Font Info: Redeclaring font encoding OML on input line 733. LaTeX Font Info: Redeclaring font encoding OMS on input line 734. \macc@depth=\count277 \c@MaxMatrixCols=\count278 \dotsspace@=\muskip17 \c@parentequation=\count279 \dspbrk@lvl=\count280 \tag@help=\toks18 \row@=\count281 \column@=\count282 \maxfields@=\count283 \andhelp@=\toks19 \eqnshift@=\dimen177 \alignsep@=\dimen178 \tagshift@=\dimen179 \tagwidth@=\dimen180 \totwidth@=\dimen181 \lineht@=\dimen182 \@envbody=\toks20 \multlinegap=\skip62 \multlinetaggap=\skip63 \mathdisplay@stack=\toks21 LaTeX Info: Redefining \[ on input line 2859. LaTeX Info: Redefining \] on input line 2860. ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/generic/iftex/ifxetex.sty Package: ifxetex 2019/10/25 v0.7 ifxetex legacy package. Use iftex instead. (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/generic/iftex/iftex.sty Package: iftex 2019/11/07 v1.0c TeX engine tests )) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/generic/iftex/ifluatex.st y Package: ifluatex 2019/10/25 v1.5 ifluatex legacy package. Use iftex instead. ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/base/fixltx2e.sty Package: fixltx2e 2016/12/29 v2.1a fixes to LaTeX (obsolete) Applying: [2015/01/01] Old fixltx2e package on input line 46. Package fixltx2e Warning: fixltx2e is not required with releases after 2015 (fixltx2e) All fixes are now in the LaTeX kernel. (fixltx2e) See the latexrelease package for details. Already applied: [0000/00/00] Old fixltx2e package on input line 53. ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/xelatex/xltxtra/xltxtra.s ty Package: xltxtra 2018/12/31 v0.7 Improvements for the "XeLaTeX" format (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/realscripts/realscr ipts.sty Package: realscripts 2016/02/13 v0.3d Access OpenType subscripts and superscrip ts \subsupersep=\dimen183 ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/metalogo/metalogo.s ty Package: metalogo 2010/05/29 v0.12 Extended TeX logo macros (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/graphics/graphicx.s ty Package: graphicx 2019/11/30 v1.2a Enhanced LaTeX Graphics (DPC,SPQR) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/graphics/keyval.sty Package: keyval 2014/10/28 v1.15 key=value parser (DPC) \KV@toks@=\toks22 ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/graphics/graphics.s ty Package: graphics 2019/11/30 v1.4a Standard LaTeX Graphics (DPC,SPQR) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/graphics/trig.sty Package: trig 2016/01/03 v1.10 sin cos tan (DPC) ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/graphics-cfg/graphi cs.cfg File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration ) Package graphics Info: Driver file: xetex.def on input line 105. (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/graphics-def/xetex. def File: xetex.def 2017/06/24 v5.0h Graphics/color driver for xetex )) \Gin@req@height=\dimen184 \Gin@req@width=\dimen185 ) \xl@everylogo=\toks23 \xl@@everylogo=\toks24 LaTeX Info: Redefining \TeX on input line 193. LaTeX Info: Redefining \LaTeX on input line 202. LaTeX Info: Redefining \LaTeXe on input line 219. ) \l__xetex_show_hyphens_wrapping_box=\box56 \l__xetex_show_hyphens_temp_box=\box57 \l__xetex_show_hyphens_final_box=\box58 \g__xetex_show_hyphens_word_box=\box59 ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/xelatex/xunicode/xunicode .sty File: xunicode.sty 2011/09/09 v0.981 provides access to latin accents and many other characters in Unicode lower plane (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/tipa/t3enc.def File: t3enc.def 2001/12/31 T3 encoding Package fontspec Info: Could not resolve font "Microsoft YaHei Bold/I" (it (fontspec) probably doesn't exist). Package fontspec Info: Could not resolve font "Microsoft YaHei/I" (it probably (fontspec) doesn't exist). Package fontspec Info: Font family 'MicrosoftYaHei(0)' created for font (fontspec) 'Microsoft YaHei' with options (fontspec) [Script={CJK},BoldFont={* Bold}]. (fontspec) (fontspec) This font family consists of the following NFSS (fontspec) series/shapes: (fontspec) (fontspec) - 'normal' (m/n) with NFSS spec.: <->"Microsoft (fontspec) YaHei/OT:script=hani;language=dflt;" (fontspec) - 'small caps' (m/sc) with NFSS spec.: (fontspec) - 'bold' (b/n) with NFSS spec.: <->"Microsoft YaHei (fontspec) Bold/OT:script=hani;language=dflt;" (fontspec) - 'bold small caps' (b/sc) with NFSS spec.: (fontspec) - 'bold italic' (b/it) with NFSS spec.: <->"Microsoft (fontspec) YaHei/BI/OT:script=hani;language=dflt;" (fontspec) - 'bold italic small caps' (b/scit) with NFSS spec.: ) \tipaTiiicode=\count284 \tipasavetokens=\toks25 \tipachecktokens=\toks26 ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/upquote/upquote.sty Package: upquote 2012/04/19 v1.3 upright-quote and grave-accent glyphs in verba tim (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/base/textcomp.sty Package: textcomp 2020/02/02 v2.0n Standard LaTeX package )) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/hyperref/hyperref.s ty Package: hyperref 2020/01/14 v7.00d Hypertext links for LaTeX (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/generic/ltxcmds/ltxcmds.s ty Package: ltxcmds 2019/12/15 v1.24 LaTeX kernel commands for general use (HO) ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/pdftexcmds/pdftexcm ds.sty Package: pdftexcmds 2019/11/24 v0.31 Utility functions of pdfTeX for LuaTeX (HO ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/generic/infwarerr/infware rr.sty Package: infwarerr 2019/12/03 v1.5 Providing info/warning/error messages (HO) ) Package pdftexcmds Info: \pdf@primitive is available. Package pdftexcmds Info: \pdf@ifprimitive is available. Package pdftexcmds Info: \pdfdraftmode not found. ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/generic/kvsetkeys/kvsetke ys.sty Package: kvsetkeys 2019/12/15 v1.18 Key value parser (HO) ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/generic/kvdefinekeys/kvde finekeys.sty Package: kvdefinekeys 2019-12-19 v1.6 Define keys (HO) ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/generic/pdfescape/pdfesca pe.sty Package: pdfescape 2019/12/09 v1.15 Implements pdfTeX's escape features (HO) ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/hycolor/hycolor.sty Package: hycolor 2020-01-27 v1.10 Color options for hyperref/bookmark (HO) ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/letltxmacro/letltxm acro.sty Package: letltxmacro 2019/12/03 v1.6 Let assignment for LaTeX macros (HO) ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/auxhook/auxhook.sty Package: auxhook 2019-12-17 v1.6 Hooks for auxiliary files (HO) ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/kvoptions/kvoptions .sty Package: kvoptions 2019/11/29 v3.13 Key value format for package options (HO) ) \@linkdim=\dimen186 \Hy@linkcounter=\count285 \Hy@pagecounter=\count286 (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/hyperref/pd1enc.def File: pd1enc.def 2020/01/14 v7.00d Hyperref: PDFDocEncoding definition (HO) ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/generic/intcalc/intcalc.s ty Package: intcalc 2019/12/15 v1.3 Expandable calculations with integers (HO) ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/generic/etexcmds/etexcmds .sty Package: etexcmds 2019/12/15 v1.7 Avoid name clashes with e-TeX commands (HO) ) \Hy@SavedSpaceFactor=\count287 Package hyperref Info: Option `unicode' set `true' on input line 4421. (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/hyperref/puenc.def File: puenc.def 2020/01/14 v7.00d Hyperref: PDF Unicode definition (HO) ) Package hyperref Info: Option `setpagesize' set `false' on input line 4421. Package hyperref Info: Option `unicode' set `false' on input line 4421. Package hyperref Info: Hyper figures OFF on input line 4547. Package hyperref Info: Link nesting OFF on input line 4552. Package hyperref Info: Hyper index ON on input line 4555. Package hyperref Info: Plain pages OFF on input line 4562. Package hyperref Info: Backreferencing OFF on input line 4567. Package hyperref Info: Implicit mode ON; LaTeX internals redefined. Package hyperref Info: Bookmarks ON on input line 4800. \c@Hy@tempcnt=\count288 (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/url/url.sty \Urlmuskip=\muskip18 Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc. ) LaTeX Info: Redefining \url on input line 5159. \XeTeXLinkMargin=\dimen187 (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/generic/bitset/bitset.sty Package: bitset 2019/12/09 v1.3 Handle bit-vector datatype (HO) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/generic/bigintcalc/bigint calc.sty Package: bigintcalc 2019/12/15 v1.5 Expandable calculations on big integers (HO ) )) \Fld@menulength=\count289 \Field@Width=\dimen188 \Fld@charsize=\dimen189 Package hyperref Info: Hyper figures OFF on input line 6430. Package hyperref Info: Link nesting OFF on input line 6435. Package hyperref Info: Hyper index ON on input line 6438. Package hyperref Info: backreferencing OFF on input line 6445. Package hyperref Info: Link coloring OFF on input line 6450. Package hyperref Info: Link coloring with OCG OFF on input line 6455. Package hyperref Info: PDF/A mode OFF on input line 6460. LaTeX Info: Redefining \ref on input line 6500. LaTeX Info: Redefining \pageref on input line 6504. (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/generic/atbegshi/atbegshi .sty Package: atbegshi 2019/12/05 v1.19 At begin shipout hook (HO) ) \Hy@abspage=\count290 \c@Item=\count291 \c@Hfootnote=\count292 ) Package hyperref Info: Driver: hxetex. (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/hyperref/hxetex.def File: hxetex.def 2020/01/14 v7.00d Hyperref driver for XeTeX (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/generic/stringenc/stringe nc.sty Package: stringenc 2019/11/29 v1.12 Convert strings between diff. encodings (HO ) ) \pdfm@box=\box60 \c@Hy@AnnotLevel=\count293 \HyField@AnnotCount=\count294 \Fld@listcount=\count295 \c@bookmark@seq@number=\count296 (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/rerunfilecheck/reru nfilecheck.sty Package: rerunfilecheck 2019/12/05 v1.9 Rerun checks for auxiliary files (HO) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/atveryend/atveryend .sty Package: atveryend 2019-12-11 v1.11 Hooks at the very end of document (HO) Package atveryend Info: \enddocument detected (standard20110627). ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/generic/uniquecounter/uni quecounter.sty Package: uniquecounter 2019/12/15 v1.4 Provide unlimited unique counter (HO) ) Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2 86. ) \Hy@SectionHShift=\skip64 ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/graphics/color.st y Package: color 2019/11/23 v1.2a Standard LaTeX Color (DPC) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/graphics-cfg/color. cfg File: color.cfg 2016/01/02 v1.6 sample color configuration ) Package color Info: Driver file: xetex.def on input line 147. (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/graphics/dvipsnam.d ef File: dvipsnam.def 2016/06/17 v3.0m Driver-dependent file (DPC,SPQR) )) Package hyperref Info: Option `breaklinks' set `true' on input line 41. Package hyperref Warning: Option `bookmarks' has already been used, (hyperref) setting the option has no effect on input line 41. (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/generic/stringenc/se-asci i-print.def File: se-ascii-print.def 2019/11/29 v1.12 stringenc: Printable ASCII characters ) Package hyperref Info: Option `colorlinks' set `true' on input line 41. (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/fancyvrb/fancyvrb.s ty Package: fancyvrb 2020/01/13 v3.5 verbatim text (tvz,hv) \FV@CodeLineNo=\count297 \FV@InFile=\read2 \FV@TabBox=\box61 \c@FancyVerbLine=\count298 \FV@StepNumber=\count299 \FV@OutFile=\write3 ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/framed/framed.sty Package: framed 2011/10/22 v 0.96: framed or shaded text with page breaks \OuterFrameSep=\skip65 \fb@frw=\dimen190 \fb@frh=\dimen191 \FrameRule=\dimen192 \FrameSep=\dimen193 ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/grffile/grffile.sty Package: grffile 2019/11/11 v2.1 Extended file name support for graphics (legac y) Package grffile Info: This package is an empty stub for compatibility on input line 40. ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/xelatex/xecjk/xunicode-ad don.sty Package: xunicode-addon 2020/02/18 v3.8.2 addon file for xunicode \l__xunadd_tmp_coffin=\box62 \l__xunadd_circle_coffin=\box63 \l_xunadd_slot_int=\count300 ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/xelatex/xunicode/xunicode .sty File: xunicode.sty 2011/09/09 v0.981 provides access to latin accents and many other characters in Unicode lower plane *** Reloading Xunicode for encoding 'TU' *** ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/xelatex/xecjk/xunicode-ex tra.def File: xunicode-extra.def 2020/02/18 v3.8.2 extra definition for xunicode ) (./ch11-task.aux) \openout1 = `ch11-task.aux'. LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 113. LaTeX Font Info: ... okay on input line 113. LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 113. LaTeX Font Info: ... okay on input line 113. LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 113. LaTeX Font Info: ... okay on input line 113. LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 113. LaTeX Font Info: ... okay on input line 113. LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 113. LaTeX Font Info: ... okay on input line 113. LaTeX Font Info: Checking defaults for TU/lmr/m/n on input line 113. LaTeX Font Info: ... okay on input line 113. LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 113. LaTeX Font Info: ... okay on input line 113. LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 113. LaTeX Font Info: ... okay on input line 113. LaTeX Font Info: Checking defaults for T3/cmr/m/n on input line 113. LaTeX Font Info: Trying to load font information for T3+cmr on input line 11 3. (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/tipa/t3cmr.fd File: t3cmr.fd 2001/12/31 TIPA font definitions ) LaTeX Font Info: ... okay on input line 113. LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 113. LaTeX Font Info: ... okay on input line 113. LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 113. LaTeX Font Info: ... okay on input line 113. ABD: EverySelectfont initializing macros LaTeX Info: Redefining \selectfont on input line 113. \AtBeginShipoutBox=\box64 Package hyperref Info: Link coloring ON on input line 113. (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/hyperref/nameref.st y Package: nameref 2019/09/16 v2.46 Cross-referencing by name of section (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/refcount/refcount.s ty Package: refcount 2019/12/15 v3.6 Data extraction from label references (HO) ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/generic/gettitlestring/ge ttitlestring.sty Package: gettitlestring 2019/12/15 v1.6 Cleanup title references (HO) ) \c@section@level=\count301 ) LaTeX Info: Redefining \ref on input line 113. LaTeX Info: Redefining \pageref on input line 113. LaTeX Info: Redefining \nameref on input line 113. (./ch11-task.out) (./ch11-task.out) \@outlinefile=\write4 \openout4 = `ch11-task.out'. LaTeX Font Info: Trying to load font information for OT1+lmr on input line 1 15. (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/lm/ot1lmr.fd File: ot1lmr.fd 2009/10/30 v1.6 Font defs for Latin Modern ) LaTeX Font Info: Trying to load font information for OML+lmm on input line 1 15. (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/lm/omllmm.fd File: omllmm.fd 2009/10/30 v1.6 Font defs for Latin Modern ) LaTeX Font Info: Trying to load font information for OMS+lmsy on input line 115. (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/lm/omslmsy.fd File: omslmsy.fd 2009/10/30 v1.6 Font defs for Latin Modern ) LaTeX Font Info: Trying to load font information for OMX+lmex on input line 115. (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/lm/omxlmex.fd File: omxlmex.fd 2009/10/30 v1.6 Font defs for Latin Modern ) LaTeX Font Info: External font `lmex10' loaded for size (Font) <12.045> on input line 115. LaTeX Font Info: External font `lmex10' loaded for size (Font) <8> on input line 115. LaTeX Font Info: External font `lmex10' loaded for size (Font) <6> on input line 115. LaTeX Font Info: Trying to load font information for U+msa on input line 115 . (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/amsfonts/umsa.fd File: umsa.fd 2013/01/14 v3.01 AMS symbols A ) LaTeX Font Info: Trying to load font information for U+msb on input line 115 . (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/amsfonts/umsb.fd File: umsb.fd 2013/01/14 v3.01 AMS symbols B ) LaTeX Warning: No \author given. (./ch11-task.toc LaTeX Font Info: External font `lmex10' loaded for size (Font) <10.53937> on input line 3. LaTeX Font Info: External font `lmex10' loaded for size (Font) <7> on input line 3. LaTeX Font Info: External font `lmex10' loaded for size (Font) <5> on input line 3. ) \tf@toc=\write5 \openout5 = `ch11-task.toc'. Package fontspec Info: FangSong scale = 0.976420540271054. Package fontspec Info: Could not resolve font "FangSong/BI" (it probably (fontspec) doesn't exist). Package fontspec Info: Could not resolve font "FangSong/B" (it probably (fontspec) doesn't exist). Package fontspec Info: Could not resolve font "FangSong/I" (it probably (fontspec) doesn't exist). Package fontspec Info: FangSong scale = 0.976420540271054. Package fontspec Info: Font family 'FangSong(0)' created for font 'FangSong' (fontspec) with options (fontspec) [Mapping=tex-text,Scale=MatchLowercase,Script={CJK}]. (fontspec) (fontspec) This font family consists of the following NFSS (fontspec) series/shapes: (fontspec) (fontspec) - 'normal' (m/n) with NFSS spec.: (fontspec) <->s*[0.976420540271054]"FangSong/OT:script=hani;languag e=dflt;mapping=tex-text;" (fontspec) - 'small caps' (m/sc) with NFSS spec.: LaTeX Font Info: Font shape `TU/FangSong(0)/m/n' will be (Font) scaled to size 10.2909pt on input line 126. LaTeX Font Info: Font shape `TU/lmtt/bx/n' in size <10.53937> not available (Font) Font shape `TU/lmtt/b/n' tried instead on input line 127. [1 ] File: ch11-task_files/figure-latex/unnamed-chunk-2-1.pdf Graphic file (type pdf ) Overfull \hbox (21.07573pt too wide) in paragraph at lines 142--143 [][] [] Overfull \hbox (47.855pt too wide) in paragraph at lines 152--152 []\TU/lmtt/m/n/10.53937 ## 1 x 1664 rating matrix of class 'realRatingMatrix' w ith 271 ratings.[] [] LaTeX Font Warning: Font shape `TU/FangSong(0)/m/it' undefined (Font) using `TU/FangSong(0)/m/n' instead on input line 156. File: ch11-task_files/figure-latex/unnamed-chunk-2-2.pdf Graphic file (type pdf ) Overfull \hbox (21.07573pt too wide) in paragraph at lines 175--177 [][] [] LaTeX Font Info: Font shape `TU/SimSun(0)/m/sl' in size <10.53937> not avail able (Font) Font shape `TU/SimSun(0)/m/it' tried instead on input line 177. [2] File: ch11-task_files/figure-latex/unnamed-chunk-3-1.pdf Graphic file (type pdf ) Overfull \hbox (21.07573pt too wide) in paragraph at lines 204--205 [][] [] [3] File: ch11-task_files/figure-latex/unnamed-chunk-4-1.pdf Graphic file (type pdf ) Overfull \hbox (21.07573pt too wide) in paragraph at lines 220--221 [][] [] [4] File: ch11-task_files/figure-latex/unnamed-chunk-4-2.pdf Graphic file (type pdf ) Overfull \hbox (21.07573pt too wide) in paragraph at lines 231--232 [][] [] [5] [6] File: ch11-task_files/figure-latex/unnamed-chunk-5-1.pdf Graphic file (type pdf ) Overfull \hbox (21.07573pt too wide) in paragraph at lines 280--281 [][] [] [7] File: ch11-task_files/figure-latex/unnamed-chunk-5-2.pdf Graphic file (type pdf ) Overfull \hbox (21.07573pt too wide) in paragraph at lines 288--289 [][] [] [8] Package atveryend Info: Empty hook `BeforeClearDocument' on input line 339. [9] Package atveryend Info: Empty hook `AfterLastShipout' on input line 339. (./ch11-task.aux) Package atveryend Info: Empty hook `AtVeryEndDocument' on input line 339. Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 339. Package rerunfilecheck Info: File `ch11-task.out' has not changed. (rerunfilecheck) Checksum: 68B7A58006E2552B343E2EEC2A8A1570;365. LaTeX Font Warning: Some font shapes were not available, defaults substituted. Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 339. ) Here is how much of TeX's memory you used: 21495 strings out of 481765 431287 string characters out of 5934263 673178 words of memory out of 5000000 38148 multiletter control sequences out of 15000+600000 557423 words of font info for 98 fonts, out of 8000000 for 9000 14 hyphenation exceptions out of 8191 55i,6n,116p,369b,600s stack positions out of 5000i,500n,10000p,200000b,80000s Output written on ch11-task.pdf (9 pages). ================================================ FILE: 2020年/2020.07.22坐标轴截断画图/code_truncation .R ================================================ ## [ggplot坐标轴截断](https://www.jianshu.com/p/0e4fa8849479) library(ggplot2) set.seed(2019-01-19) d <- data.frame( x = 1:20, y = c(rnorm(5) + 4, rnorm(5) + 20, rnorm(5) + 5, rnorm(5) + 22) ) ggplot(d, aes(x, y)) + geom_col() library(dplyr) breaks = c(7, 17) d$.type <- NA d$.type[d$y < breaks[1]] = "small" d$.type[d$y > breaks[2]] = "big" d <- filter(d, .type == 'big') %>% mutate(.type = "small", y = breaks[1]) %>% bind_rows(d) mymin = function(y) ifelse(y <= breaks[1], 0, breaks[2]) p <- ggplot(d, aes(x, y)) + geom_rect(aes(xmin = x - .4, xmax = x + .4, ymin = mymin(y), ymax = y)) + facet_grid(.type ~ ., scales = "free") + theme(strip.text=element_blank()) p ## [R语言作图——坐标轴截断画图](http://blog.sina.com.cn/s/blog_6a4ee1ad0102x5at.html) library(plotrix) w <- c(75, 64.4, 47.3, 66.9, 456, 80.6, 70, 55.8, 57.9, 561, 58.6, 61.2, 50.3, 54.6, 57.8) x <- c(1:15) gap.barplot(w,gap=c(90,420),xaxlab=x,ytics=c(50,70,450,500),col=rainbow(15),xlab ="mumbers", ylab = "height", main="test image") axis.break(2,90,breakcol="snow",style="gap")##去掉中间的那两道横线; axis.break(2,90*(1+0.02),breakcol="black",style="slash")##在左侧Y轴把gap位置换成slash; axis.break(4,90*(1+0.02),breakcol="black",style="slash")##在右侧Y轴把gap位置换成slash; ### 案例 twogrp<-c(rnorm(10)+4,rnorm(10)+20) gap.barplot(twogrp,gap=c(8,16),xlab="Index",ytics=c(3,6,17,20), ylab="Group values",main="Barplot with gap") gap.barplot(twogrp,gap=c(8,16),xlab="Index",ytics=c(3,6,17,20), ylab="Group values",horiz=TRUE,main="Horizontal barplot with gap") ================================================ FILE: 2020年/2020.07.22坐标轴截断画图/code_truncation .Rmd ================================================ --- title: "R中坐标轴截断的不同实现方式" author: - 庄闪闪 documentclass: ctexart output: word_document: default html_document: default pdf_document: default rticles::ctex: fig_caption: yes number_sections: yes toc: yes classoption: "hyperref," --- # plotrix包 [R语言作图——坐标轴截断画图](http://blog.sina.com.cn/s/blog_6a4ee1ad0102x5at.html) 利用gap.barplot()进进行绘制,将gap参数设置为90,420进行y轴截断,可加入参数axis.break()对截断形状进行修改 ```{r} library(plotrix) w <- c(75, 64.4, 47.3, 66.9, 456, 80.6, 70, 55.8, 57.9, 561, 58.6, 61.2, 50.3, 54.6, 57.8) x <- c(1:15) gap.barplot(w,gap=c(90,420),xaxlab=x,ytics=c(50,70,450,500),col=rainbow(15),xlab ="mumbers", ylab = "height", main="test image") axis.break(2,90,breakcol="snow",style="gap")##去掉中间的那两道横线; axis.break(2,90*(1+0.02),breakcol="black",style="slash")##在左侧Y轴把gap位置换成slash; axis.break(4,90*(1+0.02),breakcol="black",style="slash")##在右侧Y轴把gap位置换成slash; ``` - 其他案例 ```{r} twogrp<-c(rnorm(10)+4,rnorm(10)+20) gap.barplot(twogrp,gap=c(8,16),xlab="Index",ytics=c(3,6,17,20), ylab="Group values",main="Barplot with gap") gap.barplot(twogrp,gap=c(8,16),xlab="Index",ytics=c(3,6,17,20), ylab="Group values",horiz=TRUE,main="Horizontal barplot with gap") ``` # ggplot包 [ggplot坐标轴截断](https://www.jianshu.com/p/0e4fa8849479) ```{r message=FALSE, warning=FALSE} library(ggplot2) set.seed(123) d <- data.frame( x = 1:20, y = c(rnorm(5) + 4, rnorm(5) + 20, rnorm(5) + 5, rnorm(5) + 22) ) ggplot(d, aes(x, y)) + geom_col() library(dplyr) breaks = c(7, 17) d$type <- NA d$type[d$y < breaks[1]] = "small" d$type[d$y > breaks[2]] = "big" d <- filter(d, type == 'big') %>% mutate(type = "small", y = breaks[1]) %>% bind_rows(d) mymin = function(y) ifelse(y <= breaks[1], 0, breaks[2]) p <- ggplot(d, aes(x, y)) + geom_rect(aes(xmin = x - .4, xmax = x + .4, ymin = mymin(y), ymax = y)) + facet_grid(type ~ ., scales = "free") + theme(strip.text=element_blank())#去除text p ``` ================================================ FILE: 2020年/2020.07.24饼图与圆环图/pie.rmd ================================================ --- title: "饼状图" date: 2020-08-05 author: - 庄闪闪 documentclass: ctexart output: word_document: default pdf_document: default html_document: default classoption: "hyperref," --- # 饼图 饼图(pie chart)被广泛地应用于各个领域,用于表示不同分类的占比情况,通过弧度大小来对比各种分类。饼图通过将一个圆饼按照分类的占比划分成多个切片,整个圆饼代表数据的总量,每个切片(圆弧)表示该分类占总体的比例,所有切片(圆弧)的加和等于100%。 ## graphics绘制饼图 ```{r message=FALSE, warning=FALSE} library(RColorBrewer) library(dplyr) library(graphics) library(ggplot2) ``` ```{r} sessionInfo( ) ``` init.angle可设定饼图的初始角度,labels可添加标签。颜色用了brewer.pal函数,第一个参数为个数,第二个参数为名字,这里用的是BrBG,具体可help一下。 ```{r message=FALSE, warning=FALSE} df <- data.frame(value = c(24.20,30.90,12.50,12.30,8.10,12.10), group = c('LVS','SJM','MCE','Galaxy','MGM','Wynn')) df <-arrange(df,value) labs <- paste0(df$group," \n(", round(df$value/sum(df$value)*100,2), "%)") #标签 lab <- paste0(round(df$value/sum(df$value)*100,2), "%") #标签 pie(df$value,labels=labs, init.angle=90,col = brewer.pal(nrow(df), "BrBG"), border="black") pie(df$value,labels=lab, init.angle=90,col = brewer.pal(nrow(df), "Blues"), border="black") ``` ## ggplot2包绘制 使用R中ggplot2包的geom_bar()函数绘制堆积柱形图,然后将直角坐标系转换成极坐标系, 就可以显示为饼图,但还是需要使用geom_text()函数添加数据标签。注意的是:ymax,ymin也需要自己计算得到。 ```{r message=FALSE, warning=FALSE} df$fraction = df$value / sum(df$value) df$ymax = cumsum(df$fraction) df$ymin = c(0, head(df$ymax, n = -1)) ggplot(data = df, aes(fill = group, ymax = ymax, ymin = ymin, xmax = 4, xmin = 3)) + geom_rect(show.legend = F,alpha=0.8) + scale_fill_brewer(palette = 'Set3')+ coord_polar(theta = "y") + labs(x = "", y = "", title = "",fill='地区') + theme_light() + theme(panel.grid=element_blank()) + ## 去掉白色外框 theme(axis.text=element_blank()) + ## 把图旁边的标签去掉 theme(axis.ticks=element_blank()) + ## 去掉左上角的坐标刻度线 theme(panel.border=element_blank()) + ## 去掉最外层的正方形边框 geom_text(aes(x = 3.5, y = ((ymin+ymax)/2),label = labs) ,size=3.6) ``` 但是可以看到:由于缺乏饼图与数据标签之间的引导线,总感觉美观度不够,所以推荐使用graphics 包的pie()函数绘制饼图。 # 圆环图 ## ggplot绘制圆环图 在刚才的gglpot绘制饼图的基础上,我们只要再加一条代码即可完成:xlim(c(0, 5)),即将x轴范围控制在0-5。 ```{r} df$fraction = df$value / sum(df$value) df$ymax = cumsum(df$fraction) df$ymin = c(0, head(df$ymax, n = -1)) ggplot(data = df, aes(fill = group, ymax = ymax, ymin = ymin, xmax = 4, xmin = 3)) + geom_rect(show.legend = F,alpha=0.8) + scale_fill_brewer(palette = 'Set3')+ coord_polar(theta = "y") + labs(x = "", y = "", title = "",fill='地区') + xlim(c(0, 5)) + theme_light() + theme(panel.grid=element_blank()) + ## 去掉白色外框 theme(axis.text=element_blank()) + ## 把图旁边的标签去掉 theme(axis.ticks=element_blank()) + ## 去掉左上角的坐标刻度线 theme(panel.border=element_blank()) + ## 去掉最外层的正方形边框 geom_text(aes(x = 3.5, y = ((ymin+ymax)/2),label = labs) ,size=3.6) ``` # 复合饼图系列 散点复合饼图(compound scatter and pie chart)可以展示三个数据变量的信息:(x, y, P),其中x 和y 决定气泡在直角坐标系中的位置,P 表示饼图的数据信息,决定饼图中各个类别的占比情况, 如图(a)所示。 气泡复合饼图(compound bubble and pie chart)可以展示四个数据变量的信息:(x, y, z, P),其中 x 和y 决定气泡在直角坐标系中的位置,z 决定气泡的大小,P 表示饼图的数据信息,决定饼图中各 个类别的占比情况,如图(b)所示。 ```{r} library(ggplot2) library(scatterpie) library(RColorBrewer) crime <- read.csv("C:/Users/DELL/Desktop/我的书籍/R语言数据可视化之美/第7章 局部整体型图表/crimeRatesByState2005.tsv",header = TRUE, sep = "\t", stringsAsFactors = F) radius <- sqrt(crime$population / pi) Max_radius<-max(radius) Bubble_Scale<-0.1 crime$radius <- Bubble_Scale * radius/Max_radius mydata<-crime[,c(2,4,3,5:8)] #数据集构造 Col_Mean<-apply(mydata,2,mean) Col_Sort<-sort(Col_Mean,index.return=TRUE,decreasing = TRUE) mydata<-mydata[,Col_Sort$ix] x<-(mydata$murder-min(mydata$murder))/(max(mydata$murder)-min(mydata$murder))+0.00001 y<-(mydata$Robbery-min(mydata$Robbery))/(max(mydata$Robbery)-min(mydata$Robbery))+0.00001 xlabel<-seq(0,10,2) xbreak<-(xlabel-min(mydata$murder))/(max(mydata$murder)-min(mydata$murder))+0.00001 ylabel<-seq(0,260,50) ybreak<-(ylabel-min(mydata$Robbery))/(max(mydata$Robbery)-min(mydata$Robbery))+0.00001 mydata2<-data.frame(x,y,radius=crime$radius) mydata2<-cbind(mydata2,mydata) Legnd_label<-colnames(mydata2)[4:10] colnames(mydata2)[4:10]<-LETTERS[1:7] ``` ## 散点复合饼图系列(a) ```{r} ggplot() + geom_scatterpie(aes(x=x, y=y,r=0.05), data=mydata2, cols=colnames(mydata2)[4:10],alpha=0.9,size=0.1) + scale_fill_manual(values=colorRampPalette(brewer.pal(7, "Set2"))(7),labels=Legnd_label)+ #geom_scatterpie_legend(mydata2$radius, x=0.1, y=0.95, n=5,labeller=function(x) round((x* Max_radius/ Bubble_Scale)^2*pi))+ #geom_scatterpie_legend(mydata2$radius, x=0.009758116, y=0.090868067, n=4,labeller=function(x) round((x* Max_radius/ Bubble_Scale)^2*pi))+ scale_x_continuous(breaks=xbreak, labels=xlabel)+ scale_y_continuous(breaks=ybreak, labels=ylabel)+ xlab("murder")+ ylab("Robbery")+ coord_fixed()+ theme( axis.title=element_text(size=15,face="plain",color="black"), axis.text = element_text(size=13,face="plain",color="black"), legend.title=element_text(size=15,face="plain",color="black"), legend.text = element_text(size=14,face="plain",color="black") ) ``` ## 散点复合饼图系列(b) ```{r} ggplot() + geom_scatterpie(aes(x=x, y=y,r=radius), data=mydata2, cols=colnames(mydata2)[4:10],alpha=0.9,size=0.25) + scale_fill_manual(values=colorRampPalette(brewer.pal(7, "Set2"))(7),labels=Legnd_label)+ geom_scatterpie_legend(mydata2$radius, x=0.1, y=0.95, n=5, labeller=function(x) round((x* Max_radius/ Bubble_Scale)^2*pi))+ #geom_scatterpie_legend(mydata2$radius, x=0.009758116, y=0.090868067, n=4,labeller=function(x) round((x* Max_radius/ Bubble_Scale)^2*pi))+ scale_x_continuous(breaks=xbreak, labels=xlabel)+ scale_y_continuous(breaks=ybreak, labels=ylabel)+ xlab("murder")+ ylab("Robbery")+ coord_fixed()+ theme( axis.title=element_text(size=15,face="plain",color="black"), axis.text = element_text(size=13,face="plain",color="black"), legend.title=element_text(size=15,face="plain",color="black"), legend.text = element_text(size=14,face="plain",color="black") ) ``` 参考资料 https://zhuanlan.zhihu.com/p/69617844 ================================================ FILE: 2020年/2020.07.29温大招生/code_ggimage.r ================================================ require(magick) require(ggplot2) require(ggplotify) require(shadowtext) require(ggimage) windows() x = image_read("C:/Users/DELL/Desktop/bing/3.jpg") p = as.ggplot(x) #图上嵌图 smu = "http://www.wzu.edu.cn/dfiles/9987/template/default/newzhuzhan/wenda/images/logo.jpg" #smu = "C:/Users/DELL/Desktop/bing/2.jpg" p <- p + geom_rect(xmin=.2, xmax=.8, ymin=.4, ymax=.6, fill='steelblue', alpha=.5) + geom_image(x=.5, y=.5, image=smu, size=.4) #寄语 msg = "填志愿一定要遵从本心\n第一眼看到哪个,就报哪个!" p + geom_shadowtext( x=.5, y=.8, label=msg, size=10, color='firebrick') #参考https://mp.weixin.qq.com/s?__biz=MzI5NjUyNzkxMg==&mid=2247489599&idx=1&sn=e689331bc5500222ec7d0c1c61942362&chksm=ec43a978db34206ed932e7e086db00f707e5cb9f9aa4e38254e40c3ef642dee5693a03532994&mpshare=1&scene=1&srcid=07293Jcp2dA2gLL6If2GGh8s&sharer_sharetime=1596004011941&sharer_shareid=ee38888b33e1d0070e96aeb454518587&key=6614a0a10b7b6719e9a2b6aaf9b5a70639efbf3c7c8e8e92b20a32c4badbf01c713092a60b32600156388a8c91a282772e89bcfe2a7eb0236746b8e10cee021cae0a3722f18222f708988e462583107f&ascene=1&uin=OTk1MTUyNzI2&devicetype=Windows+10+x64&version=62090529&lang=zh_CN&exportkey=A%2FUKJTXVcz2E27Ve0FcZuIk%3D&pass_ticket=GHX0j6fsfiEATjqcMrcVQQYSihtF3L6yDim2tm78a1XP0v2qucpofrFRF8%2Bz4zjt ================================================ FILE: 2020年/2020.08.14amazon/RECOM.Rmd ================================================ --- title: "亚马逊产品的推荐算法" author: documentclass: ctexart always_allow_html: true output: word_document: default pdf_document: default html_document: default classoption: "hyperref," --- # 前言 R的recommenderlab包有许多关于推荐算法建立、处理及可视化的函数。上一次也利用这个包对Movielisence进行了分析,但是这个数据集来源于包本身。本文对于一个实际数据进行分析,该数据集来源于亚马逊网站,我们的目标是利用recommenderlab包构建相应的推荐系统,利用用户对产品的打分,做到给用户个性化推荐,包括 1. 构建多个不同方法的推荐系统,并进行比较,选取最优推荐系统。 2. 给出每个用户Top3的产品推荐。 3. 对于某个产品,预测出用户的评分情况。 # 数据处理与数据探索性分析 ```{r message=FALSE, warning=FALSE} library(recommenderlab) library(reshape) ``` ## 数据处理 选取有用数据,包括:用户名,产品名称,打分情况构建新的数据集。并删除含有缺失值的行,最后数据仅剩下34621行。 ```{r message=FALSE, warning=FALSE} data = read.csv("C:/Users/DELL/Desktop/2020.08.12亚马逊/data.csv",header = T) data = data[,c(21,3,15)] #userid,product,rating #删除na的行 data = na.omit(data) dim(data) names(data) = c('V1','V2','V3') unique(data$V2) ``` ## 数据探索性分析 利用`summary()`获取评分数据,可知最大值为5,最小值为1,平均值为4.58。并将其柱状图进行绘制,如下所示。 ```{r message=FALSE, warning=FALSE} summary(data[, 3]) barplot(prop.table(table(data[, 3])),col="skyblue", main="各评分分数占比情况",xlab="rating",ylab="proportion") length(unique(data[, 2])) factor(unique(data[, 2])) barplot(table(data[, 2]),col="skyblue", main="",xlab="Product",ylab="Frequent") names(table(data[, 2])) fre = as.numeric(table(data[, 2])) type = unique(data[, 2]) levels(type)[28]<-'B01E6AO69U' fre = fre[fre!=0] library(tidyverse) product <- tibble( type = factor(unique(data[, 2])), freq = fre ) p = ggplot(data = product, mapping = aes( x = fct_reorder(type, desc(freq)), y = freq )) p + geom_col() + coord_flip() plot(as.numeric(table(data[, 2])),) ``` ## 数据格式构造 构造新的数据类型`realRatingMatrix`,以便更好的分析。生成一个以v1为行,v2为列的矩阵,使用v3进行填充。最后生成26762 x 39稀疏矩阵。 ```{r message=FALSE, warning=FALSE} mydata <- cast(data,V1~V2,value="V3",fun.aggregate=mean) #生成一个以v1为行,v2为列的矩阵,使用v3进行填充 mydata <- mydata[,-1] #第一列数字为序列,可以删除 class(mydata) class(mydata)<-"data.frame" #只选取data.frame mydata<-as.matrix(mydata) mydata<-as(mydata,"realRatingMatrix") mydata ``` # 模型评估与构建最优模型 - 对于realRatingMatrix有六种方法:IBCF(基于物品的推荐)、UBCF(基于用户的推荐)、SVD(矩阵因子化)、PCA(主成分分析)、 RANDOM(随机推荐)、POPULAR(基于流行度的推荐)。 ## 模型评估 主要使用:`recommenderlab`包中自带的评估方案,对应的函数是`evaluationScheme`,能够设置采用`n-fold`交叉验证还是简单的`training/train`分开验证,本文采用后一种方法,即将数据集简单分为`training`和`test`,在`training`训练模型,然后在`test`上评估。接下来我们使用三种不同技术进行构建推荐系统,并利用评估方案比较三种技术的好坏。 - 在此我们比较三种方法的结果:IBCF(基于物品的推荐),RANDOM(随机推荐),POPULAR(基于流行度的推荐)。结果如下 ```{r message=FALSE, warning=FALSE} scheme <- evaluationScheme(mydata, method = "split", train = 0.9, k = 1, given = 1, goodRating = 4) algorithms <- list(popular = list(name = "POPULAR", param = list(normalize = "Z-score")),random = list(name = "RANDOM",param = list(normalize = "Z-score", method = "Cosine",nn = 25, minRating = 3)), ibcf = list(name = "IBCF", param = list(normalize = "Z-score"))) results <- evaluate(scheme, algorithms, n = c(1, 3, 5, 10, 15, 20)) plot(results, annotate = 1:3, legend = "topleft") #ROC plot(results, "prec/rec", annotate = 3)#precision-recall ``` - 按照评价方案建立推荐模型 ```{r message=FALSE, warning=FALSE} # 按照评价方案建立推荐模型 model.popular <- Recommender(getData(scheme, "train"), method = "POPULAR") model.ibcf <- Recommender(getData(scheme, "train"), method = "IBCF") model.random <- Recommender(getData(scheme, "train"), method = "RANDOM") ``` - 对推荐模型进行预测 ```{r message=FALSE, warning=FALSE} predict.popular <- predict(model.popular, getData(scheme, "known"), type = "ratings") predict.ibcf <- predict(model.ibcf, getData(scheme, "known"), type = "ratings") predict.random <- predict(model.random, getData(scheme, "known"), type = "ratings") ``` - 做误差的计算 ```{r message=FALSE, warning=FALSE} predict.err <- rbind(calcPredictionAccuracy(predict.popular, getData(scheme, "unknown")),calcPredictionAccuracy(predict.random, getData(scheme,"unknown")), calcPredictionAccuracy(predict.ibcf,getData(scheme, "unknown"))) rownames(predict.err) <- c("POPULAR", "RANDOM", "IBCF") predict.err ``` 通过结果我们可以看到:三种方法的比较**基于随机推荐系统**对于本案例数据的效果最好,RMSE,MSE,MAE都是三者中的最小值。其次是基于物品的推荐,最后是基于流行度过滤。 ## 构建最优模型 利用以上结果,我们构建最优模型:**基于随机推荐系统**。首先先对系数矩阵的行列名进行定义。 ```{r message=FALSE, warning=FALSE} colnames(mydata)<-paste0("asins",1:dim(mydata)[2],sep="") mydata.model <- Recommender(mydata[1:dim(mydata)[1]], method = "RANDOM") ``` 数据处理完毕,接来下是进行预测,可以显示三个用户的Top3推荐列表. ### TopN推荐 给出users201,202,203每人前三个产品的推荐。 ```{r message=FALSE, warning=FALSE} ##TopN推荐 mydata.predict1 <- predict(mydata.model,mydata[201:203], n = 3) #n指数量 as(mydata.predict1,"list") ``` ### 用户对产品的评分预测 给出前三个users对前6个产品的评分预测。 ```{r message=FALSE, warning=FALSE} mydata.predict2 <- predict(mydata.model, mydata[201:403], type = "ratings") mydata.predict2 a = as(mydata.predict2, "matrix")[1:3, 1:6] knitr::kable(a) ``` # 参考资料{-} 1. [基于协同过滤算法的电影推荐系统](https://blog.csdn.net/weixin_44035441/article/details/90728889) 2. [R语言:recommenderlab包的总结与应用案例](https://www.cnblogs.com/yjd_hycf_space/p/6702764.html) 3. [recommenderlab: A Framework for Developing and Testing Recommendation Algorithms](https://cran.r-project.org/web/packages/recommenderlab/vignettes/recommenderlab.pdf) ================================================ FILE: 2020年/2020.08.14amazon/code.Rmd ================================================ --- title: "亚马逊产品的推荐算法" author: documentclass: ctexart always_allow_html: true output: word_document: default pdf_document: default html_document: default classoption: "hyperref," --- # 前言 R的recommenderlab包有许多关于推荐算法建立、处理及可视化的函数。上一次也利用这个包对Movielisence进行了分析,但是这个数据集来源于包本身。本文对于一个实际数据进行分析,该数据集来源于亚马逊网站,我们的目标是利用recommenderlab包构建相应的推荐系统,利用用户对产品的打分,做到给用户个性化推荐,包括 1. 构建多个不同方法的推荐系统,并进行比较,选取最优推荐系统。 2. 给出每个用户Top3的产品推荐。 3. 对于某个产品,预测出用户的评分情况。 # 数据处理与数据探索性分析 ```{r message=FALSE, warning=FALSE} library(recommenderlab) library(reshape) ``` ## 数据处理 选取有用数据,包括:用户名,产品名称,打分情况构建新的数据集。并删除含有缺失值的行,最后数据仅剩下34621行。 ```{r message=FALSE, warning=FALSE} data = read.csv("C:/Users/DELL/Desktop/2020.08.12亚马逊/data.csv",header = T) data = data[,c(21,3,15)] #userid,product,rating #删除na的行 data = na.omit(data) dim(data) names(data) = c('V1','V2','V3') unique(data$V2) ``` ## 数据探索性分析 利用`summary()`获取评分数据,可知最大值为5,最小值为1,平均值为4.58。并将其柱状图进行绘制,如下所示。 ```{r message=FALSE, warning=FALSE} summary(data[, 3]) barplot(prop.table(table(data[, 3])),col="skyblue", main="各评分分数占比情况",xlab="rating",ylab="proportion") length(unique(data[, 2])) unique(data[, 2]) barplot(table(data[, 2]),col="skyblue", main="",xlab="Product",ylab="Frequent") names(table(data[, 2])) plot(as.numeric(table(data[, 2])),) ``` ## 数据格式构造 构造新的数据类型`realRatingMatrix`,以便更好的分析。生成一个以v1为行,v2为列的矩阵,使用v3进行填充。最后生成26762 x 39稀疏矩阵。 ```{r message=FALSE, warning=FALSE} mydata <- cast(data,V1~V2,value="V3",fun.aggregate=mean) #生成一个以v1为行,v2为列的矩阵,使用v3进行填充 mydata <- mydata[,-1] #第一列数字为序列,可以删除 class(mydata) class(mydata)<-"data.frame" #只选取data.frame mydata<-as.matrix(mydata) mydata<-as(mydata,"realRatingMatrix") mydata ``` # 模型评估与构建最优模型 - 对于realRatingMatrix有六种方法:IBCF(基于物品的推荐)、UBCF(基于用户的推荐)、SVD(矩阵因子化)、PCA(主成分分析)、 RANDOM(随机推荐)、POPULAR(基于流行度的推荐)。 ## 模型评估 主要使用:`recommenderlab`包中自带的评估方案,对应的函数是`evaluationScheme`,能够设置采用`n-fold`交叉验证还是简单的`training/train`分开验证,本文采用后一种方法,即将数据集简单分为`training`和`test`,在`training`训练模型,然后在`test`上评估。接下来我们使用三种不同技术进行构建推荐系统,并利用评估方案比较三种技术的好坏。 - 在此我们比较三种方法的结果:IBCF(基于物品的推荐),RANDOM(随机推荐),POPULAR(基于流行度的推荐)。结果如下 ```{r message=FALSE, warning=FALSE} scheme <- evaluationScheme(mydata, method = "split", train = 0.9, k = 1, given = 1, goodRating = 4) algorithms <- list(popular = list(name = "POPULAR", param = list(normalize = "Z-score")),random = list(name = "RANDOM",param = list(normalize = "Z-score", method = "Cosine",nn = 25, minRating = 3)), ibcf = list(name = "IBCF", param = list(normalize = "Z-score"))) results <- evaluate(scheme, algorithms, n = c(1, 3, 5, 10, 15, 20)) plot(results, annotate = 1:3, legend = "topleft") #ROC plot(results, "prec/rec", annotate = 3)#precision-recall ``` - 按照评价方案建立推荐模型 ```{r message=FALSE, warning=FALSE} # 按照评价方案建立推荐模型 model.popular <- Recommender(getData(scheme, "train"), method = "POPULAR") model.ibcf <- Recommender(getData(scheme, "train"), method = "IBCF") model.random <- Recommender(getData(scheme, "train"), method = "RANDOM") ``` - 对推荐模型进行预测 ```{r message=FALSE, warning=FALSE} predict.popular <- predict(model.popular, getData(scheme, "known"), type = "ratings") predict.ibcf <- predict(model.ibcf, getData(scheme, "known"), type = "ratings") predict.random <- predict(model.random, getData(scheme, "known"), type = "ratings") ``` - 做误差的计算 ```{r message=FALSE, warning=FALSE} predict.err <- rbind(calcPredictionAccuracy(predict.popular, getData(scheme, "unknown")),calcPredictionAccuracy(predict.random, getData(scheme,"unknown")), calcPredictionAccuracy(predict.ibcf,getData(scheme, "unknown"))) rownames(predict.err) <- c("POPULAR", "RANDOM", "IBCF") predict.err ``` 通过结果我们可以看到:三种方法的比较**基于随机推荐系统**对于本案例数据的效果最好,RMSE,MSE,MAE都是三者中的最小值。其次是基于物品的推荐,最后是基于流行度过滤。 ## 构建最优模型 利用以上结果,我们构建最优模型:**基于随机推荐系统**。首先先对系数矩阵的行列名进行定义。 ```{r message=FALSE, warning=FALSE} colnames(mydata)<-paste0("asins",1:dim(mydata)[2],sep="") mydata.model <- Recommender(mydata[1:dim(mydata)[1]], method = "RANDOM") ``` 数据处理完毕,接来下是进行预测,可以显示三个用户的Top3推荐列表. ### TopN推荐 给出users201,202,203每人前三个产品的推荐。 ```{r message=FALSE, warning=FALSE} ##TopN推荐 mydata.predict1 <- predict(mydata.model,mydata[201:203], n = 3) #n指数量 as(mydata.predict1,"list") ``` ### 用户对产品的评分预测 给出前三个users对前6个产品的评分预测。 ```{r message=FALSE, warning=FALSE} mydata.predict2 <- predict(mydata.model, mydata[201:403], type = "ratings") mydata.predict2 a = as(mydata.predict2, "matrix")[1:3, 1:6] knitr::kable(a) ``` # 参考资料{-} 1. [基于协同过滤算法的电影推荐系统](https://blog.csdn.net/weixin_44035441/article/details/90728889) 2. [R语言:recommenderlab包的总结与应用案例](https://www.cnblogs.com/yjd_hycf_space/p/6702764.html) 3. [recommenderlab: A Framework for Developing and Testing Recommendation Algorithms](https://cran.r-project.org/web/packages/recommenderlab/vignettes/recommenderlab.pdf) ================================================ FILE: 2020年/2020.08.15分面/facet.log ================================================ This is XeTeX, Version 3.14159265-2.6-0.999991 (TeX Live 2019/W32TeX) (preloaded format=xelatex 2020.3.24) 15 AUG 2020 16:51 entering extended mode restricted \write18 enabled. %&-line parsing enabled. **facet.tex (./facet.tex LaTeX2e <2020-02-02> patch level 5 L3 programming layer <2020-02-25> (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf- dist/tex/latex/ctex/ctexart.cls (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-di st/tex/latex/l3kernel/expl3.sty Package: expl3 2020-02-25 L3 programming layer (loader) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/l3backend/l3backend -xdvipdfmx.def File: l3backend-xdvipdfmx.def 2020-02-23 L3 backend support: xdvipdfmx \g__graphics_track_int=\count163 \l__pdf_internal_box=\box45 \g__pdf_backend_object_int=\count164 \g__pdf_backend_annotation_int=\count165 )) Document Class: ctexart 2019/05/29 v2.4.16 Chinese adapter for class article (C TEX) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/l3packages/xparse/x parse.sty Package: xparse 2020-02-25 L3 Experimental document command parser \l__xparse_current_arg_int=\count166 \g__xparse_grabber_int=\count167 \l__xparse_m_args_int=\count168 \l__xparse_v_nesting_int=\count169 ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/l3packages/l3keys2e /l3keys2e.sty Package: l3keys2e 2020-02-25 LaTeX2e option processing using LaTeX3 keys ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/ctex/ctexhook.sty Package: ctexhook 2019/05/29 v2.4.16 Document and package hooks (CTEX) ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/ctex/ctexpatch.st y Package: ctexpatch 2019/05/29 v2.4.16 Patching commands (CTEX) ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/base/fix-cm.sty Package: fix-cm 2015/01/14 v1.1t fixes to LaTeX (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/base/ts1enc.def File: ts1enc.def 2001/06/05 v3.0e (jk/car/fm) Standard LaTeX file LaTeX Font Info: Redeclaring font encoding TS1 on input line 47. )) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/ms/everysel.sty Package: everysel 2011/10/28 v1.2 EverySelectfont Package (MS) ) \l__ctex_tmp_int=\count170 \l__ctex_tmp_box=\box46 \l__ctex_tmp_dim=\dimen134 \g__ctex_section_depth_int=\count171 \g__ctex_font_size_int=\count172 (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/ctex/config/ctexopt s.cfg File: ctexopts.cfg 2019/05/29 v2.4.16 Option configuration file (CTEX) ) Package ctex Warning: Option `hyperref' is deprecated. (ctex) `hyperref' package will be loaded. (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/base/article.cls Document Class: article 2019/12/20 v1.4l Standard LaTeX document class (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/base/size10.clo File: size10.clo 2019/12/20 v1.4l Standard LaTeX file (size option) ) \c@part=\count173 \c@section=\count174 \c@subsection=\count175 \c@subsubsection=\count176 \c@paragraph=\count177 \c@subparagraph=\count178 \c@figure=\count179 \c@table=\count180 \abovecaptionskip=\skip47 \belowcaptionskip=\skip48 \bibindent=\dimen135 ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/ctex/engine/ctex-en gine-xetex.def File: ctex-engine-xetex.def 2019/05/29 v2.4.16 XeLaTeX adapter (CTEX) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/xelatex/xecjk/xeCJK.sty Package: xeCJK 2020/02/18 v3.8.2 Typesetting CJK scripts with XeLaTeX (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/l3packages/xtemplat e/xtemplate.sty Package: xtemplate 2020-02-25 L3 Experimental prototype document functions \l__xtemplate_tmp_dim=\dimen136 \l__xtemplate_tmp_int=\count181 \l__xtemplate_tmp_muskip=\muskip16 \l__xtemplate_tmp_skip=\skip49 ) \l__xeCJK_tmp_int=\count182 \l__xeCJK_tmp_box=\box47 \l__xeCJK_tmp_dim=\dimen137 \l__xeCJK_tmp_skip=\skip50 \g__xeCJK_space_factor_int=\count183 \l__xeCJK_begin_int=\count184 \l__xeCJK_end_int=\count185 \c__xeCJK_CJK_class_int=\XeTeXcharclass1 \c__xeCJK_FullLeft_class_int=\XeTeXcharclass2 \c__xeCJK_FullRight_class_int=\XeTeXcharclass3 \c__xeCJK_HalfLeft_class_int=\XeTeXcharclass4 \c__xeCJK_HalfRight_class_int=\XeTeXcharclass5 \c__xeCJK_NormalSpace_class_int=\XeTeXcharclass6 \c__xeCJK_CM_class_int=\XeTeXcharclass7 \c__xeCJK_HangulJamo_class_int=\XeTeXcharclass8 \l__xeCJK_last_skip=\skip51 \g__xeCJK_node_int=\count186 \c__xeCJK_CJK_node_dim=\dimen138 \c__xeCJK_CJK-space_node_dim=\dimen139 \c__xeCJK_default_node_dim=\dimen140 \c__xeCJK_default-space_node_dim=\dimen141 \c__xeCJK_CJK-widow_node_dim=\dimen142 \c__xeCJK_normalspace_node_dim=\dimen143 \l__xeCJK_ccglue_skip=\skip52 \l__xeCJK_ecglue_skip=\skip53 \l__xeCJK_punct_kern_skip=\skip54 \l__xeCJK_last_penalty_int=\count187 \l__xeCJK_last_bound_dim=\dimen144 \l__xeCJK_last_kern_dim=\dimen145 \l__xeCJK_widow_penalty_int=\count188 Package xtemplate Info: Declaring object type 'xeCJK/punctuation' taking 0 (xtemplate) argument(s) on line 2302. \l__xeCJK_fixed_punct_width_dim=\dimen146 \l__xeCJK_mixed_punct_width_dim=\dimen147 \l__xeCJK_middle_punct_width_dim=\dimen148 \l__xeCJK_fixed_margin_width_dim=\dimen149 \l__xeCJK_mixed_margin_width_dim=\dimen150 \l__xeCJK_middle_margin_width_dim=\dimen151 \l__xeCJK_bound_punct_width_dim=\dimen152 \l__xeCJK_bound_margin_width_dim=\dimen153 \l__xeCJK_margin_minimum_dim=\dimen154 \l__xeCJK_kerning_total_width_dim=\dimen155 \l__xeCJK_same_align_margin_dim=\dimen156 \l__xeCJK_different_align_margin_dim=\dimen157 \l__xeCJK_kerning_margin_width_dim=\dimen158 \l__xeCJK_kerning_margin_minimum_dim=\dimen159 \l__xeCJK_bound_dim=\dimen160 \l__xeCJK_reverse_bound_dim=\dimen161 \l__xeCJK_margin_dim=\dimen162 \l__xeCJK_minimum_bound_dim=\dimen163 \l__xeCJK_kerning_margin_dim=\dimen164 \g__xeCJK_family_int=\count189 \l__xeCJK_fam_int=\count190 \g__xeCJK_fam_allocation_int=\count191 \l__xeCJK_verb_case_int=\count192 \l__xeCJK_verb_exspace_skip=\skip55 (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/fontspec/fontspec.s ty Package: fontspec 2020/02/21 v2.7i Font selection for XeLaTeX and LuaLaTeX (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/fontspec/fontspec-x etex.sty Package: fontspec-xetex 2020/02/21 v2.7i Font selection for XeLaTeX and LuaLaTe X \l__fontspec_script_int=\count193 \l__fontspec_language_int=\count194 \l__fontspec_strnum_int=\count195 \l__fontspec_tmp_int=\count196 \l__fontspec_tmpa_int=\count197 \l__fontspec_tmpb_int=\count198 \l__fontspec_tmpc_int=\count199 \l__fontspec_em_int=\count266 \l__fontspec_emdef_int=\count267 \l__fontspec_strong_int=\count268 \l__fontspec_strongdef_int=\count269 \l__fontspec_tmpa_dim=\dimen165 \l__fontspec_tmpb_dim=\dimen166 \l__fontspec_tmpc_dim=\dimen167 (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/base/fontenc.sty Package: fontenc 2020/02/11 v2.0o Standard LaTeX package ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/fontspec/fontspec.c fg))) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/xelatex/xecjk/xeCJK .cfg File: xeCJK.cfg 2020/02/18 v3.8.2 Configuration file for xeCJK package )) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/xelatex/xecjk/xeCJKfntef. sty Package: xeCJKfntef 2020/02/18 v3.8.2 xeCJK font effect (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/generic/ulem/ulem.sty \UL@box=\box48 \UL@hyphenbox=\box49 \UL@skip=\skip56 \UL@hook=\toks15 \UL@height=\dimen168 \UL@pe=\count270 \UL@pixel=\dimen169 \ULC@box=\box50 Package: ulem 2019/11/18 \ULdepth=\dimen170 ) \l__xeCJK_space_skip=\skip57 \c__xeCJK_ulem-begin_node_dim=\dimen171 \c__xeCJK_null_box=\box51 \l__xeCJK_fntef_box=\box52 \l__xeCJK_under_symbol_box=\box53 \c__xeCJK_filll_skip=\skip58 ) \ccwd=\dimen172 \l__ctex_ccglue_skip=\skip59 ) \l__ctex_ziju_dim=\dimen173 (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/zhnumber/zhnumber.s ty Package: zhnumber 2019/04/07 v2.7 Typesetting numbers with Chinese glyphs \l__zhnum_scale_int=\count271 (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/zhnumber/zhnumber-u tf8.cfg File: zhnumber-utf8.cfg 2019/04/07 v2.7 Chinese numerals with UTF8 encoding )) \l__ctex_heading_skip=\skip60 (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/ctex/scheme/ctex-sc heme-chinese-article.def File: ctex-scheme-chinese-article.def 2019/05/29 v2.4.16 Chinese scheme for art icle (CTEX) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/ctex/config/ctex-na me-utf8.cfg File: ctex-name-utf8.cfg 2019/05/29 v2.4.16 Caption with encoding UTF8 (CTEX) )) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/ctex/ctex-c5size.cl o File: ctex-c5size.clo 2019/05/29 v2.4.16 c5size option (CTEX) ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/ctex/fontset/ctex-f ontset-windows.def File: ctex-fontset-windows.def 2019/05/29 v2.4.16 Windows fonts definition (CTE X) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/ctex/fontset/ctex-f ontset-windowsnew.def File: ctex-fontset-windowsnew.def 2019/05/29 v2.4.16 Windows fonts definition f or Vista or later version (CTEX) Package fontspec Info: Could not resolve font "KaiTi/B" (it probably doesn't (fontspec) exist). Package fontspec Info: Could not resolve font "SimHei/I" (it probably doesn't (fontspec) exist). Package fontspec Info: Could not resolve font "SimSun/BI" (it probably doesn't (fontspec) exist). Package fontspec Info: Font family 'SimSun(0)' created for font 'SimSun' with (fontspec) options (fontspec) [Script={CJK},BoldFont={SimHei},ItalicFont={KaiTi}]. (fontspec) (fontspec) This font family consists of the following NFSS (fontspec) series/shapes: (fontspec) (fontspec) - 'normal' (m/n) with NFSS spec.: (fontspec) <->"SimSun/OT:script=hani;language=dflt;" (fontspec) - 'small caps' (m/sc) with NFSS spec.: (fontspec) - 'bold' (b/n) with NFSS spec.: (fontspec) <->"SimHei/OT:script=hani;language=dflt;" (fontspec) - 'bold small caps' (b/sc) with NFSS spec.: (fontspec) - 'italic' (m/it) with NFSS spec.: (fontspec) <->"KaiTi/OT:script=hani;language=dflt;" (fontspec) - 'italic small caps' (m/scit) with NFSS spec.: ))) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/ctex/config/ctex.cf g File: ctex.cfg 2019/05/29 v2.4.16 Configuration file (CTEX) ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/lm/lmodern.sty Package: lmodern 2009/10/30 v1.6 Latin Modern Fonts LaTeX Font Info: Overwriting symbol font `operators' in version `normal' (Font) OT1/cmr/m/n --> OT1/lmr/m/n on input line 22. LaTeX Font Info: Overwriting symbol font `letters' in version `normal' (Font) OML/cmm/m/it --> OML/lmm/m/it on input line 23. LaTeX Font Info: Overwriting symbol font `symbols' in version `normal' (Font) OMS/cmsy/m/n --> OMS/lmsy/m/n on input line 24. LaTeX Font Info: Overwriting symbol font `largesymbols' in version `normal' (Font) OMX/cmex/m/n --> OMX/lmex/m/n on input line 25. LaTeX Font Info: Overwriting symbol font `operators' in version `bold' (Font) OT1/cmr/bx/n --> OT1/lmr/bx/n on input line 26. LaTeX Font Info: Overwriting symbol font `letters' in version `bold' (Font) OML/cmm/b/it --> OML/lmm/b/it on input line 27. LaTeX Font Info: Overwriting symbol font `symbols' in version `bold' (Font) OMS/cmsy/b/n --> OMS/lmsy/b/n on input line 28. LaTeX Font Info: Overwriting symbol font `largesymbols' in version `bold' (Font) OMX/cmex/m/n --> OMX/lmex/m/n on input line 29. LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `normal' (Font) OT1/cmr/bx/n --> OT1/lmr/bx/n on input line 31. LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `normal' (Font) OT1/cmss/m/n --> OT1/lmss/m/n on input line 32. LaTeX Font Info: Overwriting math alphabet `\mathit' in version `normal' (Font) OT1/cmr/m/it --> OT1/lmr/m/it on input line 33. LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `normal' (Font) OT1/cmtt/m/n --> OT1/lmtt/m/n on input line 34. LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `bold' (Font) OT1/cmr/bx/n --> OT1/lmr/bx/n on input line 35. LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `bold' (Font) OT1/cmss/bx/n --> OT1/lmss/bx/n on input line 36. LaTeX Font Info: Overwriting math alphabet `\mathit' in version `bold' (Font) OT1/cmr/bx/it --> OT1/lmr/bx/it on input line 37. LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `bold' (Font) OT1/cmtt/m/n --> OT1/lmtt/m/n on input line 38. ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/amsfonts/amssymb.st y Package: amssymb 2013/01/14 v3.01 AMS font symbols (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/amsfonts/amsfonts.s ty Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support \@emptytoks=\toks16 \symAMSa=\mathgroup4 \symAMSb=\mathgroup5 LaTeX Font Info: Redeclaring math symbol \hbar on input line 98. LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold' (Font) U/euf/m/n --> U/euf/b/n on input line 106. )) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/amsmath/amsmath.sty Package: amsmath 2020/01/20 v2.17e AMS math features \@mathmargin=\skip61 For additional information on amsmath, use the `?' option. (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/amsmath/amstext.sty Package: amstext 2000/06/29 v2.01 AMS text (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/amsmath/amsgen.sty File: amsgen.sty 1999/11/30 v2.0 generic functions \@emptytoks=\toks17 \ex@=\dimen174 )) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/amsmath/amsbsy.s ty Package: amsbsy 1999/11/29 v1.2d Bold Symbols \pmbraise@=\dimen175 ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/amsmath/amsopn.st y Package: amsopn 2016/03/08 v2.02 operator names ) \inf@bad=\count272 LaTeX Info: Redefining \frac on input line 227. \uproot@=\count273 \leftroot@=\count274 LaTeX Info: Redefining \overline on input line 389. \classnum@=\count275 \DOTSCASE@=\count276 LaTeX Info: Redefining \ldots on input line 486. LaTeX Info: Redefining \dots on input line 489. LaTeX Info: Redefining \cdots on input line 610. \Mathstrutbox@=\box54 \strutbox@=\box55 \big@size=\dimen176 LaTeX Font Info: Redeclaring font encoding OML on input line 733. LaTeX Font Info: Redeclaring font encoding OMS on input line 734. \macc@depth=\count277 \c@MaxMatrixCols=\count278 \dotsspace@=\muskip17 \c@parentequation=\count279 \dspbrk@lvl=\count280 \tag@help=\toks18 \row@=\count281 \column@=\count282 \maxfields@=\count283 \andhelp@=\toks19 \eqnshift@=\dimen177 \alignsep@=\dimen178 \tagshift@=\dimen179 \tagwidth@=\dimen180 \totwidth@=\dimen181 \lineht@=\dimen182 \@envbody=\toks20 \multlinegap=\skip62 \multlinetaggap=\skip63 \mathdisplay@stack=\toks21 LaTeX Info: Redefining \[ on input line 2859. LaTeX Info: Redefining \] on input line 2860. ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/generic/iftex/ifxetex.sty Package: ifxetex 2019/10/25 v0.7 ifxetex legacy package. Use iftex instead. (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/generic/iftex/iftex.sty Package: iftex 2019/11/07 v1.0c TeX engine tests )) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/generic/iftex/ifluatex.st y Package: ifluatex 2019/10/25 v1.5 ifluatex legacy package. Use iftex instead. ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/base/fixltx2e.sty Package: fixltx2e 2016/12/29 v2.1a fixes to LaTeX (obsolete) Applying: [2015/01/01] Old fixltx2e package on input line 46. Package fixltx2e Warning: fixltx2e is not required with releases after 2015 (fixltx2e) All fixes are now in the LaTeX kernel. (fixltx2e) See the latexrelease package for details. Already applied: [0000/00/00] Old fixltx2e package on input line 53. ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/xelatex/xltxtra/xltxtra.s ty Package: xltxtra 2018/12/31 v0.7 Improvements for the "XeLaTeX" format (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/realscripts/realscr ipts.sty Package: realscripts 2016/02/13 v0.3d Access OpenType subscripts and superscrip ts \subsupersep=\dimen183 ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/metalogo/metalogo.s ty Package: metalogo 2010/05/29 v0.12 Extended TeX logo macros (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/graphics/graphicx.s ty Package: graphicx 2019/11/30 v1.2a Enhanced LaTeX Graphics (DPC,SPQR) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/graphics/keyval.sty Package: keyval 2014/10/28 v1.15 key=value parser (DPC) \KV@toks@=\toks22 ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/graphics/graphics.s ty Package: graphics 2019/11/30 v1.4a Standard LaTeX Graphics (DPC,SPQR) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/graphics/trig.sty Package: trig 2016/01/03 v1.10 sin cos tan (DPC) ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/graphics-cfg/graphi cs.cfg File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration ) Package graphics Info: Driver file: xetex.def on input line 105. (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/graphics-def/xetex. def File: xetex.def 2017/06/24 v5.0h Graphics/color driver for xetex )) \Gin@req@height=\dimen184 \Gin@req@width=\dimen185 ) \xl@everylogo=\toks23 \xl@@everylogo=\toks24 LaTeX Info: Redefining \TeX on input line 193. LaTeX Info: Redefining \LaTeX on input line 202. LaTeX Info: Redefining \LaTeXe on input line 219. ) \l__xetex_show_hyphens_wrapping_box=\box56 \l__xetex_show_hyphens_temp_box=\box57 \l__xetex_show_hyphens_final_box=\box58 \g__xetex_show_hyphens_word_box=\box59 ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/xelatex/xunicode/xunicode .sty File: xunicode.sty 2011/09/09 v0.981 provides access to latin accents and many other characters in Unicode lower plane (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/tipa/t3enc.def File: t3enc.def 2001/12/31 T3 encoding Package fontspec Info: Could not resolve font "Microsoft YaHei Bold/I" (it (fontspec) probably doesn't exist). Package fontspec Info: Could not resolve font "Microsoft YaHei/I" (it probably (fontspec) doesn't exist). Package fontspec Info: Font family 'MicrosoftYaHei(0)' created for font (fontspec) 'Microsoft YaHei' with options (fontspec) [Script={CJK},BoldFont={* Bold}]. (fontspec) (fontspec) This font family consists of the following NFSS (fontspec) series/shapes: (fontspec) (fontspec) - 'normal' (m/n) with NFSS spec.: <->"Microsoft (fontspec) YaHei/OT:script=hani;language=dflt;" (fontspec) - 'small caps' (m/sc) with NFSS spec.: (fontspec) - 'bold' (b/n) with NFSS spec.: <->"Microsoft YaHei (fontspec) Bold/OT:script=hani;language=dflt;" (fontspec) - 'bold small caps' (b/sc) with NFSS spec.: (fontspec) - 'bold italic' (b/it) with NFSS spec.: <->"Microsoft (fontspec) YaHei/BI/OT:script=hani;language=dflt;" (fontspec) - 'bold italic small caps' (b/scit) with NFSS spec.: ) \tipaTiiicode=\count284 \tipasavetokens=\toks25 \tipachecktokens=\toks26 ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/upquote/upquote.sty Package: upquote 2012/04/19 v1.3 upright-quote and grave-accent glyphs in verba tim (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/base/textcomp.sty Package: textcomp 2020/02/02 v2.0n Standard LaTeX package )) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/hyperref/hyperref.s ty Package: hyperref 2020/01/14 v7.00d Hypertext links for LaTeX (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/generic/ltxcmds/ltxcmds.s ty Package: ltxcmds 2019/12/15 v1.24 LaTeX kernel commands for general use (HO) ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/pdftexcmds/pdftexcm ds.sty Package: pdftexcmds 2019/11/24 v0.31 Utility functions of pdfTeX for LuaTeX (HO ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/generic/infwarerr/infware rr.sty Package: infwarerr 2019/12/03 v1.5 Providing info/warning/error messages (HO) ) Package pdftexcmds Info: \pdf@primitive is available. Package pdftexcmds Info: \pdf@ifprimitive is available. Package pdftexcmds Info: \pdfdraftmode not found. ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/generic/kvsetkeys/kvsetke ys.sty Package: kvsetkeys 2019/12/15 v1.18 Key value parser (HO) ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/generic/kvdefinekeys/kvde finekeys.sty Package: kvdefinekeys 2019-12-19 v1.6 Define keys (HO) ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/generic/pdfescape/pdfesca pe.sty Package: pdfescape 2019/12/09 v1.15 Implements pdfTeX's escape features (HO) ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/hycolor/hycolor.sty Package: hycolor 2020-01-27 v1.10 Color options for hyperref/bookmark (HO) ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/letltxmacro/letltxm acro.sty Package: letltxmacro 2019/12/03 v1.6 Let assignment for LaTeX macros (HO) ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/auxhook/auxhook.sty Package: auxhook 2019-12-17 v1.6 Hooks for auxiliary files (HO) ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/kvoptions/kvoptions .sty Package: kvoptions 2019/11/29 v3.13 Key value format for package options (HO) ) \@linkdim=\dimen186 \Hy@linkcounter=\count285 \Hy@pagecounter=\count286 (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/hyperref/pd1enc.def File: pd1enc.def 2020/01/14 v7.00d Hyperref: PDFDocEncoding definition (HO) ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/generic/intcalc/intcalc.s ty Package: intcalc 2019/12/15 v1.3 Expandable calculations with integers (HO) ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/generic/etexcmds/etexcmds .sty Package: etexcmds 2019/12/15 v1.7 Avoid name clashes with e-TeX commands (HO) ) \Hy@SavedSpaceFactor=\count287 Package hyperref Info: Option `unicode' set `true' on input line 4421. (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/hyperref/puenc.def File: puenc.def 2020/01/14 v7.00d Hyperref: PDF Unicode definition (HO) ) Package hyperref Info: Option `setpagesize' set `false' on input line 4421. Package hyperref Info: Option `unicode' set `false' on input line 4421. Package hyperref Info: Hyper figures OFF on input line 4547. Package hyperref Info: Link nesting OFF on input line 4552. Package hyperref Info: Hyper index ON on input line 4555. Package hyperref Info: Plain pages OFF on input line 4562. Package hyperref Info: Backreferencing OFF on input line 4567. Package hyperref Info: Implicit mode ON; LaTeX internals redefined. Package hyperref Info: Bookmarks ON on input line 4800. \c@Hy@tempcnt=\count288 (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/url/url.sty \Urlmuskip=\muskip18 Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc. ) LaTeX Info: Redefining \url on input line 5159. \XeTeXLinkMargin=\dimen187 (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/generic/bitset/bitset.sty Package: bitset 2019/12/09 v1.3 Handle bit-vector datatype (HO) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/generic/bigintcalc/bigint calc.sty Package: bigintcalc 2019/12/15 v1.5 Expandable calculations on big integers (HO ) )) \Fld@menulength=\count289 \Field@Width=\dimen188 \Fld@charsize=\dimen189 Package hyperref Info: Hyper figures OFF on input line 6430. Package hyperref Info: Link nesting OFF on input line 6435. Package hyperref Info: Hyper index ON on input line 6438. Package hyperref Info: backreferencing OFF on input line 6445. Package hyperref Info: Link coloring OFF on input line 6450. Package hyperref Info: Link coloring with OCG OFF on input line 6455. Package hyperref Info: PDF/A mode OFF on input line 6460. LaTeX Info: Redefining \ref on input line 6500. LaTeX Info: Redefining \pageref on input line 6504. (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/generic/atbegshi/atbegshi .sty Package: atbegshi 2019/12/05 v1.19 At begin shipout hook (HO) ) \Hy@abspage=\count290 \c@Item=\count291 \c@Hfootnote=\count292 ) Package hyperref Info: Driver: hxetex. (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/hyperref/hxetex.def File: hxetex.def 2020/01/14 v7.00d Hyperref driver for XeTeX (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/generic/stringenc/stringe nc.sty Package: stringenc 2019/11/29 v1.12 Convert strings between diff. encodings (HO ) ) \pdfm@box=\box60 \c@Hy@AnnotLevel=\count293 \HyField@AnnotCount=\count294 \Fld@listcount=\count295 \c@bookmark@seq@number=\count296 (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/rerunfilecheck/reru nfilecheck.sty Package: rerunfilecheck 2019/12/05 v1.9 Rerun checks for auxiliary files (HO) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/atveryend/atveryend .sty Package: atveryend 2019-12-11 v1.11 Hooks at the very end of document (HO) Package atveryend Info: \enddocument detected (standard20110627). ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/generic/uniquecounter/uni quecounter.sty Package: uniquecounter 2019/12/15 v1.4 Provide unlimited unique counter (HO) ) Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2 86. ) \Hy@SectionHShift=\skip64 ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/graphics/color.st y Package: color 2019/11/23 v1.2a Standard LaTeX Color (DPC) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/graphics-cfg/color. cfg File: color.cfg 2016/01/02 v1.6 sample color configuration ) Package color Info: Driver file: xetex.def on input line 147. (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/graphics/dvipsnam.d ef File: dvipsnam.def 2016/06/17 v3.0m Driver-dependent file (DPC,SPQR) )) Package hyperref Info: Option `breaklinks' set `true' on input line 41. Package hyperref Warning: Option `bookmarks' has already been used, (hyperref) setting the option has no effect on input line 41. (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/generic/stringenc/se-asci i-print.def File: se-ascii-print.def 2019/11/29 v1.12 stringenc: Printable ASCII characters ) Package hyperref Info: Option `colorlinks' set `true' on input line 41. (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/fancyvrb/fancyvrb.s ty Package: fancyvrb 2020/01/13 v3.5 verbatim text (tvz,hv) \FV@CodeLineNo=\count297 \FV@InFile=\read2 \FV@TabBox=\box61 \c@FancyVerbLine=\count298 \FV@StepNumber=\count299 \FV@OutFile=\write3 ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/framed/framed.sty Package: framed 2011/10/22 v 0.96: framed or shaded text with page breaks \OuterFrameSep=\skip65 \fb@frw=\dimen190 \fb@frh=\dimen191 \FrameRule=\dimen192 \FrameSep=\dimen193 ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/grffile/grffile.sty Package: grffile 2019/11/11 v2.1 Extended file name support for graphics (legac y) Package grffile Info: This package is an empty stub for compatibility on input line 40. ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/xelatex/xecjk/xunicode-ad don.sty Package: xunicode-addon 2020/02/18 v3.8.2 addon file for xunicode \l__xunadd_tmp_coffin=\box62 \l__xunadd_circle_coffin=\box63 \l_xunadd_slot_int=\count300 ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/xelatex/xunicode/xunicode .sty File: xunicode.sty 2011/09/09 v0.981 provides access to latin accents and many other characters in Unicode lower plane *** Reloading Xunicode for encoding 'TU' *** ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/xelatex/xecjk/xunicode-ex tra.def File: xunicode-extra.def 2020/02/18 v3.8.2 extra definition for xunicode ) (./facet.aux) \openout1 = `facet.aux'. LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 114. LaTeX Font Info: ... okay on input line 114. LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 114. LaTeX Font Info: ... okay on input line 114. LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 114. LaTeX Font Info: ... okay on input line 114. LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 114. LaTeX Font Info: ... okay on input line 114. LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 114. LaTeX Font Info: ... okay on input line 114. LaTeX Font Info: Checking defaults for TU/lmr/m/n on input line 114. LaTeX Font Info: ... okay on input line 114. LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 114. LaTeX Font Info: ... okay on input line 114. LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 114. LaTeX Font Info: ... okay on input line 114. LaTeX Font Info: Checking defaults for T3/cmr/m/n on input line 114. LaTeX Font Info: Trying to load font information for T3+cmr on input line 11 4. (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/tipa/t3cmr.fd File: t3cmr.fd 2001/12/31 TIPA font definitions ) LaTeX Font Info: ... okay on input line 114. LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 114. LaTeX Font Info: ... okay on input line 114. LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 114. LaTeX Font Info: ... okay on input line 114. ABD: EverySelectfont initializing macros LaTeX Info: Redefining \selectfont on input line 114. \AtBeginShipoutBox=\box64 Package hyperref Info: Link coloring ON on input line 114. (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/hyperref/nameref.st y Package: nameref 2019/09/16 v2.46 Cross-referencing by name of section (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/refcount/refcount.s ty Package: refcount 2019/12/15 v3.6 Data extraction from label references (HO) ) (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/generic/gettitlestring/ge ttitlestring.sty Package: gettitlestring 2019/12/15 v1.6 Cleanup title references (HO) ) \c@section@level=\count301 ) LaTeX Info: Redefining \ref on input line 114. LaTeX Info: Redefining \pageref on input line 114. LaTeX Info: Redefining \nameref on input line 114. (./facet.out) (./facet.out) \@outlinefile=\write4 \openout4 = `facet.out'. LaTeX Font Info: Trying to load font information for OT1+lmr on input line 1 16. (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/lm/ot1lmr.fd File: ot1lmr.fd 2009/10/30 v1.6 Font defs for Latin Modern ) LaTeX Font Info: Trying to load font information for OML+lmm on input line 1 16. (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/lm/omllmm.fd File: omllmm.fd 2009/10/30 v1.6 Font defs for Latin Modern ) LaTeX Font Info: Trying to load font information for OMS+lmsy on input line 116. (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/lm/omslmsy.fd File: omslmsy.fd 2009/10/30 v1.6 Font defs for Latin Modern ) LaTeX Font Info: Trying to load font information for OMX+lmex on input line 116. (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/lm/omxlmex.fd File: omxlmex.fd 2009/10/30 v1.6 Font defs for Latin Modern ) LaTeX Font Info: External font `lmex10' loaded for size (Font) <12.045> on input line 116. LaTeX Font Info: External font `lmex10' loaded for size (Font) <8> on input line 116. LaTeX Font Info: External font `lmex10' loaded for size (Font) <6> on input line 116. LaTeX Font Info: Trying to load font information for U+msa on input line 116 . (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/amsfonts/umsa.fd File: umsa.fd 2013/01/14 v3.01 AMS symbols A ) LaTeX Font Info: Trying to load font information for U+msb on input line 116 . (c:/Users/DELL/AppData/Roaming/TinyTeX/texmf-dist/tex/latex/amsfonts/umsb.fd File: umsb.fd 2013/01/14 v3.01 AMS symbols B ) (./facet.toc LaTeX Font Info: External font `lmex10' loaded for size (Font) <10.53937> on input line 4. LaTeX Font Info: External font `lmex10' loaded for size (Font) <7> on input line 4. LaTeX Font Info: External font `lmex10' loaded for size (Font) <5> on input line 4. ) \tf@toc=\write5 \openout5 = `facet.toc'. [1 ] Package fontspec Info: FangSong scale = 0.976420540271054. Package fontspec Info: Could not resolve font "FangSong/BI" (it probably (fontspec) doesn't exist). Package fontspec Info: Could not resolve font "FangSong/B" (it probably (fontspec) doesn't exist). Package fontspec Info: Could not resolve font "FangSong/I" (it probably (fontspec) doesn't exist). Package fontspec Info: FangSong scale = 0.976420540271054. Package fontspec Info: Font family 'FangSong(0)' created for font 'FangSong' (fontspec) with options (fontspec) [Mapping=tex-text,Scale=MatchLowercase,Script={CJK}]. (fontspec) (fontspec) This font family consists of the following NFSS (fontspec) series/shapes: (fontspec) (fontspec) - 'normal' (m/n) with NFSS spec.: (fontspec) <->s*[0.976420540271054]"FangSong/OT:script=hani;languag e=dflt;mapping=tex-text;" (fontspec) - 'small caps' (m/sc) with NFSS spec.: LaTeX Font Info: Font shape `TU/FangSong(0)/m/n' will be (Font) scaled to size 10.2909pt on input line 133. LaTeX Font Info: Font shape `TU/lmtt/bx/n' in size <10.53937> not available (Font) Font shape `TU/lmtt/b/n' tried instead on input line 134. Overfull \hbox (108.71994pt too wide) in paragraph at lines 158--158 []\TU/lmtt/m/n/10.53937 ## manufacturer model displ year cyl trans dr v cty hwy fl class[] [] Overfull \hbox (108.71997pt too wide) in paragraph at lines 158--158 []\TU/lmtt/m/n/10.53937 ## [] [] Overfull \hbox (114.25316pt too wide) in paragraph at lines 158--158 []\TU/lmtt/m/n/10.53937 ## 1 audi a4 1.8 1999 4 auto(l5) f 18 29 p compa~[] [] Overfull \hbox (114.25314pt too wide) in paragraph at lines 158--158 []\TU/lmtt/m/n/10.53937 ## 2 audi a4 1.8 1999 4 manual(m5) f 21 29 p compa~[] [] Overfull \hbox (114.25316pt too wide) in paragraph at lines 158--158 []\TU/lmtt/m/n/10.53937 ## 3 audi a4 2 2008 4 manual(m6) f 20 31 p compa~[] [] Overfull \hbox (114.25317pt too wide) in paragraph at lines 158--158 []\TU/lmtt/m/n/10.53937 ## 4 audi a4 2 2008 4 auto(av) f 21 30 p compa~[] [] Overfull \hbox (114.25316pt too wide) in paragraph at lines 158--158 []\TU/lmtt/m/n/10.53937 ## 5 audi a4 2.8 1999 6 auto(l5) f 16 26 p compa~[] [] Overfull \hbox (114.25314pt too wide) in paragraph at lines 158--158 []\TU/lmtt/m/n/10.53937 ## 6 audi a4 2.8 1999 6 manual(m5) f 18 26 p compa~[] [] LaTeX Font Warning: Font shape `TU/FangSong(0)/m/it' undefined (Font) using `TU/FangSong(0)/m/n' instead on input line 162. File: facet_files/figure-latex/unnamed-chunk-1-1.pdf Graphic file (type pdf) Overfull \hbox (21.07573pt too wide) in paragraph at lines 168--169 [][] [] LaTeX Font Info: Font shape `TU/SimSun(0)/m/sl' in size <10.53937> not avail able (Font) Font shape `TU/SimSun(0)/m/it' tried instead on input line 170. [2] File: facet_files/figure-latex/unnamed-chunk-1-2.pdf Graphic file (type pdf) Overfull \hbox (21.07573pt too wide) in paragraph at lines 178--179 [][] [] File: facet_files/figure-latex/unnamed-chunk-2-1.pdf Graphic file (type pdf) Overfull \hbox (21.07573pt too wide) in paragraph at lines 189--190 [][] [] [3] [4] File: facet_files/figure-latex/unnamed-chunk-4-1.pdf Graphic file (type pdf) Overfull \hbox (21.07573pt too wide) in paragraph at lines 239--240 [][] [] [5] File: facet_files/figure-latex/unnamed-chunk-6-1.pdf Graphic file (type pdf) Overfull \hbox (21.07573pt too wide) in paragraph at lines 267--268 [][] [] [6] File: facet_files/figure-latex/unnamed-chunk-7-1.pdf Graphic file (type pdf) Overfull \hbox (21.07573pt too wide) in paragraph at lines 287--288 [][] [] Overfull \hbox (56.68939pt too wide) in paragraph at lines 294--295 []\TU/lmr/m/n/10.53937 facet_grid() \TU/SimSun(0)/m/n/10.53937 可 以 转 换 为 \TU/lm r/m/n/10.53937 facet_wrap \TU/SimSun(0)/m/n/10.53937 图,| 只 需 改 为 \TU/lmr/m/n/1 0.53937 facet_grid(drv$[]$cyl)\TU/SimSun(0)/m/n/10.53937 。| [] File: facet_files/figure-latex/unnamed-chunk-8-1.pdf Graphic file (type pdf) Overfull \hbox (21.07573pt too wide) in paragraph at lines 305--306 [][] [] [7] File: facet_files/figure-latex/unnamed-chunk-8-2.pdf Graphic file (type pdf) Overfull \hbox (21.07573pt too wide) in paragraph at lines 315--316 [][] [] [8] File: facet_files/figure-latex/unnamed-chunk-9-1.pdf Graphic file (type pdf) Overfull \hbox (21.07573pt too wide) in paragraph at lines 328--329 [][] [] File: facet_files/figure-latex/unnamed-chunk-10-1.pdf Graphic file (type pdf) Overfull \hbox (21.07573pt too wide) in paragraph at lines 350--351 [][] [] [9] Package atveryend Info: Empty hook `BeforeClearDocument' on input line 360. [10] Package atveryend Info: Empty hook `AfterLastShipout' on input line 360. (./facet.aux) Package atveryend Info: Empty hook `AtVeryEndDocument' on input line 360. Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 360. Package rerunfilecheck Info: File `facet.out' has not changed. (rerunfilecheck) Checksum: E7EEAF92712EBD086E349EC0BCF313EC;359. LaTeX Font Warning: Some font shapes were not available, defaults substituted. Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 360. ) Here is how much of TeX's memory you used: 21542 strings out of 481765 433426 string characters out of 5934263 672163 words of memory out of 5000000 38189 multiletter control sequences out of 15000+600000 557439 words of font info for 100 fonts, out of 8000000 for 9000 14 hyphenation exceptions out of 8191 55i,6n,116p,384b,600s stack positions out of 5000i,500n,10000p,200000b,80000s Output written on facet.pdf (10 pages). ================================================ FILE: 2020年/2020.08.15分面/facet.rmd ================================================ --- title: "分面|一页多图" date: 2020-08-15 author: - 庄闪闪 documentclass: ctexart output: rticles::ctex: fig_caption: yes number_sections: yes toc: yes classoption: "hyperref," --- # 前言 双变量数据可视化可能对于我们比较简单, 但是如果变量是三个或者更多,怎么在一幅图一起显示呢?今天我们就来讨论这个问题,解决方案有两种。 # 使用图形属性 **使用图形属性**,比如说:散点图点的形状/透明度/颜色用第三个属性表示。 ```{r} library(ggplot2) head(mpg) #散点图的点的形状表示第三个属性(离散) ggplot(data=mpg)+ geom_point(mapping = aes(x=displ,y=cty,shape=as.factor(cyl)),size=2,color='skyblue') #散点图点的透明度表示第三个属性 ggplot(data=mpg)+ geom_point(mapping = aes(x=displ,y=cty,alpha=cyl),size=5,color='purple') ``` `geom_point()`中可以改变的参数alpha,colour,fill,group,shape,size,stroke(边缘的厚度)。所以我们还可以通过其他参数来引进更多的属性,但是越多图就显得越复杂。看下面这个图,但是可读性不是很高。 ```{r} ggplot(data=mpg)+ geom_point(mapping = aes(x=displ,y=cty,shape=drv,color=fl,alpha=cyl), size=2) ``` # 分面 我们可以将图片按照第三个属性进行**分面**处理。ggplot2的分面有两种方式,分别使用 facet_wrap 或 facet_grid 函数。 ## facet_wrap() 当想通过单个变量进行分面,则可以使用函数`facet_wrap()`其第一个参数是一个公式,创建公式的方式是在~符号后面加一个变量名,并且该变量应该是离散的。facet_wrap的参数如下 ```{r eval=FALSE, include=TRUE} facet_wrap(facets, nrow = NULL, ncol = NULL, scales = "fixed", shrink = TRUE, as.table = TRUE, drop = TRUE) ``` facets:分面参数如 ~cut,表示用 cut 变量进行数据分类 nrow:绘制图形的行数 ncol:绘制图形的列数,一般nrow/ncol只设定一个即可 scales:坐标刻度的范围,可以设定四种类型。fixed 表示所有小图均使用统一坐标范围;free表示每个小图按照各自数据范围自由调整坐标刻度范围;free_x为自由调整x轴刻度范围;free_y为自由调整y轴刻度范围。 shrinks:也和坐标轴刻度有关,如果为TRUE(默认值)则按统计后的数据调整刻度范围,否则按统计前的数据设定坐标。 as.table:和小图排列顺序有关的选项。如果为TRUE(默认)则按表格方式排列,即最大值(指分组level值)排在表格最后即右下角,否则排在左上角。 drop:是否丢弃没有数据的分组,如果为TRUE(默认),则空数据组不绘图。 strip.position: 条子位置,默认为"top",可改为bottom", "left", "right" 具体例子如下: x轴是displ,y轴是hwy,用class(离散,7个分类)进行分面。 ```{r} ggplot(data=mpg)+ geom_point(mapping = aes(x=displ,y=hwy))+ facet_wrap(~class,nrow = 2) ``` ## facet_grid() 如果想通过两个变量对图进行分面,则使用`facet_grid()`。这个函数第一个参数也是公式,但该公式包含由~隔开的两个变量。 ```{r eval=FALSE, include=TRUE} facet_grid(facets, margins = FALSE, scales = "fixed", space = "fixed", shrink = TRUE, labeller = "label_value", as.table = TRUE, drop = TRUE) ``` 和facet_wrap比较,除不用设置ncol和nrow外(facets公式已经包含)外还有几个参数不同: margins:这不是设定图形边界的参数。它是指用于分面的包含每个变量元素所有数据的数据组。很好用的参数! 具体例子如下:用drv与cyl变量进行分面,x轴方向是cyl,y轴方向是drv的值。注意的是俩都是分类型变量。 ```{r} ggplot(data=mpg)+ geom_point(mapping = aes(x=displ,y=hwy))+ facet_grid(drv~cyl) ``` # 思考及拓展 1. 如果使用连续变量进行分面,得到的图会非常的多,每个数值分一次面,可读性很差,不建议使用该方法。 2. 使用`facet_grid(drv~cyl)`生成的图中,空白单元的意义说明drv与cyl在该单元没有关系。以下代码可以看出两者之间的关系。 ```{r} ggplot(data=mpg)+ geom_point(mapping = aes(drv,cyl)) ``` 3. facet_grid()可以转换为facet_wrap图,只需改为facet_grid(drv~.)或facet_grid(.~cyl)。 ```{r} ggplot(data=mpg)+ geom_point(mapping = aes(x=displ,y=hwy))+ facet_grid(drv~.) ggplot(data=mpg)+ geom_point(mapping = aes(x=displ,y=hwy))+ facet_grid(.~cyl) ``` 4.要在每个面板中重复相同的数据,只需构造一个不包含faceting变量的数据框架。 ```{r} ggplot(mpg, aes(displ, hwy)) + geom_point(data = transform(mpg, class = NULL), colour = "grey85") + geom_point(color='purple') + facet_wrap(~class) ``` 5. 去除条子框以及改变条子位置 加入参数:strip.position = "top"(默认),可改为其他(见上面参数详解)并加入theme将strip.placement="outside"就可以去除条子的框了 ```{r} ggplot(economics_long, aes(date, value)) + geom_line() + facet_wrap(vars(variable), scales = "free_y", nrow = 2, strip.position = "top") + theme(strip.background = element_blank(), strip.placement = "outside") ``` # 参考资料{-} [ggplot2作图详解4:分面(faceting)](https://blog.csdn.net/u014801157/article/details/24372507) [R数据科学](R数据科学.pdf) ================================================ FILE: 2020年/2020.08.23好玩的图/fun.r ================================================ # 有趣的图===== # 1.画爱心蛋糕====== require(grid) require(gridExtra) require(yyplot) library(devtools) #install_github("GuangchuangYu/yyplot") require(ggplot2) t <- seq(0,2*pi, by=0.2) x <- 16*sin(t)^3 y <- 13*cos(t) - 5*cos(2*t) - 2*cos(3*t) - cos(4*t) d <- data.frame(x=x, y=y) ggplot(d, aes(x, y)) + geom_cake(size=0.1) # 2.构建自己的二维码,只要输入链接即可========== require(ggplot2) require(ggimage) require(yyplot) ggqrcode("https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzI1NjUwMjQxMQ==&scene=124#wechat_redirect") #自己公众号 #表白用======= ggqrcode('I miss you!') d <- data.frame(x=1, y=1, img="C:/Users/DELL/Desktop/avatar.jpg") p <- ggplot(d, aes(x,y)) + geom_image(aes(image=img), size=Inf) + theme_void() p2 <- ggqrcode("http://mp.weixin.qq.com/s/oLgpTGdQgcka-OD757_3lA", "blue", alpha=.8) p + geom_subview(p2, width=Inf, height=Inf, x=1, y=1) pg <- ggqrcode("https://mp.weixin.qq.com/s/tposUJYrPuRnptXyNX03mA") d <- data.frame(x=15, y=15, img="C:/Users/DELL/Desktop/avatar.jpg") pg + geom_image(aes(x,y, image=img), data=d, size=.2) geom_emoji("heart_eyes" ) ggplot() + geom_emoji("duck") + theme_void() require(ggplot2) require(magick) require(purrr) x <- search_emoji("heart") plot_heart=function(x) { p = ggplot() + geom_emoji(x) o = paste0(x, ".png") ggsave(o, p, width=5, height=5) o } x %>% map(plot_heart) %>% map(image_read) %>% image_join() %>% image_animate(fps=1) %>% image_write("heart.gif") ================================================ FILE: 2020年/2020.08.23好玩的图/readme.txt ================================================ ================================================ FILE: 2020年/2020.08.25马赛克/马赛克.html ================================================ 马赛克图

记得安装prettydoc包,html模板在该包渲染而成。

1.前言

马赛克图(mosaic plot),显示分类数据中一对变量之间的关系,原理类似双向的100%堆叠式条形图,但其中所有条形在数值/标尺轴上具有相等长度,并会被划分成段。可以通过这两个变量来检测类别与其子类别之间的关系。

主要优点

马赛克图能按行或按列展示多个类别的比较关系。

主要缺点

难以阅读,特别是当含有大量分段的时候。此外,我们也很难准确地对每个分段进行比较,因为它们并非沿着共同基线排列在一起。

适用

马赛克图比较适合提供数据概览。

注意

非坐标轴非均匀的马赛克图也是统计学领域标准的马赛克图,一个非均匀的马赛克图包含以下构成元素:①非均匀的分类坐标轴;②面积、颜色均有含义的矩形块;③图例。对于非均匀的马赛克图,关注的数据维度非常多,一般的用户很难直观理解,在多数情况下可以被拆解成多个不同的图表,以下我们会对其进行绘制。

2.数据介绍

数据构建代码来源《R数据可视化之美》,任意拟定一个数据框。并用melt()函数将数据转化成以下结果:

## 'data.frame':    16 obs. of  3 variables:
##  $ segment : chr  "A" "B" "C" "D" ...
##  $ variable: Factor w/ 4 levels "Alpha","Beta",..: 1 1 1 1 2 2 2 2 3 3 ...
##  $ value   : num  2400 1200 600 250 1000 900 600 250 400 600 ...

计算出每行的最大,最小值,并计算每行各数的百分比。ddply()对data.frame分组计算,并利用join()函数进行两个表格连接。

## 'data.frame':    16 obs. of  10 variables:
##  $ segment   : chr  "A" "B" "C" "D" ...
##  $ variable  : Factor w/ 4 levels "Alpha","Beta",..: 1 1 1 1 2 2 2 2 3 3 ...
##  $ value     : num  2400 1200 600 250 1000 900 600 250 400 600 ...
##  $ xmin      : num  0 40 70 90 0 40 70 90 0 40 ...
##  $ xmax      : num  40 70 90 100 40 70 90 100 40 70 ...
##  $ percentage: num  60 40 30 25 25 30 30 25 10 20 ...
##  $ ymax      : num  60 40 30 25 85 70 60 50 95 90 ...
##  $ ymin      : num  0 0 0 0 60 40 30 25 85 70 ...
##  $ xtext     : num  20 55 80 95 20 55 80 95 20 55 ...
##  $ ytext     : num  30 20 15 12.5 72.5 55 45 37.5 90 80 ...

2.方法

绘制马赛克图可以使用ggplot2包的geom_rect()函数、ggmosaic包的geom_mosai()函数、graphics包的mosaicplot()函数,或者vcd包的mosaic()函数绘制马赛克图。接下来对他们进行一一实现。

2.2 vcd包的mosaic()函数

用该函数,我们就不用前面那么复杂的数据集进行绘制了,只要使用xtabs转换成以下数据格式即可,方便简单。

## Warning: package 'vcd' was built under R version 4.0.3
## Loading required package: grid

2.3 graphics包的mosaicplot()函数

该方法和上面类似,掉包就行,数据类型与上面相同。

## Warning: package 'wesanderson' was built under R version 4.0.3

参考

  1. 《R数据可视化之美》

  2. https://blog.csdn.net/tobeyourlover/article/details/52704333?%3E


欢迎关注我的公众号点赞,在看,收藏~~~

================================================ FILE: 2020年/2020.08.25马赛克/马赛克.rmd ================================================ --- title: "马赛克图" author: - 庄亮亮 date: "2020/11/10" output: prettydoc::html_pretty: theme: cayman highlight: github --- 记得安装prettydoc包,html模板在该包渲染而成。 ## 1.前言 **马赛克图**(mosaic plot),显示分类数据中一对变量之间的关系,原理类似双向的100%堆叠式条形图,但其中所有条形在数值/标尺轴上具有相等长度,并会被划分成段。可以通过这两个变量来检测类别与其子类别之间的关系。 ### 主要优点 马赛克图能按行或按列展示多个类别的比较关系。 ### 主要缺点 难以阅读,特别是当含有大量分段的时候。此外,我们也很难准确地对每个分段进行比较,因为它们并非沿着共同基线排列在一起。 ### 适用 马赛克图比较适合提供数据概览。 ### 注意 **非坐标轴非均匀的马赛克图**也是统计学领域标准的马赛克图,一个非均匀的马赛克图包含以下构成元素:①非均匀的分类坐标轴;②面积、颜色均有含义的矩形块;③图例。对于非均匀的马赛克图,关注的数据维度非常多,一般的用户很难直观理解,在多数情况下可以被拆解成多个不同的图表,以下我们会对其进行绘制。 ## 2.数据介绍 数据构建代码来源《R数据可视化之美》,任意拟定一个数据框。并用melt()函数将数据转化成以下结果: ```{r} library(ggplot2) library(RColorBrewer) library(reshape2) #提供melt()函数 library(plyr) #提供ddply()函数,join()函数 df <- data.frame(segment = c("A", "B", "C","D"),Alpha = c(2400 ,1200, 600 ,250), Beta = c(1000 ,900, 600, 250), Gamma = c(400, 600 ,400, 250), Delta = c(200, 300 ,400, 250)) melt_df<-melt(df,id="segment") str(melt_df) ``` 计算出每行的最大,最小值,并计算每行各数的百分比。ddply()对data.frame分组计算,并利用join()函数进行两个表格连接。 ```{r} segpct<-rowSums(df[,2:ncol(df)]) for (i in 1:nrow(df)){ for (j in 2:ncol(df)){ df[i,j]<-df[i,j]/segpct[i]*100 #将数字转换成百分比 } } segpct<-segpct/sum(segpct)*100 df$xmax <- cumsum(segpct) df$xmin <- (df$xmax - segpct) dfm <- melt(df, id = c("segment", "xmin", "xmax"),value.name="percentage") colnames(dfm)[ncol(dfm)]<-"percentage" #ddply()函数使用自定义统计函数,对data.frame分组计算 dfm1 <- ddply(dfm, .(segment), transform, ymax = cumsum(percentage)) dfm1 <- ddply(dfm1, .(segment), transform,ymin = ymax - percentage) dfm1$xtext <- with(dfm1, xmin + (xmax - xmin)/2) dfm1$ytext <- with(dfm1, ymin + (ymax - ymin)/2) #join()函数,连接两个表格data.frame dfm2<-join(melt_df, dfm1, by = c("segment", "variable"), type = "left", match = "all") str(dfm2) ``` ## 2.方法 绘制马赛克图可以使用ggplot2包的geom_rect()函数、ggmosaic包的geom_mosai()函数、graphics包的mosaicplot()函数,或者vcd包的mosaic()函数绘制马赛克图。接下来对他们进行一一实现。 ### 2.1 ggplot2包的geom_rect()函数 这个方法比较复杂,图层一层一层叠加得到的,不过灵活性比较强,可根据自己喜好进行修改。 ```{r} ggplot()+ geom_rect(aes(ymin = ymin, ymax = ymax, xmin = xmin, xmax = xmax, fill = variable),dfm2,colour = "black") + geom_text(aes(x = xtext, y = ytext, label = value),dfm2 ,size = 4)+ geom_text(aes(x = xtext, y = 103, label = paste("Seg ", segment)),dfm2 ,size = 4)+ geom_text(aes(x = 102, y = seq(12.5,100,25), label = c("Alpha","Beta","Gamma","Delta")), size = 4,hjust = 0)+ scale_x_continuous(breaks=seq(0,100,25),limits=c(0,110))+ theme(panel.background=element_rect(fill="white",colour=NA), panel.grid.major = element_line(colour = "grey60",size=.25,linetype ="dotted" ), panel.grid.minor = element_line(colour = "grey60",size=.25,linetype ="dotted" ), text=element_text(size=15), legend.position="none") ``` **图形解释:**这个马赛克图,从A这列纵向看可以看出各个指标(Delta,Gamma等)的占比情况,从横向来看,不同变量(A,B等)的宽度代表该变量占所有数据的占比情况,越宽说明该变量数据总和越大。 ### 2.2 vcd包的mosaic()函数 用该函数,我们就不用前面那么复杂的数据集进行绘制了,只要使用xtabs转换成以下数据格式即可,方便简单。 ```{r} library(vcd) table<-xtabs(value ~variable+segment, melt_df) mosaic( ~segment+variable,table,shade=TRUE,legend=TRUE,color=TRUE) ``` ### 2.3 graphics包的mosaicplot()函数 该方法和上面类似,掉包就行,数据类型与上面相同。 ```{r} library(graphics) library(wesanderson) #颜色提取 mosaicplot( ~segment+variable,table, color = wes_palette("GrandBudapest1"),main = '') ``` ## 参考 1. 《R数据可视化之美》 2. https://blog.csdn.net/tobeyourlover/article/details/52704333?%3E ![](https://mmbiz.qpic.cn/mmbiz_jpg/MIcgkkEyTHgfkvXafZE9scXp4icvdcNFyic0z7THajQBAyLNRiau3CKnZ3L9Y9K2YXObhaiblBm0Jbnicaq9lW3pz4g/640?wx_fmt=jpeg) 欢迎**关注**我的**公众号**,**点赞,在看,收藏\~\~\~** ================================================ FILE: 2020年/2020.08.26混合多个图形/混合图.html ================================================ 混合图

记得安装prettydoc包,html模板在该包渲染而成。


欢迎关注我的公众号点赞,在看,收藏~~~

创作不易!感谢大家支持。


前言

在同一页面上混合多个图形是一种常见的做法。它可以在同一数字上 总结大量信息,例如,它被广泛用于科学出版物。

基础包——par()

一页多图用mfrow参数或mfcol参数规定,这也是我几年前经常用的一种方法。

随便模拟产生数据,并对数据绘制一些简单的图,用该函数将一页中对他们进行全部展示。

基础包——layout()

layout(mat, widths = rep.int(1, ncol(mat)),
       heights = rep.int(1, nrow(mat)), respect = FALSE)
  • mat 参数为一个矩阵,提供了作图的顺序以及图形版面的安排。0代表空缺,不绘制图形,大于0 的数代表绘图顺序,相同数字代表占位符。

  • widths 和 heights 参数提供了各个矩形作图区域的长和宽的比例。

  • respect 参数控制着各图形内的横纵轴刻度长度的比例尺是否一样。

  • n 参数为欲显示的区域的序号。

生成2行2列的版面,并设置宽度和高度。par()中oma参数指四个外边空的行数

再将各个图进行填充

前面两种方法,说实话可以实现,但是比较费劲。那么下面看看gridExtra包。

gridExtra包——混合多个图形

gridExtra包让混合多个图片变得轻而易举。它提供了grid.arrange() 函数来完成这个任务。它的nrow参数允许指定如何安排布局。

对于更复杂的布局,arrangeGrob() 函数允许做一些嵌套。这里有 4 个 例子来说明 gridExtra 是如何工作的:

这里我们用ggplot绘图,并存在变量名称(g1,g2,g3)中,然后用grid.arrange()将各个变量名称展现出来。

================================================ FILE: 2020年/2020.08.26混合多个图形/混合图.rmd ================================================ --- title: "混合图" author: - 庄亮亮 date: "2020/11/10" output: prettydoc::html_pretty: theme: cayman highlight: github --- 记得安装prettydoc包,html模板在该包渲染而成。 ![](https://mmbiz.qpic.cn/mmbiz_jpg/MIcgkkEyTHgfkvXafZE9scXp4icvdcNFyic0z7THajQBAyLNRiau3CKnZ3L9Y9K2YXObhaiblBm0Jbnicaq9lW3pz4g/640?wx_fmt=jpeg) 欢迎**关注**我的**公众号**,**点赞,在看,收藏\~\~\~** 创作不易!感谢大家支持。 ----------------------- ## 前言 在同一页面上混合多个图形是一种常见的做法。它可以在同一数字上 总结大量信息,例如,它被广泛用于科学出版物。 ## 基础包——par() 一页多图用mfrow参数或mfcol参数规定,这也是我几年前经常用的一种方法。 ```{r} x <- rnorm(50) y <- rnorm(50,2,2) ``` 随便模拟产生数据,并对数据绘制一些简单的图,用该函数将一页中对他们进行全部展示。 ```{r} par(mfrow=c(2,2)) plot(x, y, xlab = "", ylab = "") hist(x,main='') qqnorm(x,main = '');qqline(x) barplot(x, axes = FALSE, space = 0,col='white') ``` ## 基础包——layout() ``` layout(mat, widths = rep.int(1, ncol(mat)), heights = rep.int(1, nrow(mat)), respect = FALSE) ``` - mat 参数为一个矩阵,提供了作图的顺序以及图形版面的安排。0代表空缺,不绘制图形,大于0 的数代表绘图顺序,相同数字代表占位符。 - widths 和 heights 参数提供了各个矩形作图区域的长和宽的比例。 - respect 参数控制着各图形内的横纵轴刻度长度的比例尺是否一样。 - n 参数为欲显示的区域的序号。 生成2行2列的版面,并设置宽度和高度。par()中oma参数指四个外边空的行数 ```{r} par(oma = c(2,2,2,2)) nf <- layout(matrix(c(1,2,1,3),2,2),widths = c(1, 3), heights = c(1, 2)) layout.show(nf) ``` 再将各个图进行填充 ```{r} plot(x, y, xlab = "", ylab = "") hist(x,main='') qqnorm(x,main = '');qqline(x) ``` 前面两种方法,说实话可以实现,但是比较费劲。那么下面看看gridExtra包。 ## gridExtra包——混合多个图形 gridExtra包让混合多个图片变得轻而易举。它提供了grid.arrange() 函数来完成这个任务。它的nrow参数允许指定如何安排布局。 对于更复杂的布局,arrangeGrob() 函数允许做一些嵌套。这里有 4 个 例子来说明 gridExtra 是如何工作的: ```{r} library(ggplot2) library(gridExtra) ``` 这里我们用ggplot绘图,并存在变量名称(g1,g2,g3)中,然后用grid.arrange()将各个变量名称展现出来。 ```{r} # Make 3 simple graphics: g1 <- ggplot(mtcars, aes(x=qsec)) + geom_density(fill="slateblue") g2 <- ggplot(mtcars, aes(x=drat, y=qsec, color=cyl)) + geom_point(size=5) + theme(legend.position="none") g3 <- ggplot(mtcars, aes(x=factor(cyl), y=qsec, fill=cyl)) + geom_boxplot() + theme(legend.position="none") g4 <- ggplot(mtcars , aes(x=factor(cyl), fill=factor(cyl))) + geom_bar() # Plots grid.arrange(g1, g2, g3, nrow = 3) ``` ```{r} grid.arrange(g2, arrangeGrob(g3, g4, ncol=2), nrow = 2) ``` ```{r} grid.arrange(g2, arrangeGrob(g3, g4,g1, ncol=3), nrow = 2) ``` ================================================ FILE: 2020年/2020.09.15reticulate/reticulate.rmd ================================================ --- title: "reticulate包" author: - 庄亮亮 documentclass: ctexart output: rticles::ctex: fig_caption: yes number_sections: yes toc: yes classoption: "hyperref," --- ```{r} library("reticulate") ``` - 下载python模块 ```{r} py_install("math") py_install("matplotlib.pyplot") py_install("math") #py_install("scipy") #安装 py_module_available("math") #查看是否安装成功 repl_python()# 查看路径 #use_python("D:/anaconda/python.exe") #更换路径 ``` ```{python} import numpy as np import matplotlib.pyplot as plt import pandas as pd from math import pi from matplotlib.pyplot import figure, show, rc plt.rcParams["patch.force_edgecolor"] = True df = pd.DataFrame(dict(categories=['var1', 'var2', 'var3', 'var4', 'var5'], group_A=[38.0, 29, 8, 7, 28], group_B=[1.5, 10, 39, 31, 15])) N = df.shape[0] angles = [n / float(N) * 2 * pi for n in range(N)] angles += angles[:1] fig = figure(figsize=(4,4),dpi =90) ax = fig.add_axes([0.1, 0.1, 0.6, 0.6], polar=True) ax.set_theta_offset(pi / 2) ax.set_theta_direction(-1) ax.set_rlabel_position(0) plt.xticks(angles[:-1], df['categories'], color="black", size=12) plt.ylim(0,45) plt.yticks(np.arange(10,50,10),color="black", size=12,verticalalignment='center',horizontalalignment='right') plt.grid(which='major',axis ="x", linestyle='-', linewidth='0.5', color='gray',alpha=0.5) plt.grid(which='major',axis ="y", linestyle='-', linewidth='0.5', color='gray',alpha=0.5) values=df['group_A'].values.flatten().tolist() values += values[:1] ax.fill(angles, values, '#7FBC41', alpha=0.3) ax.plot(angles, values, marker='o', markerfacecolor='#7FBC41', markersize=8, color='k', linewidth=0.25,label="group A") values=df['group_B'].values.flatten().tolist() values += values[:1] ax.fill(angles, values, '#C51B7D', alpha=0.3) ax.plot(angles, values, marker='o', markerfacecolor='#C51B7D', markersize=8, color='k', linewidth=0.25,label="group B") plt.legend(loc="center",bbox_to_anchor=(1.25, 0, 0, 1)) ``` ```{python} import numpy as np import matplotlib.pyplot as plt # 计算正弦曲线上点的 x 和 y 坐标 x = np.arange(0, 3 * np.pi, 0.1) y = np.sin(x) plt.title("sine wave form") # 使用 matplotlib 来绘制点 plt.plot(x, y) plt.show() ``` ```{python} import pandas as pd #df = pd.read_csv("C:/Users/DELL/Desktop/test.csv") #df.head ``` ================================================ FILE: 2020年/2020.09.27tidyverse数据清洗/Tidy_data.rmd ================================================ --- title: "[R数据科学]Tidy data案例" author: - 庄亮亮 documentclass: ctexart always_allow_html: true output: rticles::ctex: fig_caption: yes number_sections: yes toc: yes toc_depth: 3 classoption: "hyperref," editor_options: chunk_output_type: console --- # Tidy data介绍 在本章中,你将学习在R中组织数据的一种一致的方法,这种组织被称为tidy data。将数据转换为这种格式需要一些前期工作,但这些工作从长远来看是值得的。一旦你有了整洁的数据和一些包提供的整洁工具,您将花费很少时间将数据从一种表示转换到另一种,从而可以将更多的时间花在分析问题上。 本文将为您提供整理数据的实用介绍以及tidyr包中附带的工具。如果你想了解更多的基本理论,你可能会喜欢发表在《统计软件杂志》上的整洁数据论文 # 数据清洗案例 我们主要通过一个案例,来了解如何整洁数据,并将案例中的各个有用函数进行详细解读.该案例数据来自`tidyr::who`,其包含按年份,国家,年龄,性别和诊断方法细分的结核病(TB)病例。数据来自2014年世界卫生组织《全球结核病报告》,网址为。 ```{r} library(tidyverse) who ``` 这是一个非常典型的现实示例数据集。它包含**冗余列,奇数变量代码和许多缺失值**。我们需要采取多个步骤来对其进行整理。 ## 不是变量的列汇集在一起 首先将不是变量的列聚集在一起。所包含的列包括: - country,iso2和iso3是三个指定国家/地区的变量。 - year是一个变量。 - 变量名中给出的结构(例如new_sp_m014,new_ep_m014,new_ep_f014)可能是值,而不是变量。 因此,我们需要将从`new_sp_m014`到`newrel_f65`的所有列汇总在一起。我们用通用名称"key"来表示他们。我们知道单元格代表案件数,因此我们将变量数存储在`cases`中,并用`na.rm`去除含有缺失值的行。 这里使用`pivot_longer()`将数据变长,具体见后面函数详情. ```{r} who1 <- who %>% pivot_longer( cols = new_sp_m014:newrel_f65, names_to = 'key', values_to = 'cases', values_drop_na = T ) who1 ``` 对key进行计数,我们可以得到一些有关值结构的提示: ```{r} who1 %>% count(key) ``` 其中key的具体含义,查阅可得: 每列的前三个字母:新、旧病例。 之后两个字母:结核的类型。 - rel 代表复发病例 - ep 代表肺外结核病例 - sn 代表无法通过肺部涂片诊断(涂片阴性)的肺结核病例 - sp 代表可被诊断为肺部涂片(涂片阳性)的肺结核病例 第六字母:结核病患者的性别。男性(m)和女性(f) 其余数字给出了年龄段。数据集将案例分为七个年龄组: - 014 = 0 – 14岁 - 1524 = 15 – 24岁 - 2534 = 25 – 34岁 - 3544 = 35 – 44岁 - 4554 = 45 – 54岁 - 5564 = 55 – 64岁 - 65 = 65岁或以上 ## 替换数据 我们需要对列名称的格式进行较小的修正:将new_rel替换为newrel(很难在这里找到它,但是如果您不修正它,我们将在后续步骤中出错)。这里使用了stringr包中的str_replace(),将`newrel`替换`new_rel`. ```{r} who2 <- who1 %>% mutate( names_from = stringr::str_replace(key,'newrel','new_rel') ) who2 ``` ## 字符分割 接下来就是将`key`中的字符进行分割,我们使用`separate()`对字符进行两次分割. 1.将在每个下划线处拆分代码。 ```{r} who3 <- who2 %>% separate(key,c('new','type','sexage'),sep = '_') who3 ``` 利用select()删除没用的列:new,iso2,iso3. ```{r} who3 %>% count(new) who4 <- who3 %>% select(-new,-iso2,-iso3) who4 ``` 2. 将分离sexage到sex和age通过的第一个字符后拆分: ```{r} who5 <- who4 %>% separate(sexage,c('sex','age'),sep=1) who5 ``` 这时,who数据集是目前整洁! ## 可视化 数据清洗完毕,就可以做一些初步的可视化,探索性分析.这里简单绘制了 前几个国家不同年份,不同性别的结核病病例总数。 ```{r} who5 %>% group_by(country,year,sex) %>% filter(year<2003) %>% count() %>% head(100) %>% ggplot(aes(x=as.factor(year),y=n,fill=country))+geom_col() +facet_wrap(~sex,nrow = 1)+ scale_fill_brewer(palette = "Paired") ``` ## 复杂的管道函数 事实上你可以直接只用管道函数构建一个复杂的函数: ```{r eval=FALSE, include=T} who %>% pivot_longer( cols = new_sp_m014:newrel_f65, names_to = "key", values_to = "cases", values_drop_na = TRUE ) %>% mutate( key = stringr::str_replace(key, "newrel", "new_rel") ) %>% separate(key, c("new", "var", "sexage")) %>% select(-new, -iso2, -iso3) %>% separate(sexage, c("sex", "age"), sep = 1) ``` # 所用函数详细解释 ## pivot_longer()、poivot_wider() `pivot_longer()` 将在列中列名(数值)转换到一列上。具体可见下图,将列变量转化为数据存在year列名中,相当于把数据变长(longer). ![pivot_longer,从左到右](36.jpg) 函数主要参数: > cols选取的列 > names_to 字符串,指定要从数据的列名中存储的数据创建的列的名称。 > values_to 字符串,指定要从存储在单元格值中的数据创建的列的名称。 > values_drop_na 如果为真,将删除value_to列中只包含NAs的行。这有效地将显式缺失值转换为隐式缺失值,通常只在由其结构创建的数据中缺失值时使用. 例子如上面例子:将new_sp_m014到newrel_f65之间的列选取,汇总到`key`列名中,值存在`cases`列名中,并将含有缺失值的行进行删除. ```{r} who1 <- who %>% pivot_longer( cols = new_sp_m014:newrel_f65, names_to = 'key', values_to = 'cases', values_drop_na = T ) ``` 当然还有一个和他相反功能的函数`poivot_wider()`。具体见下图,相当于把key中的值变为列名,对应的values数据转化到population中.下面是简单的例子. ![pivot_wider,从右到左](37.jpg) ```{r} library(tidyverse) stocks <- tibble( year = c(2015, 2015, 2016, 2016), half = c( 1, 2, 1, 2), return = c(1.88, 0.59, 0.92, 0.17) ) stocks ``` 我们将数据变宽,将year变为列名,对应在return中的数据进行填充. ```{r} stocks %>% pivot_wider(names_from = year,values_from = return) ``` ## separate() 该函数可将字符进行分割,具体案例如上. 默认情况下,当separate()看到非字母数字字符(即不是数字或字母的字符)时,它将分割值。可以用里面的参数`sep`。比如:`sep='_'`。他还有一个功能,当`sep=2`时,可通过第二个位置进行分割,使用在省份市级,等数据上.例如以下函数,其中into = c("century", "year")将原始分割后的数据导入两个新列上,分别叫century和year. ``` table3 %>% separate(year, into = c("century", "year"), sep = 2) ``` **注意**:默认情况下,会转化成字符形式,你可以用参数`convert=T`,将数据转化最佳结构. ![](38.jpg) ## unite 是`separate()`的反函数,这里做个补充 ![unite](39.jpg) 默认情况下,`sep='_'`如果我们不需要任何分隔符可以使用`sep=''`. # 缺失值处理 两种情况会出现缺失值: 1. **显式**: 标记为`NA`. 2. **隐式**: 没出在书中的. 以下为例子 ```{r} stocks <- tibble( year = c(2015, 2015, 2015, 2015, 2016, 2016, 2016), qtr = c( 1, 2, 3, 4, 2, 3, 4), return = c(1.88, 0.59, 0.35, NA, 0.92, 0.17, 2.66) ) ``` 在这个数据集中有两个缺失的值: 1. 2015年第四季度出现显式丢失,因为它的值应该在的单元格中包含NA。 2. 2016年第一季度的收益是隐式缺失的,因为它根本没有出现在数据集中。 对于隐式缺失值,我们可以将数据进行变化,显示隐性缺失. ```{r} stocks %>% pivot_wider(names_from = year,values_from = return) ``` 这样就可以看到原来隐型的缺失值了. 这些显式缺失的值在数据的其他表示中可能并不重要,你可以在pivot_longer()中设置values_drop_na = TRUE来将显式缺失的值变成隐式缺失值: ```{r} stocks %>% pivot_wider(names_from = year, values_from = return) %>% pivot_longer( cols = c(`2015`, `2016`), names_to = "year", values_to = "return", values_drop_na = TRUE ) ``` #### complete() 在整洁数据中显式显示缺失值的另一个重要工具是complete(). complete()获取一组列,并查找所有唯一的组合。然后,它确保原始数据集包含所有这些值,并在必要时显式填充NAs。 ```{r} stocks %>% complete(year,qtr) ``` 有时,当一个数据源主要用于数据输入时,丢失的值表明以前的值应该结转: ```{r} treatment <- tribble( ~person,~treatment,~response, 'A',1,7, NA,2,10, NA,3,9, 'B',1,4 ) ``` #### fill() 您可以使用fill()填充这些缺失的值。它采用一组列,在这些列中,您希望用最近的非缺失值(有时称为最后一次观察结转)替换缺失值。 ```{r} treatment %>% fill(person) ``` 直接将缺失值填写为前面的字符('A'). ================================================ FILE: 2020年/2020.10.09散点图系列一/scater_plot1.html ================================================ 散点图系列(1)

记得安装prettydoc包,html模板在该包渲染而成。


欢迎关注我的公众号点赞,在看,收藏~~~


简介

散点图(scatter graph、point graph、X-Y plot、scatter chart )是科研绘图中最常见的图表类型之一,通常用于显示和比较数值。散点图是使用一系列的散点在直角坐标系中展示变量的数值分布。在二维散点图中,可以通过观察两个变量的数据变化,发现两者的关系与相关性。

散点图可以提供三类关键信息:

(1)变量之间是否存在数量关联趋势;

(2)如果存在关联趋势,那么其是线性还是非线性的;

(3)观察是否有存在离群值,从而分析这些离群值对建模分析的影响。


本文可以看作是《R语言数据可视化之美》的学习笔记。该书第四章——数据关系型图表中展示的散点图系列包括以下四个方面:

  1. 趋势显示的二维散点图

  2. 分布显示的二维散点图

  3. 气泡图

  4. 三维散点图

本文主要对第一部分进行介绍,并加上小编自己的理解。下面几个部分也会在这星期陆续推出,敬请关注。

2.本文框架

2.数据介绍

随机产生2列20行的数据,列名分别为x,y。x为序号,y由标准正态分布中产生。

##   x       y
## 1 1 -1.8720
## 2 2 -1.3863
## 3 3 -1.3316
## 4 4 -0.6965
## 5 5 -0.6241
## 6 6 -0.5514

3. 不同类型拟合曲线的绘制

3.1 loess数据平滑曲线

局部加权回归(Locally Weighted Scatterplot Smoothing,LOESS)主要思想是取一定比例的局部数据,在这部分子集中拟合多项式回归曲线,这样就可以观察到数据在局部展现出来的规律和趋势。曲线的光滑程度与选取数据比例有关:比例越少,拟合越不光滑,反之越光滑。

ggplot2绘制时,使用geom_point绘制散点图,geom_smooth加入拟合曲线,method选择为loess,se=TRUE表示加入置信带,span控制loess平滑的平滑量,较小的数字产生波动线,较大的数字产生平滑线。其他参数对颜色,填充色以及透明度进行了修改。

## `geom_smooth()` using formula 'y ~ x'

3.2 样条数据平滑曲线

这里使用了splines包中的样条函数,df=5,样条具有五个基函数,其他参数变化不大。具体非线性模型相关资料可参考:R语言里的非线性模型:多项式回归、局部样条、平滑样条、广义加性模型分析

3.3 GAM 数据平滑曲线

GAM 模型的拟合是通过一个迭代过程(向后拟合算法)对每个预测变量进行样条平滑的。其算法要在拟合误差和自由度之间进行权衡最终达到最优。

4. 残差分析图

残差分析(residual analysis)就是通过残差所提供 的信息,分析出数据的可靠性、周期性或其他干扰。用于分析模型的假定正确与否的方法。所谓残 差是指观测值与预测值(拟合值)之间的差,即实际观察值与回归估计值的差。以下给出两种拟合方法的残差分析图。注意: 这里还是使用前面随机模拟产生的数据。

4.1 线性拟合

通过lm函数进行回归分析,公式为 \(y = ax+b\)。并将预测值 \(\hat{y}\),残差\(\varepsilon\),残差的绝对值\(|\varepsilon|\)进行存储,结果如下所示。

##   x       y predicted residuals Abs_Residuals
## 1 1 -1.8720   -1.4250  -0.44700       0.44700
## 2 2 -1.3863   -1.2344  -0.15189       0.15189
## 3 3 -1.3316   -1.0437  -0.28792       0.28792
## 4 4 -0.6965   -0.8531   0.15655       0.15655
## 5 5 -0.6241   -0.6624   0.03835       0.03835
## 6 6 -0.5514   -0.4718  -0.07963       0.07963

完整代码如下所示:

代码详解

绘制的方式比较简单,根据ggplot的思想不断叠加图层。我们对以下代码进行详细分析:

  1. 以x为横坐标,y为纵坐标,geom_point()绘制散点图,以Abs_Residuals的大小来填充点和尺寸,颜色为黑色。scale_fill_continuous()将填充色从“black”到“red”渐变。geom_smooth()给数据加入拟合曲线,这里使用lm()方法,置信带不展示,颜色为“lightgrey”。这时候的图形如下:

  1. 将预测值的点进行绘制,geom_segment()可加入线段,其中xend = x, yend = predicted表示从x到x,y到predicted,所以就会产生下图中的竖直线了。

  1. 这时残差图基本完成,但是可以看到横纵坐标的标题有问题,右边的legend太累赘了以及字体颜色和大小还可以再做修改。最后图形如下所示:

4.2 非线性拟合

非线性拟合绘制残差图与线性拟合类似,唯一不同的点在:利用lm函数拟合不同的回归模型,以下使用了公式:\(y = ax+bx^2+c\),后面的绘制与上面相同。

这两个图采用黑色到红色渐变颜色和气泡面积大小两个视觉暗示对应残差的绝对值大小,用于实际数据点的表示;而拟合数据点则用小空心圆圈表示,并放置在灰色的拟合曲线上。用直线连接实际数据点和拟合数据点。残差的绝对值越大,颜色越红、气泡也越大,连接直线越长,这样可以很清晰地观察数据的拟合效果。

4.3 有趣的拓展

R 中的ggimage包提供了geom_image()函数可以将对应的圆形数据点使用图片替代展示。我们将其运用到上面的数据集中,就可以得到有趣的图了。

## Warning: package 'ggimage' was built under R version 4.0.3
## `geom_smooth()` using formula 'y ~ x'

================================================ FILE: 2020年/2020.10.09散点图系列一/scater_plot1.rmd ================================================ --- title: "散点图系列(1)" author: - 庄亮亮 date: "2020/10/09" output: prettydoc::html_pretty: theme: cayman highlight: github --- 记得安装prettydoc包,html模板在该包渲染而成。 ![](https://mmbiz.qpic.cn/mmbiz_jpg/MIcgkkEyTHgfkvXafZE9scXp4icvdcNFyic0z7THajQBAyLNRiau3CKnZ3L9Y9K2YXObhaiblBm0Jbnicaq9lW3pz4g/640?wx_fmt=jpeg) 欢迎**关注**我的**公众号**,**点赞,在看,收藏\~\~\~** --------- ## 简介 **散点图**(scatter graph、point graph、X-Y plot、scatter chart )是科研绘图中最常见的图表类型之一,通常用于显示和比较数值。散点图是使用一系列的散点在直角坐标系中展示变量的数值分布。在二维散点图中,可以通过观察两个变量的数据变化,发现两者的关系与相关性。 散点图可以提供三类关键信息: (1)变量之间是否存在数量关联趋势; (2)如果存在关联趋势,那么其是线性还是非线性的; (3)观察是否有存在离群值,从而分析这些离群值对建模分析的影响。 ----- 本文可以看作是[《R语言数据可视化之美》](https://github.com/EasyChart/Beautiful-Visualization-with-R "《R语言数据可视化之美》")的学习笔记。该书第四章——**数据关系型图表**中展示的散点图系列包括以下四个方面: 1. 趋势显示的二维散点图 2. 分布显示的二维散点图 3. 气泡图 4. 三维散点图 本文主要对第一部分进行介绍,并加上小编自己的理解。下面几个部分也会在这星期陆续推出,敬请关注。 ## 2.本文框架 ![](https://imgkr2.cn-bj.ufileos.com/0dce4c7a-cf88-4cd7-a5fb-a387a81ca46a.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=yw7%252BqqJH9pFaw0RcxoVcXlJTpc4%253D&Expires=1602321049) ## 2.数据介绍 随机产生2列20行的数据,列名分别为x,y。x为序号,y由标准正态分布中产生。 ```{r} library(ggplot2) mydata = data.frame('x'= 1:20,'y'=sort(rnorm(20))) head(mydata) ``` ## 3. 不同类型拟合曲线的绘制 ### 3.1 loess数据平滑曲线 **局部加权回归**(Locally Weighted Scatterplot Smoothing,LOESS)主要思想是取一定比例的局部数据,在这部分子集中拟合多项式回归曲线,这样就可以观察到数据在局部展现出来的规律和趋势。曲线的光滑程度与选取数据比例有关:比例越少,拟合越不光滑,反之越光滑。 ggplot2绘制时,使用`geom_point`绘制散点图,`geom_smooth`加入拟合曲线,`method`选择为loess,`se=TRUE`表示加入置信带,`span`控制loess平滑的平滑量,较小的数字产生波动线,较大的数字产生平滑线。其他参数对颜色,填充色以及透明度进行了修改。 ```{r} ggplot(data = mydata, aes(x,y)) + geom_point(fill="black",colour="black",size=3,shape=21) + geom_smooth(method = 'loess',span=0.4,se=TRUE, colour="#00A5FF",fill="#00A5FF",alpha=0.2) ``` ### 3.2 样条数据平滑曲线 这里使用了splines包中的样条函数,df=5,样条具有五个基函数,其他参数变化不大。具体非线性模型相关资料可参考:[R语言里的非线性模型:多项式回归、局部样条、平滑样条、广义加性模型分析](http://tecdat.cn/r%e8%af%ad%e8%a8%80%e9%87%8c%e7%9a%84%e9%9d%9e%e7%ba%bf%e6%80%a7%e6%a8%a1%e5%9e%8b%ef%bc%9a%e5%a4%9a%e9%a1%b9%e5%bc%8f%e5%9b%9e%e5%bd%92%e3%80%81%e5%b1%80%e9%83%a8%e6%a0%b7%e6%9d%a1%e3%80%81%e5%b9%b3/ "R语言里的非线性模型:多项式回归、局部样条、平滑样条、广义加性模型分析") ```{r} ggplot(data = mydata, aes(x,y)) + geom_point(fill="black",colour="black",size=3,shape=21) + geom_smooth(method="lm",se=TRUE, formula=y ~ splines::bs(x, 5),colour="red") ``` ### 3.3 GAM 数据平滑曲线 GAM 模型的拟合是通过一个迭代过程(向后拟合算法)对每个预测变量进行样条平滑的。其算法要在拟合误差和自由度之间进行权衡最终达到最优。 ```{r} ggplot(data = mydata, aes(x,y)) + geom_point(fill="black",colour="black",size=3,shape=21) + geom_smooth(method = 'gam',formula=y ~s(x)) ``` ## 4. 残差分析图 **残差分析**(residual analysis)就是通过残差所提供 的信息,分析出数据的可靠性、周期性或其他干扰。用于分析模型的假定正确与否的方法。所谓残 差是指观测值与预测值(拟合值)之间的差,即实际观察值与回归估计值的差。以下给出两种拟合方法的残差分析图。**注意:** 这里还是使用前面随机模拟产生的数据。 ### 4.1 线性拟合 通过lm函数进行回归分析,公式为 $y = ax+b$。并将预测值 $\hat{y}$,残差$\varepsilon$,残差的绝对值$|\varepsilon|$进行存储,结果如下所示。 ```{r} fit <- lm(y ~ x, data = mydata) mydata$predicted <- predict(fit) # Save the predicted values mydata$residuals <- residuals(fit) # Save the residual values mydata$Abs_Residuals <- abs(mydata$residuals) head(mydata) ``` 完整代码如下所示: ```{r include=FALSE} ggplot(mydata, aes(x = x, y = y)) + geom_point(aes(fill =Abs_Residuals, size = Abs_Residuals),shape=21,colour="black") + # size also mapped scale_fill_continuous(low = "black", high = "red") + geom_smooth(method = "lm", se = FALSE, color = "lightgrey") + geom_point(aes(y = predicted), shape = 1) + geom_segment(aes(xend = x, yend = predicted), alpha = .2) + guides(fill = guide_legend((title="Rresidual")), size = guide_legend((title="Rresidual")))+ xlab("X-Axis")+ ylab("Y-Axis")+ theme(text=element_text(size=15,face="plain",color="black"), axis.title=element_text(size=10,face="plain",color="black"), axis.text = element_text(size=10,face="plain",color="black"), legend.position = "right", legend.title = element_text(size=13,face="plain",color="black"), legend.text = element_text(size=10,face="plain",color="black"), legend.background = element_rect(fill=alpha("white",0))) ``` #### 代码详解 绘制的方式比较简单,根据ggplot的思想不断叠加图层。我们对以下代码进行详细分析: 1. 以x为横坐标,y为纵坐标,`geom_point()`绘制散点图,以Abs_Residuals的大小来填充点和尺寸,颜色为黑色。`scale_fill_continuous()`将填充色从"black"到"red"渐变。`geom_smooth()`给数据加入拟合曲线,这里使用`lm()`方法,置信带不展示,颜色为"lightgrey"。这时候的图形如下: ![](https://imgkr2.cn-bj.ufileos.com/07b50a94-50de-4f7d-a995-b825789986d7.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=0Hkgl4JPfi%252FokI6OtholM0UxFBg%253D&Expires=1602318448) 2. 将预测值的点进行绘制,`geom_segment()`可加入线段,其中`xend = x, yend = predicted`表示从x到x,y到predicted,所以就会产生下图中的竖直线了。 ![](https://imgkr2.cn-bj.ufileos.com/10d02b70-707a-4361-ac15-dfb1096e5757.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=AGI6HCOJsJf6kxDDBHUpjpeh%252B6A%253D&Expires=1602318537) 3. 这时残差图基本完成,但是可以看到横纵坐标的标题有问题,右边的legend太累赘了以及字体颜色和大小还可以再做修改。最后图形如下所示: ![](https://imgkr2.cn-bj.ufileos.com/4c9a07c1-b7d0-41fa-ac8b-c3c92439c30f.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=xoAbaDqw7uzKX3nZP%252FHpEus%252BjxI%253D&Expires=1602315306) ### 4.2 非线性拟合 非线性拟合绘制残差图与线性拟合类似,唯一不同的点在:利用lm函数拟合不同的回归模型,以下使用了公式:$y = ax+bx^2+c$,后面的绘制与上面相同。 ```{r} d<-mydata fit <- lm(y ~ x+I(x^2), data = d) d$predicted <- predict(fit) d$residuals0 <- residuals(fit) d$Residuals<-abs(d$residuals0 ) ``` ```{r} ggplot(d, aes(x = x, y = y)) + geom_smooth(method = "lm",formula = y ~ x+I(x^2), se = FALSE, color = "lightgrey") + geom_segment(aes(xend = x, yend = predicted), alpha = .2) + geom_point(aes(fill =Residuals, size = Residuals),shape=21,colour="black") + # size also mapped scale_fill_continuous(low = "black", high = "red") + geom_point(aes(y = predicted), shape = 1) + xlab("X-Axis")+ ylab("Y-Axis")+ geom_point(aes(y = predicted), shape = 1) + guides(fill = guide_legend((title="Rresidual")), size = guide_legend((title="Rresidual")))+ theme(text=element_text(size=15,face="plain",color="black"), axis.title=element_text(size=10,face="plain",color="black"), axis.text = element_text(size=10,face="plain",color="black"), legend.position = "right", legend.title = element_text(size=13,face="plain",color="black"), legend.text = element_text(size=10,face="plain",color="black"), legend.background = element_rect(fill=alpha("white",0))) ``` 这两个图采用黑色到红色渐变颜色和气泡面积大小两个视觉暗示对应残差的绝对值大小,用于实际数据点的表示;而拟合数据点则用小空心圆圈表示,并放置在灰色的拟合曲线上。用直线连接实际数据点和拟合数据点。残差的绝对值越大,颜色越红、气泡也越大,连接直线越长,这样可以很清晰地观察数据的拟合效果。 ### 4.3 有趣的拓展 R 中的[ggimage](https://cran.r-project.org/web/packages/ggimage/vignettes/ggimage.html "ggimage")包提供了`geom_image()`函数可以将对应的圆形数据点使用图片替代展示。我们将其运用到上面的数据集中,就可以得到有趣的图了。 ```{r} library(ggimage) mydata$image = "https://www.r-project.org/logo/Rlogo.png" ggplot(mydata, aes(x, y)) + geom_image(aes(image=image))+ geom_smooth(method = 'lm') ``` ================================================ FILE: 2020年/2020.10.27散点图系列二/HighDensity_Scatter_Data.csv ================================================ x,y -0.603532875,-0.412572103 0.138714621,0.173584109 0.542220588,-0.460046473 -1.172848851,-0.143668233 0.214562344,-0.275565146 0.253027946,0.42432282 -0.28736998,0.651756501 -0.273315928,-0.264316658 -0.282226,0.38147533 -0.445018915,0.895155216 -0.23859635,0.257826716 -0.499193222,0.254978163 -0.388126947,0.438767378 0.032229409,-0.15257969 0.479747029,-0.499310514 -0.055142747,0.389858722 -0.255504753,-0.101227915 -0.455597708,0.028846327 -0.41858584,-0.392226967 1.207917589,-1.152389274 0.06704411,0.352922593 -0.245342948,0.142635144 -0.220273936,-0.092609585 0.229794721,-0.766428387 -0.346860123,0.016501638 -0.724102455,-0.344932739 0.28737786,-0.330185504 -0.511827861,0.444430319 -0.00756915,0.439304473 -0.467974301,0.183492386 0.551148773,-0.152508375 -0.237796539,0.042193493 -0.354720019,-0.158893506 -0.25062903,-0.441374217 -0.814546735,-0.210065923 -0.583809631,0.105886162 -1.090019824,0.089371284 -0.670496596,0.07995553 -0.147146929,1.17011139 -0.23294877,-1.041821945 0.724748133,-0.829373315 -0.534321362,0.293257101 -0.427682317,-0.004191079 -0.140311501,0.131704006 -0.497170038,-0.430987807 -0.484257159,-0.9132308 -0.553659096,0.078842346 -0.625992943,0.228914045 -0.261914059,-0.905738855 -0.248424979,0.584962076 -0.903015628,0.681518277 -0.291037962,-0.124471387 -0.554444812,0.549682231 -0.507481005,-0.053775746 -0.081154762,0.044716962 0.281527909,0.30316366 0.823908736,-0.040237732 -0.386676712,0.405446064 0.802954814,-0.260342653 -0.578904274,-0.655863414 0.328294232,0.069634484 1.274495535,1.025140664 -0.017380195,0.204015072 -0.33481679,0.102501675 -0.003802378,-1.126434359 0.888542224,-0.282701872 -0.569303868,0.475106778 0.68391359,-0.186402404 0.664782395,-0.074606321 0.168236399,-0.046108847 0.003446419,-0.28724831 -0.227734369,-0.98061332 -0.183261966,0.485662688 0.324143284,-0.356599558 1.035135431,-0.756589727 -0.076699206,-0.343561969 -0.695350473,0.00591977 -0.361790889,-0.058217489 0.129130881,-0.021113751 -0.158529557,0.38114792 -0.088894979,-0.363047547 -0.084997038,-0.033898624 -0.686150943,-0.630539601 -0.086893585,0.10344602 0.425116129,0.682205325 0.348804356,0.570478935 0.274998676,0.439389808 -0.201365988,0.404901457 -0.095796885,0.45116895 -0.59726394,0.692190187 -0.026579409,-0.57473941 0.127598,1.520685029 0.852982004,0.154186263 0.500756626,1.319904315 -0.247791722,1.079376018 0.177775148,0.51277391 -0.567304022,-0.35631804 0.439101813,0.273776124 0.486458377,-0.045602055 1.060558553,-0.04236013 0.207261767,1.4144594 -0.237359237,0.193370055 0.032996747,0.017876486 -0.251238891,0.047661712 -0.412999294,-0.938136738 0.08349464,-0.418340025 -0.448132313,-0.795490751 0.084092694,0.3398046 0.177484131,0.019701651 -0.026052558,-0.565552891 -0.097967309,0.771231416 -0.324534876,0.489691465 -0.554883616,0.239831664 0.424637101,0.32001656 0.011181263,-0.566577153 0.415570309,-0.18544239 -0.622143926,0.223091435 0.084513207,-0.549071551 0.336583153,1.355557406 -0.013138188,0.662728034 -0.095696084,0.562951029 -0.390953323,0.027031975 1.029080994,-0.708633879 0.375250727,0.557892083 0.912104151,0.713439141 0.040029821,0.158898551 -0.315704649,-0.248136706 -0.75664406,0.299848452 -0.318049916,0.236712757 0.113150766,-0.394663706 0.506845174,-0.304952645 0.126375068,0.109832068 -0.585974156,0.496223721 0.334357164,1.130211087 -0.825050467,-0.557428318 -0.182926124,-0.286159862 -0.158059164,0.676350433 -0.974123024,0.053934365 0.460028761,0.316716127 -0.311435797,-0.439924664 -0.167018325,-0.166443189 0.697573946,0.162496287 0.318337206,-0.469207708 -0.054215848,0.606575768 0.256881389,-0.634409835 0.199635904,0.420077912 0.831428224,0.082566794 0.137946702,-0.657481341 0.253136312,0.853019387 0.173775988,0.088751842 -0.188618824,-0.196688766 0.048809732,0.289153018 0.819372323,-0.095880955 -0.437796237,-0.141112137 0.060879999,-0.341780787 0.68106533,0.29009734 -0.117310543,-0.534967788 -0.526691404,0.073559838 -0.434891803,-0.08838215 -0.195063515,-0.170887345 -0.423675037,0.338764624 -0.130319696,0.210417617 -0.207209853,-0.125909356 -0.091525399,0.262594457 0.203528049,-0.826374798 0.312316564,-0.481335198 0.839102872,0.042512337 -0.034346827,0.759522826 -0.160419956,-0.580583987 0.735502859,-0.804968967 0.852164699,0.043147301 0.021622019,0.005391193 -0.16632866,-0.709348107 -0.911117709,7.42E-06 0.705631199,-0.139665196 -0.418791217,0.086742148 -0.561881397,-0.53531872 1.521882943,-0.291605273 0.117510654,-0.339034608 -0.016629305,0.572994169 -1.366109761,-0.257183551 -0.049895294,-0.185025799 0.488015867,-0.919211213 0.206934458,0.021708792 0.456161081,-0.311817908 0.9918661,0.441733137 0.584554257,0.497415531 -0.254368508,-0.190718665 0.352090089,-0.748800252 -0.099208137,-0.177378262 -0.269035394,-0.001598452 -1.427879328,-0.466211946 -0.394823426,-0.33470557 0.243907318,0.233657848 1.08401627,0.721788568 0.250347307,-0.633960062 0.310105102,-0.276402011 -0.482951605,-1.126182521 0.081327354,0.394572604 -1.039118771,0.315401872 0.24261341,0.457730702 0.348384389,0.0108888 0.092756958,-0.269346189 0.350366758,-1.016440803 0.155840514,0.317704841 0.380231181,0.608973131 0.921231813,0.318983093 0.556181421,-0.317449007 0.016331979,-0.38176118 -0.557224482,-0.05099536 0.209028911,-0.032697754 -0.200117619,0.210747607 0.746746551,0.621845417 -0.80354047,0.557062782 -0.207875894,0.17600382 0.211004187,-0.547088483 -0.075868268,-0.426061101 -0.303075558,-0.588323354 -0.152360534,0.525757624 0.31476805,-0.820850345 0.44758599,-0.499661028 0.330106316,0.098590526 1.13674176,0.429286374 0.586748786,0.189634407 0.143854864,0.345636311 -0.329885047,-0.16643334 1.459570065,-0.351233427 0.33870775,-0.859135944 -0.342160172,-0.026679708 0.093246042,0.665165009 -0.16219665,0.092216612 -0.137352109,0.702186775 -0.46675167,0.219929836 0.058422672,0.107839985 0.159580119,-0.41978197 -0.538771061,0.0865191 -1.616576066,-0.492651536 -0.127437326,0.552440021 0.014758915,-0.503455433 0.297136887,-0.302882632 0.029567584,0.618159623 0.206699447,-0.333969142 -0.548886087,0.559523874 0.355587629,-0.086471694 0.359444365,-0.187486169 0.125825535,-0.181362079 0.678637218,0.439851169 0.202234236,-0.750618477 0.132182135,-0.745054644 0.134021952,0.263717432 0.218465289,0.625852066 0.530061953,1.041236368 0.226095198,0.412884678 0.331599308,0.415721374 -0.568186777,0.561329441 -0.185248759,-0.352629628 0.738484795,-0.085542324 -0.611951875,0.06715048 0.129034194,-0.027034184 0.202501403,0.752585788 0.487901661,0.613568786 -0.174438368,0.739648804 0.07931272,0.603156027 -0.881627533,0.554176775 0.169298024,-0.749691403 -0.333282515,0.304949878 -0.119323312,-0.910575762 -0.593882641,0.038910179 0.192467661,0.23912066 0.333289758,-0.370096459 -0.152306945,0.722238989 0.912505532,0.161926889 0.335279685,-0.178042107 0.474316287,0.276068554 1.024701501,0.22458756 -0.325556805,0.615370667 0.404309636,0.482577308 0.493290307,0.780842301 -0.003085398,-0.158055971 0.159526179,-0.45866033 -0.505910951,0.778610752 0.235083774,-0.199734111 -0.350485166,0.221077731 0.406841431,0.390604618 -0.405715392,-0.739830007 0.159698744,0.257048254 -0.423261327,-0.412498108 -0.12288159,-0.432968885 -0.776429506,1.290038925 0.064217016,-0.801640339 0.492721695,-0.466077848 0.091623762,-0.817082317 -0.883114607,0.572630996 -0.310266848,-0.43663524 0.828021518,-0.078811397 0.904902693,0.255954104 -0.587518384,0.592387155 -0.183351629,0.83131247 0.176812724,-0.720018334 0.15957811,0.035919052 -0.289978495,0.800130637 -0.476639351,0.545121413 -0.089714293,0.264774967 0.504904107,0.219934526 0.011813307,1.097198919 -0.32451411,0.606299059 -0.252187111,-0.291665106 0.807195748,-0.061348399 -0.223479906,-0.557864114 0.381588381,-0.122614385 0.735859343,-0.167398611 0.221832452,-0.641331503 -0.210860935,0.398021896 -0.020000813,0.4117282 -0.246139984,0.894401351 0.613858559,0.487787184 -0.074776783,0.206012601 0.774991692,0.987468667 -0.280806268,-0.475571464 -0.323558625,0.283976177 0.07156608,-0.2209958 0.012094324,-0.881015045 -0.252225762,-0.880913061 -0.790698405,-0.099653193 0.015033211,0.237346339 -0.35828835,0.179997693 0.541305478,-0.066184264 -0.476342727,0.060539221 0.563241365,-0.019096907 -0.324521509,-0.436452986 0.146235039,-0.398553922 0.449351362,0.161735513 -0.259371178,0.828029158 0.277219276,0.031875076 -0.043986836,1.126494743 -0.567606465,-0.471933675 -0.135039805,0.171589012 0.809894939,0.09205977 -0.107065587,-0.11987935 -0.408891231,0.425902816 -0.027011462,-0.634480626 0.165070805,-0.074426971 0.477662307,0.011719428 0.571979939,0.430316318 0.050261199,-0.39963699 0.582287623,-1.418266361 -0.382129974,0.536122932 -1.172256702,0.487069317 -0.235841713,0.526927789 -0.257927745,-0.104702457 -1.158018076,-1.266959384 0.281235878,0.162190689 -0.39188757,0.764615467 -0.113026993,-0.24751277 -0.793551494,-0.374960276 0.273762101,-0.019050305 0.945613509,0.07684959 -0.439038555,-0.139842602 -0.056279456,0.369360518 0.974356532,0.620274296 0.466908166,-0.389811026 0.956529711,0.132524795 -0.002617029,0.029572263 -0.076130024,-0.569921691 -0.254815829,0.702620895 0.717286852,0.205506917 -0.642919266,0.566496663 0.153657108,-0.271680783 -0.023159267,-0.106355888 1.1259209,-0.119462997 -0.304016864,0.294423554 -0.754644085,0.119136263 0.116315885,0.684292866 -0.019824348,-0.161726199 -0.419562534,-0.102901304 0.066145544,-0.395054036 -0.137762373,-0.150430101 -0.339379321,-0.199403826 0.250417966,0.904852153 -0.165831156,-0.557840473 -0.917490125,0.518355715 -1.325870624,0.586787292 -0.290291086,-0.433725343 0.727093435,-0.368181859 0.41906469,-0.184096954 0.60752679,0.31416198 0.491252721,-0.208600722 0.157882012,-0.54800394 -0.753531314,0.574414881 0.102784894,0.055098107 0.798614045,-0.587617469 -1.698031767,0.419044174 -0.390676142,-0.085855621 0.55123232,0.072620699 0.26437251,-0.240046451 0.394697202,0.435262819 0.228549753,-0.36520433 0.269416558,-0.10475503 0.007321561,0.532795797 -0.458244568,0.738666624 -0.613407545,-0.346118078 0.018076434,0.168715429 -0.210696557,-0.669327335 -0.449682204,-0.255492924 0.208720659,0.38699098 0.076722368,-0.635769695 0.731641523,0.031483737 -0.560751249,0.061101406 -0.258894042,0.312691341 -0.037473544,-0.420382556 -0.703895041,-0.282117697 -0.142352934,0.527573733 -0.354085589,-0.225423109 -1.073819501,0.094096813 -0.14191858,0.516316042 -0.267036082,-0.27734357 0.566505097,0.059424746 -0.302034461,-0.046943545 0.278755798,-0.645410396 0.071314647,-0.19808445 -0.618430107,0.840388057 0.187071986,0.683536972 -0.053043062,-0.000682776 0.083030993,-0.84130602 0.329017424,0.396983393 0.05698146,-0.545829059 0.792579582,-0.155297196 0.05777672,-0.488727367 -0.62699952,-0.043015807 0.37093239,-0.016988771 -0.611450807,-0.398384592 -0.959447066,0.246128319 -0.404968195,-0.519366244 -0.372338614,0.221181236 -0.303752961,-0.406794901 0.803379783,0.161005034 0.817799723,0.121620604 0.363045548,-0.787020665 -0.636917463,-0.12949934 0.011573278,-0.517318572 0.243560617,-0.366020675 -0.068513752,0.214736109 0.085872741,-0.386847352 -0.472396957,0.273347729 -0.643810153,-0.215452464 0.703882869,0.408120978 0.133686345,0.404542266 -0.204198821,0.71500575 0.16263561,1.780387289 1.031240487,0.116751617 0.181333478,0.321853601 0.705702322,0.495636738 0.683772157,0.720423163 -0.203588074,0.543777317 0.381270865,-0.651154177 -0.325600412,0.041393533 -0.73682789,0.480775856 -0.600832898,0.668766768 -0.074360239,-0.154499169 0.898531214,0.056266365 0.052404359,-1.00069725 -0.401418987,-0.496144975 0.115187482,0.954370719 0.348987597,-0.508082784 -0.647600866,0.561881315 -0.527340109,-0.270399929 -0.970803745,-0.046843452 -0.634780297,-0.032879329 -0.443719405,-0.302063488 -0.145957881,-0.643455369 0.705047026,0.519021882 0.444320715,-0.477475755 0.13648716,-0.091646829 -0.283320733,-0.093984483 -0.020103469,0.52123174 0.273806123,-0.244668817 -0.252016661,0.268051398 0.529535065,0.026577715 0.548726783,-0.127670779 -0.583252315,0.310290761 -0.373455655,-0.769364924 0.603369367,-0.000186745 -0.84360994,-0.160025814 0.209854947,0.186703194 0.116749381,-0.520897404 1.597950599,0.215359155 -1.364840171,-0.429159581 -0.420397901,-0.082485373 0.337014334,0.234231726 0.837163255,0.140014747 0.419843542,-0.396210743 -0.714184218,-1.252408911 1.119694085,0.514467429 -0.878633112,0.208637762 -0.556508044,0.256050403 -0.021570195,0.330199977 1.112793454,0.941902818 0.253158294,0.111102235 0.365198026,0.125014431 0.864038797,0.07572865 0.492389984,-0.228698222 -0.612368938,-0.034516244 0.354863109,-0.149692757 -0.054609996,-0.228453027 0.891303948,0.347281471 -0.12172234,0.070789786 -0.763553511,-0.450383192 0.245917186,-0.046155053 0.17725183,-0.723957668 -0.008813174,-0.372251604 -0.528275161,0.223306766 -0.419457333,0.407937038 -0.006312858,0.372640466 0.519055073,0.2196932 -0.182228857,0.301642734 -0.435724736,0.943706202 -1.352101513,-0.331392803 0.247124918,0.201088646 0.213670162,0.935767085 0.65459543,-0.757031301 0.733361321,0.046156877 -0.071528033,0.041437017 0.649256863,-0.214229732 0.000656774,-0.71552222 -0.338205038,0.182238177 -0.424098298,0.021846438 -0.17347055,-0.681065704 0.113739722,-0.501125058 -0.013700702,0.094326206 0.100438895,0.493969738 0.099471336,-0.24574767 0.357299678,0.234072448 -0.136590887,-0.563792359 0.817673729,-0.177479541 0.218846943,0.13774296 -0.596767925,0.064914874 -0.138324902,-0.847892996 0.257941525,0.053501898 -0.205527666,0.972991743 0.172497525,-0.385233478 0.21719793,0.846242637 0.651738842,0.279131674 -0.325847955,1.033177932 -0.008440431,0.001951001 -0.283846228,0.646189242 -0.563566435,0.673173727 -0.924485156,0.103634583 0.097764528,0.89889692 0.300782613,-0.241538552 0.31957908,-0.679443205 -0.694996409,0.476836155 -0.564838927,0.891436932 -0.570577097,-0.111434254 -0.34433575,0.738460907 0.085098909,0.035817093 0.297241714,0.395189427 -0.407516325,0.263770456 -1.432173419,0.360298905 0.476911741,0.146773052 0.307642385,-0.044023911 -0.35043535,0.301579447 -0.536830671,-0.845966722 -0.149995598,0.548357431 0.054053281,0.933202526 0.361600382,-0.459984038 0.695047548,0.176147501 -0.424441699,-0.784719219 0.145361422,-0.5183087 0.667088017,-0.443141203 -0.450671078,-0.344211331 -0.111381706,-0.005765621 -0.885734014,0.381177976 0.143711125,-0.269503839 -0.320595881,0.341568864 -0.462468821,-0.196021386 -0.389988735,-0.342048345 0.222251687,-0.091161602 -1.081234501,-0.255429284 -0.21275545,-0.455422776 -0.50685883,-0.420829148 -0.481059514,-0.46523624 0.237317314,-0.64607967 0.175877135,-0.032635275 -0.053510178,0.685108085 0.268758628,-0.457003638 -0.301052449,-0.07566182 -1.011648823,0.817510001 0.57721064,-0.154364997 -0.115346499,0.459500728 -0.182544384,0.389374357 0.078758965,-0.963976952 0.382966111,-0.311266935 0.213043483,-0.341227882 0.4636327,0.232626741 0.023067296,0.646185316 -0.252142822,0.4528224 -0.150224704,0.198014073 0.411457989,-0.880578541 -0.424634398,0.307187098 -0.476805048,-0.520294883 0.156739358,-0.55219311 0.306236654,-0.373066949 -0.845541614,-0.340063661 0.392349314,0.610846451 0.005962568,-0.296538313 -0.090627644,1.024938842 0.553477201,0.435891117 0.739697435,-0.211744726 -0.57369972,-0.473934393 0.505827188,0.123427015 -0.316034597,-0.076769554 0.06618066,1.477837807 0.240463032,-0.587455882 0.066588814,0.516076786 -0.731432231,-0.223520816 -0.25320089,1.258782924 0.769831619,0.170645814 0.086396809,0.004915159 -0.417911962,0.109518129 -0.327964352,0.604186104 0.528783043,-0.077461972 0.173041745,0.551188106 -0.448593271,0.874252939 0.003132606,0.10375089 0.298335255,0.390668472 0.861275904,-0.29346271 -0.440874742,-0.88969879 -0.189972978,0.067296871 0.498055008,-0.193035052 -0.229560446,0.458074476 0.730132873,0.438084369 0.521623088,-0.328871664 -0.829520485,-0.638304992 0.211978888,0.249221144 -0.709581463,-0.366745236 -0.732346228,0.013005 0.035210486,-0.013187204 0.028349111,-0.413162718 -0.016354089,-0.404653924 0.632140612,0.416113791 0.147493943,0.644329175 -0.33654341,-0.654345391 0.059794146,-0.302876761 -0.257198254,-0.149472323 -0.034055787,0.261917191 -0.574005956,0.988600992 -0.05762224,-0.296815437 0.051468196,0.111635748 -0.350871744,-0.416889006 0.020615312,0.661748906 -0.324384175,0.012324027 -0.32200393,0.339803991 -0.102219413,-0.279553244 0.245420459,1.061394406 -0.102668494,0.437572496 0.095345662,0.12359354 0.485012096,0.745455986 -0.142630539,0.407033366 -0.051809634,-0.30226001 0.255627271,-0.15149162 -0.629081225,-0.682710804 0.271912984,0.12344797 -0.267481793,-0.149173107 -0.569023013,0.30997967 -0.884001885,-0.072337638 -0.357489101,0.084861247 -0.585101132,0.380915807 -0.589224074,-0.013489589 0.813645669,-0.037835384 -0.606073333,-0.918534293 0.498754959,-0.432801785 0.272622821,0.010712547 -0.442394558,0.633351348 -0.305615349,-0.328496602 -0.205099756,0.376611611 0.095204685,0.20885898 -0.174162464,-1.06039711 0.413423765,0.055748082 -0.146343451,-0.131222843 -1.082673105,-0.025414993 -0.048108388,0.693470151 -0.925978423,-0.907151875 0.468905568,0.392992596 -0.373843241,-0.772545875 -0.557620718,0.262854327 -0.295753208,0.498449458 0.292615342,0.23955823 -0.9592791,-0.089836026 0.126908396,1.086572245 -0.486120883,-0.097107128 -0.004256724,-0.482815452 0.339520956,0.981453028 0.284815683,0.337805374 0.751480831,-0.824879999 0.064542701,-0.130094009 -0.350591476,-0.473035119 1.076853608,0.635683718 -0.151623069,-0.272444189 0.403789888,0.340050217 0.465495733,-0.031813145 0.227451049,-0.040228633 0.712710345,0.229615727 -0.104495586,-0.168633763 -0.61570139,-0.133596868 -0.180301789,0.000544353 -0.27360665,-0.500590293 0.163998004,-1.158766331 -0.466649916,-0.517810214 0.340405412,0.826000566 -0.5819412,0.628834368 0.877724755,0.587261695 0.724818682,-0.121201439 -0.224397471,0.098131327 0.070033644,-0.685417518 -0.186825164,0.249006367 -0.603217059,-0.839466835 -1.330672987,-0.344121603 -0.012547247,-0.070656308 -0.017186629,0.245732908 0.82117952,-0.030784117 -0.997731074,-0.141914947 -0.331085379,-0.026489416 0.440018996,-0.88339951 0.17119371,-0.689563088 0.060876928,-0.383837351 -0.310380517,-0.361218868 0.100472634,-0.12943327 -0.117952674,0.281297209 0.056830557,-0.04058035 -0.288964598,-0.487703078 0.594282443,0.148869639 0.529968139,0.360366205 0.668379105,-0.586286879 -0.183584586,0.020117791 -0.152168352,0.77474067 -0.175139812,-0.558185018 0.687072381,0.238952866 -0.149860246,-0.376296811 0.048817572,-0.551233645 0.190594014,0.056912195 0.339106278,0.904478391 -0.133836636,-0.121247906 1.172982832,-0.896575937 -0.463747328,-0.480935288 -0.713278587,-0.377502322 0.021151332,-0.193688693 0.883721735,-0.274138939 0.026375164,-0.21096708 0.05486302,0.548698902 0.431601308,0.524406536 -0.049486602,-0.281438666 0.051848273,0.152518625 0.604242438,0.594673224 0.046873011,0.167150946 -0.376098259,0.014160457 0.19746211,0.650741337 -0.545760217,-0.249020234 -0.729146212,-0.279686479 -0.061356142,0.210262519 -0.550464596,-0.49001982 0.290461536,-0.080791773 -0.073473745,0.754883644 -0.383167308,1.1610538 0.811448789,0.061512952 -0.054970272,0.064799772 0.710852427,-0.963325034 -0.056710524,0.340999292 -0.164640471,-0.540448324 0.186730492,-0.051923255 0.514944065,0.211845138 1.352887524,-0.623385455 -0.517472936,0.883495116 -0.091714929,0.208923793 0.538885654,0.712130074 0.170810113,-0.307906001 -0.093671812,-0.384845832 -0.651429554,0.998285968 -0.139329131,0.063694334 -0.092376954,0.198107405 -0.040888749,0.817062246 0.806120897,0.00075734 -0.23096992,0.183022747 -0.78802515,0.329701402 0.248216537,-0.622317181 -0.055976892,-0.069228655 -0.1021732,-0.372866036 0.317784081,0.86272408 -1.453336977,-0.171405745 -0.276829126,0.297743929 -0.076725914,-0.020943758 0.302645258,0.252381158 -0.130503298,0.138862665 -0.502569231,0.259594544 0.186283057,-0.230847014 0.009723088,0.013553091 0.055264408,-0.445533035 0.578285218,-0.239959484 -0.27111023,0.449761062 -0.624600642,0.158468969 -0.640006298,-0.012347786 -0.511966394,-0.184346488 -0.69382529,-0.517778883 -0.024610557,0.571178961 0.905480365,-0.035012125 -0.049755033,0.07502896 0.388618562,0.793104771 -0.551298163,-0.091643361 -0.110822391,0.472851958 0.283047481,-0.923318553 -0.177479673,0.3730407 0.392631301,0.674431619 0.347023689,-0.185648296 -0.316364948,0.326901718 -0.385979321,0.041041556 1.178908694,-0.054984518 -0.096274668,0.186892197 0.003309667,0.482276933 -0.027273012,0.372340756 -0.28410344,-0.210981842 -0.463487972,-0.068745628 -0.567867591,-0.875703723 0.45698117,0.20159724 -0.493031417,0.34106918 0.333742707,-0.186273058 0.703297745,-0.079220228 0.57888948,-0.081717613 -0.069376599,0.020945744 -0.269660925,0.069886591 -0.53944675,0.88544314 -0.00928107,1.125006476 -0.116307843,-0.302194342 0.078146771,0.427866552 -0.302004877,0.699196356 0.31451756,-0.161370817 0.357084785,0.657409997 0.537943051,0.376004995 1.124877759,0.560990737 0.098945299,1.092869736 -0.287773159,0.143568494 -0.038660433,0.388144527 -0.813959945,0.386666473 0.064961577,0.226850446 -0.212836567,-0.50703055 0.203005874,0.68600055 -0.134405093,0.437898273 -0.690492268,0.158766281 0.018291661,1.024752509 -0.676622266,-0.195548125 0.448503097,-0.289743841 -0.914679856,0.208264378 -0.070938472,-0.798582949 0.228990889,-0.083952321 -0.759808757,0.030732384 0.699527657,0.708198445 -0.442669595,-0.54471196 -0.253165146,0.011312115 0.081666053,-0.474847599 -0.168571928,0.506169229 -0.517975766,0.231611339 0.204668964,-0.895392455 -0.262111729,-0.349353208 0.253250187,0.654924035 -0.252361431,0.370305859 -0.478625164,-0.038837717 -0.047317179,0.1935121 0.324719659,0.133078938 0.1211609,0.414693602 -0.029467045,0.360285799 -0.973897036,-0.572835861 0.725721816,0.468612388 -0.019969839,-0.113846026 -0.431998846,0.647907956 -0.10084512,0.125705413 0.130627781,-0.10026705 -0.759175692,-0.575014602 0.358654316,-0.093672899 0.123416364,0.060645395 0.601383523,0.132932173 0.493019635,0.248907736 -0.2689703,0.047231403 -0.245141371,0.398522993 -0.497758086,0.596112113 -0.180851464,-0.108955794 0.472177406,0.248463147 0.896103506,0.203511134 0.464204698,-0.353920469 -0.914968835,0.043313159 0.410939053,-0.096304273 0.518134381,0.602003612 0.308710072,-0.048681936 -0.427465182,0.144278138 0.532255259,0.22268212 0.364740729,0.548116411 0.331328292,0.759686843 -0.190703601,-1.188980513 0.422945889,-0.11161561 0.055795942,-0.043680386 -0.033885131,-0.533156109 0.743549048,0.442233699 0.378611688,0.293479047 -1.437021247,-0.565000179 -0.213271225,-0.409113951 -0.743703148,0.043029387 0.294395823,-0.566406553 -0.221299755,0.206872325 0.450652401,-0.677095879 0.23391417,-0.236438608 0.011020159,0.737701528 -0.042553916,1.244137393 -0.180633571,0.333612426 0.099753251,0.445676448 -0.554127127,0.865301897 0.336397035,0.210536445 -0.197056817,-0.412049618 -0.371983793,-0.14764969 -0.163056738,-0.281037888 0.937334413,-0.515009224 -0.878999573,-0.86962263 -0.174430455,0.056257126 0.053294615,-0.178367987 -0.268829391,0.099886884 -0.205634566,-0.634370039 0.191174169,0.341620806 0.111257044,0.136733765 -0.336877254,-0.258302771 0.283716457,-0.034546018 0.089741827,-0.143640953 0.343170875,0.132112555 -0.663631831,-0.587232206 -0.383958219,0.237381928 -0.096351254,-0.50046242 0.479525599,0.453957363 -0.264515681,0.615490424 -0.516443495,-0.192922992 0.385872745,0.437344514 0.232678332,0.01784811 -0.612835533,-1.04199187 1.02333862,0.133439885 0.749337224,-0.458825362 -0.694474542,-0.537759408 1.076688232,0.67994973 -0.86455837,-0.098126804 0.051021243,0.880915006 -0.570639564,-0.245497612 -0.188504544,-0.097630424 -0.174391049,-0.029731842 0.161442541,-0.235781258 -0.562169809,-0.279941946 -1.378524861,0.217237016 -0.04790555,-0.519064956 -0.373349902,0.494602265 0.105390709,-0.983324882 -0.424254904,-0.624788077 0.396132383,-0.461118006 0.014593716,-0.129735393 0.301694006,0.143870924 -0.497470052,-0.863515615 -0.105666229,-0.095984892 0.172010544,-0.225881726 -0.044689264,0.647125936 0.827018733,0.541458823 -0.981454357,0.176163663 0.378062756,-0.461677689 0.007209329,-0.491631473 0.472856902,-0.313876116 -0.049404246,0.509582522 -1.369877122,0.618867547 0.210152925,0.074255615 -0.109189631,-0.560127718 -0.494677665,0.219098834 -0.328234448,-0.313820162 0.027831774,-0.049848367 1.226031722,-0.312891493 0.094086787,-0.006213868 -0.489848184,0.155005241 0.951805234,-0.051502128 -0.219259891,-0.18799107 -0.414863048,-0.057019598 -0.623615659,-0.633630208 -0.336904582,-0.316696508 0.967583632,-0.265070798 0.453280717,0.07866059 0.368263386,-0.85767441 0.073312652,-0.534207929 0.141560398,0.021605123 0.29463836,-0.205723551 0.107924738,0.241875528 0.077526617,-0.202731816 0.476913318,-0.03475542 -0.082926351,0.065333473 0.127501873,-0.507183736 -0.44873618,-0.232829471 0.791985052,-0.123156782 0.696379314,-0.591342723 -0.906129116,-0.069832961 -0.108159839,-0.177831635 0.274928028,0.113902884 0.241368119,-0.280671753 0.380424364,-0.185618776 -0.222829008,-0.114124526 -0.60266671,0.011695955 0.15073337,-0.102450831 -0.769572612,-0.5247008 0.317685362,0.008444551 0.351475887,-0.15317145 -0.952941432,0.080950837 0.469460725,-0.258707363 -0.112246053,0.19667412 -0.336908388,0.964146396 0.222893722,-0.039475689 0.640308553,0.638383885 0.782565067,-0.062544927 -0.600273018,-0.167325783 -0.218847483,-0.807057176 0.073190741,-0.624041687 0.033009538,0.864096475 -0.222518008,1.149147093 -1.171056193,-0.195664651 -0.139191184,-0.159744681 -0.590901816,-0.649236335 0.016562636,0.421204879 -0.418858506,0.031898273 -0.05880554,-0.185674573 -0.370761286,-0.658626678 -0.204173485,0.493300323 -0.18888538,0.070341796 0.664183356,0.236022376 0.358218153,0.012228536 -0.116144594,0.561518813 -0.61311345,-0.064993515 0.523769045,0.221624959 -0.718203593,0.185322335 -0.591234464,-0.266863129 -0.388102418,-0.292068741 -0.486156755,-0.933659297 -0.451828781,0.660680671 0.643601973,-0.551723718 -0.0530938,-0.545629578 -0.357935477,-0.145483243 0.335861098,-0.280201689 0.098816813,0.451490671 -0.610048363,0.040965179 -0.28048256,0.323216585 0.266866317,-0.304411594 0.975157732,-0.809467633 0.790971615,0.475038003 0.418893761,-0.449299152 -0.006534831,0.55872541 -0.862897981,0.145939342 -0.365426787,-0.65810161 -0.107706933,0.019928669 0.245103334,-0.23675817 0.029696712,-0.246661713 0.029156026,-0.538767352 0.919181553,-0.090338242 0.19382545,0.46896026 -0.140275362,-0.045462411 -0.214258869,-0.450338221 0.047662468,-0.164596366 -0.406665704,-0.204660229 0.684095039,-0.028453093 -0.143768015,-0.63801497 -0.264276212,-0.013796375 -0.436506462,-0.478743063 0.467946536,0.534279814 -0.638633662,-0.083798825 -0.234369919,-0.206885623 0.156258137,-0.773715062 -0.054161151,0.753928395 0.125395209,0.137501815 -0.658096697,0.138367407 -0.215037725,-0.30076371 -0.852054849,-0.043750787 -0.421068683,-0.406690565 0.574125298,0.469308826 0.126415768,0.101167194 0.042643593,0.604988772 -0.466813065,0.368866247 -0.278409803,0.232054475 -0.50818516,-0.805699692 0.026762625,0.547686189 0.382566803,-0.491001457 0.149597408,0.020813967 -0.308807874,1.181135924 0.276393657,0.905005666 0.193954249,1.647496958 0.421605471,-0.214314434 -0.220313793,0.147238778 -0.589682687,-0.756696569 -0.042284533,-0.686976839 0.151388848,0.054721019 0.779546866,0.174311104 -0.034831264,0.834099833 0.213519707,0.423403482 -0.041631599,0.670217559 1.07819887,-0.071696652 0.66898403,0.921546738 -0.116152224,-0.335649911 -0.063702045,-0.928671905 -0.010842702,0.996521541 0.056627042,-1.085326531 -0.282547705,0.424982639 0.040350194,-0.863263625 -0.347885703,0.918925148 -0.548101066,-0.313081241 0.402220279,-0.630520762 0.32832206,0.187397949 -0.284015339,-0.242070163 0.636392921,-0.20186486 -0.096271958,-0.265611824 -0.141832609,0.066854925 -0.476835856,0.293974559 -0.012175323,-0.484207958 -0.068492982,-0.680512404 0.033759196,0.82816744 0.22258418,-0.691066691 0.453300194,0.951458858 0.163705283,-0.25060681 0.496280813,0.122105247 0.532700287,-0.111225169 -1.465241028,0.229513931 -0.181386871,0.073981389 0.284966269,-0.547011806 -0.559817736,0.157470467 -0.480325179,-0.177397356 0.136868236,0.275828894 -0.220711644,-0.278033295 -0.865743909,0.035453318 0.452927422,1.041010536 -0.420419821,-0.19454071 0.193173927,-0.340292528 0.206215057,0.094311686 0.760634322,-0.069273819 0.098282118,-0.459220056 0.332805176,-0.345752531 0.570295546,0.746945998 -0.203190564,0.632356665 -0.827780677,0.064117098 0.071465018,-0.317539128 0.662957154,0.544512329 -0.70313883,0.06174869 0.506065807,-0.099155047 -0.030065421,0.415122843 0.049740712,0.37430011 -0.174610899,0.044500355 0.51842664,0.363245966 0.71207824,-0.006872309 0.785424396,-0.236468403 -0.483700367,0.827722108 0.379642922,-0.957529316 -0.188094827,0.019939263 -0.491704707,-0.27665005 0.194947551,-0.236081647 -0.008975357,0.011299048 0.395862303,-0.487040141 0.896198938,0.319374677 0.518358442,-0.435934302 -0.347842808,0.645734161 0.069811332,-0.261840016 0.706622747,0.588512876 0.587218798,0.152938175 -0.792390791,-1.349315291 0.47321496,0.744195673 -0.170257043,0.785074805 -0.312681345,-0.209470196 -0.550601114,0.600970759 -0.15589773,0.333416215 0.344328253,0.433129951 0.717635939,-0.802655534 0.069453549,-0.725446222 -0.036526193,-0.68099383 -0.101167969,0.4904889 0.476899668,0.225527673 -0.540596724,0.886520576 0.125009352,-0.597453355 0.51081099,-0.51528435 0.530925756,0.314557525 0.208535105,-0.585661908 -0.581183076,-0.094236109 -0.410542365,-0.085992258 -0.360244129,0.440493422 -0.721635984,-0.414862421 0.020010167,0.109587245 0.611473342,0.403890987 -1.223346958,0.173398429 0.379193946,0.734386748 -0.101330827,0.010435783 -0.384566924,-0.143110776 0.385004406,0.096390214 0.324192579,-0.484894285 0.048108689,0.224420911 -0.459821677,0.814823096 -0.352430889,0.775752346 -0.808617031,-0.546748436 0.940446954,-0.408057748 -0.07779718,-0.183331375 -0.377256874,0.062995388 -1.080476222,0.147875328 -0.21473084,-0.884171672 -0.274563952,-0.156771075 -0.701157941,0.398858794 1.191985912,0.495322857 0.436472175,0.818951029 -0.767832944,0.224678308 0.566987626,-0.392901886 0.52242008,0.051172937 0.294915344,0.102660622 0.199551867,0.273413237 0.072474592,0.465416465 0.309580609,0.313548263 -0.516309553,-0.913998615 -0.324678069,0.514920778 -0.501003629,0.616803116 -0.08294048,0.599249114 0.073328148,-0.539129556 0.301028262,-0.269697709 0.264527763,0.018565286 0.72284792,-0.571519193 0.298654644,-0.721195808 0.628158461,0.781941559 0.548721021,-0.306206476 -0.294230207,0.284925217 0.375650641,0.334793989 0.226757171,-0.096207754 0.059589117,-0.013007053 -0.451693854,-1.189791196 0.293991228,0.155911997 0.031864374,0.625985393 -0.177417927,-0.093485692 0.461247872,0.117025648 0.496162684,-0.464484972 0.436781951,0.548644817 -1.305521731,0.311609373 -0.448658416,-0.45273797 0.468617659,0.078221576 -0.372668167,-0.231955827 0.204269815,0.53921424 0.091456336,-0.438005965 0.553701146,-0.016269368 -0.355185835,0.308000759 -0.028901185,0.329020345 0.172461708,-0.320093777 0.636327224,0.780676851 -0.088690418,0.655711274 0.145202998,0.874646422 -0.671424103,-0.69341435 0.316525015,-0.110629543 0.103409853,-0.167315465 0.319653671,-0.546340038 -0.205335282,-0.839501192 0.842678311,-0.123124719 -0.069913052,-0.48933938 0.060569374,-0.519113696 -0.052839588,0.027111082 0.423152446,-0.450689223 -0.384224512,-0.778958799 0.100731203,-0.031640113 0.287284799,-0.207211689 -0.622619944,0.590965096 0.113859404,-0.401627444 -0.296901031,-0.248778922 0.714405393,0.41382637 0.352449034,-0.696466068 -0.862566955,0.560593346 0.459642391,0.276445006 0.108870463,-0.061636324 -0.280662381,0.555428834 -0.177792814,0.481286672 -0.636071083,0.04184453 0.193098426,0.237441451 -0.819261569,-0.091411697 -0.070131389,-0.563691956 0.227587804,-0.550624634 0.041691681,0.39049515 0.429586661,0.544237352 0.025274052,0.428736127 1.154472052,-0.548956833 -0.429731587,-0.041193217 0.769558084,-0.237248931 -0.807233089,0.130009845 -0.538658229,-0.529404461 -0.450680274,0.477956788 -0.760556181,0.666504377 0.742346923,0.216042193 0.51685166,-0.536251514 0.685633249,0.377243138 -0.304460721,-0.208119515 0.042798547,0.690084277 0.559253746,-0.078577278 0.530264894,-0.822825766 0.280068387,0.21036116 0.07907377,0.248438909 -0.582086611,0.162622489 0.154843098,-0.590341744 -0.089246907,-1.321913566 -0.327262286,-0.40047672 0.788078632,-0.310751839 -0.350701869,0.298328559 0.121438195,-0.371175601 0.258017878,-0.916685117 0.525577381,-0.215340824 0.183652198,0.242841223 0.986607657,0.075782683 0.222568374,0.634894079 -0.244240084,0.352894188 0.051255768,0.471092911 0.334564623,-0.080536442 -1.095254404,0.091077228 -0.047782026,0.628359284 0.020762854,0.209134563 -0.119300437,0.594606483 0.025684268,0.255998235 -0.99590318,-0.802603551 0.173118142,-0.022367379 0.001514671,-0.64070349 -0.24621425,0.31947607 -1.432209361,-0.730391415 -0.205606368,-0.440420262 0.059104269,0.142670972 -0.035580384,0.315317725 -0.304348714,-0.372362016 0.160822644,-0.356764855 -0.455244766,-0.341019709 0.349640524,-0.113517759 0.412866188,0.22331526 0.478771706,-0.00143131 0.399423135,-0.093899916 -0.176063605,-0.232774119 -0.012473414,0.334112184 0.622536686,0.390716887 0.305470979,0.58946056 0.173441516,-0.576763542 0.639589855,-0.007639668 -0.313422921,-0.189064452 0.012631636,-0.326032925 0.650754501,-0.331357889 -0.124894847,-0.108565269 0.067499172,0.534607634 -0.073336615,-0.004185221 0.616965297,0.780722934 0.067712991,-0.644798989 0.033620146,-0.882469545 -0.340611054,0.71028864 -0.20923147,0.428597315 -0.784607105,-0.409993438 0.20479327,0.218243302 0.423901596,-0.133696723 -0.668692155,-0.706838964 0.200677364,0.066258058 0.164467949,0.98851173 0.0976605,0.165234199 0.035731305,-0.262489987 0.81746663,-0.229236944 0.166503539,-0.029239479 0.700906311,0.266676584 0.22550851,-0.047159185 0.243661798,-1.115007597 -0.269868728,-1.479903567 1.345453708,0.100215201 -0.029908038,-0.404995318 -0.248737934,-0.504519088 0.191208575,-0.117862529 0.204590089,0.241603481 0.361872961,1.201686763 -0.457462287,-0.323316603 -0.068592546,0.888952388 0.787146639,0.231350916 -0.241458852,0.454430872 -0.178095257,0.180405042 0.305111137,-0.03576416 -0.303017574,-0.113642385 0.567256002,0.448132022 0.211234144,-0.876316961 0.044774856,0.749273317 -0.795856997,0.029301243 -0.173583507,-0.249955723 1.017147992,0.331083176 -0.142952578,0.140908542 0.327189391,0.08980618 -0.462373808,-1.20558837 -0.79535152,0.15091736 0.354699235,0.543459045 0.724663398,-0.551729988 -0.772190155,0.479133012 0.423034624,0.136232414 0.165466235,-0.086411686 -0.183093655,-0.284631841 0.874642492,1.188176619 -0.502572481,-0.176180168 -0.058719649,-0.210515746 0.334252773,-0.495001012 -0.541237011,-0.008375138 0.552983903,0.51428871 -0.057076691,0.1236571 0.614574152,-0.628274799 -0.011648408,-1.030349838 -0.367552733,-0.125141275 -0.670257417,0.266185791 -0.686532946,0.510757587 -0.074528547,-0.08311814 -1.00313798,0.222673302 -0.779784269,0.487478896 0.981350785,0.207328286 -0.089159112,0.249095602 0.678810337,-0.159082196 0.824496024,-0.564936895 0.059742285,0.469371015 0.001810308,0.366851077 0.098221723,0.317629938 0.339869753,-0.297476811 0.400562422,-0.25847976 -1.00760029,-0.196637852 0.023697994,0.156193249 0.306548303,0.837825197 -0.085009241,-0.092442777 0.112879762,-1.095242768 0.446202071,0.172664162 -0.073806549,0.313543226 0.768591155,-0.89236659 0.226309677,-0.021663844 -0.797847126,0.245711553 -0.093582646,0.067326383 0.283817234,-1.087573554 0.081339558,0.540706118 -0.685991506,-0.016139394 -0.941976256,-0.7627522 -0.034023504,-0.014284473 0.343653467,-0.099958996 -0.354000364,-0.868412044 0.188838634,1.000210105 0.29037887,-0.112055508 0.487313046,0.557309695 0.293726255,-0.481818414 0.122639389,-0.610203568 -0.783001852,-0.217594185 -0.254064074,0.050640881 0.429139427,-0.119024854 0.22593336,-0.996682154 -0.448952118,-0.508268795 0.159505572,0.35284143 -0.046982255,-0.308897869 0.632154162,-0.236962083 -0.017004683,-0.942707283 -0.194084515,-0.250685493 -0.130227416,-0.690011505 -0.438717257,0.52388113 0.646375715,-0.455532953 0.082593927,0.061431831 -0.301603538,0.34967318 0.19930195,-0.075303624 0.429476063,-0.326423059 -0.210956234,0.732157435 -0.152744445,-0.141216481 -0.029594007,-0.173587577 -1.000936094,-0.520221036 0.077718211,-0.296799341 0.021281114,0.618136667 -0.131019599,-0.406642547 -0.510596629,-0.009260386 0.532678552,0.504613669 -0.228795419,0.317621026 0.067651956,0.054102985 1.056393798,0.491209893 -0.295916848,-0.687814632 -0.334368947,0.162891219 0.07693937,-0.479492214 -0.142695806,-0.558369063 -0.24634822,0.270792101 0.20488577,0.474189356 0.114678225,0.194632519 -0.537312817,-0.087876453 -0.690375427,0.607941072 0.299116621,-0.079657907 -0.419734321,0.170336856 -0.47771253,0.314675527 0.618109035,-0.262721102 0.037992076,0.673205586 -0.269786454,-0.23733413 0.38676906,0.206267193 0.652150262,0.410982544 0.492554987,0.106933961 -0.505860755,-0.786211608 -0.303014513,0.40527325 0.158363028,-1.433104803 -0.682345554,-0.002116973 -0.19098314,0.109365939 -0.007146371,-0.775934784 -0.032709066,0.029308426 0.111716209,-0.044767241 0.091591083,0.043737391 0.445330621,-0.436694775 -0.026535922,-0.534274313 -0.414929058,-0.377162624 -0.060514549,-0.400755199 -0.104829022,-0.479069325 0.019794781,-0.493650427 0.740495099,-0.457271596 0.283330029,-0.119834578 0.894790179,-0.352965087 0.557023926,-0.00883258 0.897037264,0.050001265 -0.68227445,-0.657117911 -0.353719992,0.387209195 -0.278142173,-0.251690141 -0.155040547,0.553123464 -0.188089668,-0.82956499 0.229263004,0.1105673 -0.630574575,0.439659821 -0.263732582,-0.095506858 -0.278407111,-0.496452914 -0.187219363,0.357769832 -0.30219999,-0.030498655 0.601563535,-0.158397745 0.384436617,0.95569207 0.119175512,-0.964053137 -0.707514071,-0.267712182 1.466887193,-0.195882861 0.467512879,0.123420195 0.616942261,0.026580468 -0.945692361,1.276992809 -0.111325647,0.009375209 0.384063764,0.867135579 0.193976829,0.298461752 0.304566516,0.53122256 0.295259304,0.412469056 -0.217570377,-0.242785971 -0.125384949,0.792691983 -0.463134692,0.39203254 0.543717902,-0.045905721 -0.971979608,0.288568431 -0.140310219,0.675360827 0.406038778,0.057209648 -0.103851844,-0.356976902 0.72537866,-0.5066733 0.420746589,0.633359075 -0.432868911,0.033451482 -0.029938903,0.275222202 0.005765577,-0.74311526 0.134555726,0.070297467 -0.264080253,-0.227716509 -0.308536921,-0.229427541 -0.131186258,-0.33031798 0.456173586,0.349833784 0.561805293,-0.083979954 -0.301759857,0.198667704 0.027661697,0.469192346 -0.500329216,0.608187852 -0.379089415,0.362737638 -0.305717907,-0.072677218 -0.658361132,0.055680177 -1.003707509,-0.006430484 0.384001064,-0.969706225 0.202880657,-0.172589085 -0.415857939,-0.406294907 0.479037887,-0.18771773 0.905359626,-0.799973735 -1.275007242,-1.387350767 0.57512754,-0.546640994 0.613946827,0.725732879 0.076051581,-0.019153682 -0.261541905,0.127732931 -0.550796682,-0.67956413 -0.439865141,-0.471592261 -0.318350129,-0.699039798 -1.052965715,-0.104298457 -0.32312918,0.402205798 0.493396713,0.22798918 -0.377450073,0.646823342 0.782602431,-0.26552615 -0.02502463,-0.353727728 0.055514353,-1.137078199 0.237735523,0.163110213 -0.469501952,-0.215232339 -0.38702281,-0.470904807 -0.211779234,0.676513696 0.886439747,-0.103051849 0.213275329,-0.387364397 -0.047235087,0.626247735 -0.558297717,0.29210639 -0.043717573,0.441485267 0.196263045,0.428168618 -0.180311085,0.007069318 -0.443992181,0.655765246 -0.473208277,0.479374581 -0.109955778,-0.115201692 0.171110058,0.284651561 0.484962065,0.466145679 -0.66772657,-0.125058217 -0.400439738,-0.159762315 -1.023398172,-0.402533395 0.055028109,0.179830657 0.358050187,1.250826184 0.127060301,-0.144572457 0.614381094,0.62997516 0.291702003,-0.321680029 -0.293562387,-1.135713507 0.723332679,-0.073896241 0.221697018,0.083287225 0.288973443,0.669393115 -0.460917482,0.446365034 -0.124663353,-0.400166518 -0.610949323,-0.111468524 -0.036269823,-0.370351104 0.682450623,-0.496989873 -0.22876551,-0.495423791 0.03260011,-0.632191638 0.391990168,-0.581108643 -0.793854037,1.148888816 -0.684682157,0.284355064 -0.463759901,-0.443108392 0.15042078,-0.018908472 0.040234473,-0.055962788 0.623373415,0.291273277 -0.61722455,-0.445302702 -0.219534647,-1.060970714 -1.050796977,0.411271623 0.809378086,0.384654947 0.542164245,-0.185744399 -0.320400453,0.871908675 -0.126409913,-0.224587698 -0.067414637,0.221260813 0.897677996,-1.087021043 0.019198359,1.060514205 0.206499144,-0.034280087 0.349786061,-0.696572547 0.344895472,0.258643249 -0.835529733,0.102528268 0.370024154,0.854342131 -0.46206245,0.157066143 -0.015844287,0.398541999 -0.963896491,0.004945262 0.107151515,1.014197989 -0.502519433,-0.261898887 -1.089476746,-0.217071355 -0.836274565,-0.17383926 -0.710361068,0.48474963 0.275265819,0.549416951 0.155216588,-0.172909815 0.342536956,0.166299465 -0.265955245,0.96816487 0.09089273,0.97773992 0.205798089,1.304007263 -0.042529524,0.019749239 -0.553353102,0.778350625 0.564566798,-0.120339419 0.834007812,-0.306481211 1.009551463,0.351374671 0.446274018,0.059751691 -0.093602342,-0.381024664 -0.063848708,0.063945949 -0.15266507,-0.567585283 -0.131433419,0.037636572 -0.025734322,0.126331058 -0.98633168,0.746215294 0.005614125,0.50274116 0.117672429,0.149980762 -0.475184927,0.86294606 -0.878573988,-0.226244591 -0.179980325,-0.045562543 -1.560794779,-0.402268743 0.836273556,0.194983644 0.345274908,-0.518489437 -0.48833516,0.21488198 0.007567088,-0.196764988 -0.082727088,0.073491639 -0.830106684,-1.10957149 -0.43921719,0.663401927 0.482907919,-0.372469531 -0.577910653,-0.289817238 -0.375697856,-0.480283953 -0.372542178,0.241497435 0.613526243,0.021312022 -0.095428997,-0.429534766 0.277155373,-0.112365151 0.385716564,-0.165574118 -0.1900334,0.521567112 -0.564275694,0.563740724 0.085050889,0.431230032 -0.179271166,0.18781826 0.721469245,-0.194335698 -0.259973432,-1.007366639 -0.155321047,-0.121641973 0.341368732,-0.000808845 -0.33178921,0.368307337 -0.008975274,-0.152215636 0.248295508,-0.485797121 -0.20213735,-0.033369543 -0.605824405,-0.015124144 0.156371858,-0.104228987 -0.139930932,0.682789028 -1.009927567,-0.542270205 0.134789432,-0.424783475 0.065899625,0.190036065 -0.839385635,0.083076239 -0.262939752,-0.806953993 -0.087562312,-0.826448705 -0.278315382,-0.063264586 0.275924205,-1.162576367 -0.788025757,0.246124436 -0.477146386,0.097547052 -0.224931712,0.384941238 0.721953198,0.202416512 -0.077627044,-0.526643592 -0.510859454,0.136667054 0.769234874,0.636176395 -0.115587987,-0.565433417 0.275961931,-0.105600565 0.560897018,-0.804103575 0.204772696,0.002917952 0.650130763,0.322160909 -0.395460636,-0.597458667 0.799309727,0.143105365 -0.911450137,-0.303252953 -0.487681557,-0.371976764 -0.293230329,-0.04084566 0.116554776,0.777565587 -0.236724312,-0.418258643 0.29155549,0.292888478 0.210014724,0.080447966 0.339430454,0.670685957 0.741230513,-0.446920042 -0.712642019,0.56252634 0.48498749,-0.017997635 -0.132732884,0.152289448 -0.401552775,0.169205025 -0.888517051,-0.618136308 -0.424518446,-0.105137276 -0.14973911,-0.41244361 -0.97012224,0.144605044 -0.180016394,0.465211496 0.255053094,-0.046205257 -0.648985209,-1.164937279 -0.002423701,-0.792958933 -0.672426117,0.300915733 -0.025842093,-0.61066223 0.447424897,0.456247057 -1.089941136,1.022486763 1.153208216,0.087768892 -0.583875178,-0.02434912 0.470214859,-0.497710159 1.039550798,-0.018400619 -0.471912012,-0.34731817 -0.337727073,-0.531561603 0.510825164,-0.284886562 -0.408751715,0.626936216 -0.478560367,0.284381373 0.79055964,-0.561702956 0.883221401,0.212181853 -0.113517579,-0.183122294 1.140555097,-0.640112012 0.951873608,0.260978354 -0.034310768,0.091045147 -0.40692957,-0.242737193 -0.336627657,-0.71810436 0.701015232,-0.307571034 0.270008304,0.377387851 0.321137084,0.438147365 -0.006359882,0.920962599 0.091439777,0.88227035 -0.24425729,-0.396881518 0.567618368,0.695085489 -0.163025511,0.016393644 0.995931267,-0.350868549 0.293386447,-0.054456143 0.494166612,-0.151933411 0.737811968,-1.153554731 -0.02347669,0.079974828 -0.88376555,0.411988694 -0.304816986,-0.31078725 0.296628456,-0.119322081 0.60169361,0.105807112 0.104128413,-0.067540162 0.419569679,0.806074333 0.471520717,-0.498813865 0.51404656,0.237645372 0.373781922,-0.076445044 -0.095713533,-0.406646801 0.512345082,-0.975136008 -0.252110987,-0.145070456 0.17427443,0.455736876 -0.254686938,0.656081032 0.238912229,-0.360534787 0.250492698,0.259048542 -0.052790259,0.481055902 0.013654369,0.312535756 0.216857902,-0.543346478 -0.565532242,0.817678833 0.51034345,-0.56263642 0.134637145,0.32082739 0.274274321,1.00399444 -0.084710581,0.36518289 -0.939220125,-0.720467476 0.374153598,0.208973754 -0.13005007,-0.48984609 0.30913033,-0.133914153 1.023968481,-0.254647933 -0.577812419,0.532615404 0.676470703,-0.275702256 -0.183760991,0.376291451 -0.029155232,-0.040165554 -0.266109046,-0.673161408 -0.249250239,-0.329607637 -0.575069789,0.191181283 0.063120461,-0.36450416 0.23643195,0.239230507 -0.093262608,-0.159511807 -0.809643225,1.283640151 -0.201379523,-0.551239453 0.206406121,-0.193511881 -0.360359702,-0.306463315 -0.295032615,0.374760367 -0.584813309,0.568573285 0.295728323,0.485970587 -0.334319475,-0.581951394 1.583968824,0.838348256 0.506519709,-0.379205227 -0.08299366,0.808144396 0.001208236,0.078811159 -0.358650992,-0.190386368 0.140669014,0.756405614 0.003640949,0.483512869 -0.864850113,0.625930403 -0.921736808,0.511066868 0.300601516,0.523009048 -1.158968785,0.166056848 -0.190156037,-0.056333284 0.82758245,0.050882429 -0.831427525,-0.570216794 0.147364833,0.307866725 0.78495072,-0.69354371 0.255973448,0.061428279 0.642951201,0.080252136 -0.483757377,0.608876668 0.316194677,-0.89728377 0.091539334,0.575652926 0.675058058,0.319684976 1.243663836,-0.136033398 0.057330849,0.017318806 0.547870182,-0.697899172 -0.201354936,-0.924127114 -0.179534857,-0.661412866 -0.276394115,0.041099937 -0.67733749,0.239961444 0.036669431,0.130271027 -0.019494265,-0.337402733 0.360934942,-0.383464487 -0.107459479,-0.617765651 -0.457792467,-0.011906439 -0.06421927,-0.536424655 0.920105244,0.350845935 0.225265628,0.398004229 0.137396839,-0.024685718 0.528188209,0.124587143 0.89602714,0.471987478 0.855409608,0.751104152 -0.215714467,0.060695213 -0.039638432,-0.200640579 -0.181612522,0.490383261 -0.100495237,0.315349698 0.225640965,0.396475786 -0.239970992,0.754323156 -0.58276259,-0.350238976 -0.119471986,-0.205587968 0.724917326,-0.370983331 0.926436936,0.077345673 -0.201615752,-1.253287262 0.413484158,0.655883905 -0.064567451,0.522558958 -0.060763443,-0.006854611 -0.337136642,-1.012855312 -0.789216899,-0.077085133 0.901038198,0.33927425 0.400558407,0.923967957 -0.896132364,0.926634501 -0.173709363,0.00328081 0.777157965,-0.441994543 0.053246397,0.737576944 0.09625446,0.68678456 0.424613984,0.666312323 0.495257306,0.490934504 0.313791106,-1.293941607 0.207607743,0.038752949 0.737469532,-0.245832663 0.854736037,0.187657704 0.114179801,0.277076429 -0.104058441,0.200205235 0.006072878,-0.148814556 0.174861332,-0.056281669 -0.338822321,-0.150724664 0.32109134,-0.134948767 -0.644719018,0.18626114 1.113033627,-0.357610341 -1.241709679,-0.636331641 0.086417139,-0.178007841 -0.029452074,-0.423814542 0.273726149,0.244534278 -0.205236801,-0.286961605 1.20120258,0.359416004 -0.07211047,-0.343408218 0.011698221,0.080107494 0.562060971,-0.270633918 0.348887245,-0.580768796 0.090453739,0.114496577 -0.084801415,0.098752136 -0.117264024,0.785126512 -0.677465346,0.187540768 0.314978039,0.578962801 0.223635076,0.431639681 -0.522020929,-0.12207986 -0.093642787,-0.771219928 0.643645435,-0.082037442 0.637046407,-0.290394835 -0.610580679,0.240485278 0.401010953,-0.093552465 0.06341535,1.041573599 0.194257429,-0.712695529 -0.436098087,0.305440598 -0.103543495,0.351115288 -1.029206344,0.568600331 -0.369561659,-0.668895533 -0.153311062,0.518458349 0.651708817,0.205731808 -0.529329928,0.114987733 0.150860093,-0.166869166 0.044986593,-0.922018343 -0.681696125,-0.477962703 0.141261936,-0.710840618 0.790349725,0.357864664 0.470020123,-0.008046989 0.565715116,0.150973779 -0.10684795,-0.694967016 0.478919452,0.118102809 -1.185404815,0.41113121 -0.626629305,-0.694811691 -0.087423976,-0.094229653 0.054255796,-0.596669563 0.258460227,0.221815728 0.360817193,0.320428905 -0.229971916,0.365187002 -0.240805773,0.422093209 -0.174637661,-0.442923552 -0.280882986,0.429773629 -0.062351349,0.265915303 0.438776164,-0.062932044 0.231673457,-0.280010993 -0.219682668,0.437085908 -0.346208646,0.202077282 -0.052226397,0.229851513 -0.103999956,-0.771219557 0.609654206,0.493585423 -1.13521785,0.785237951 -0.486726335,-0.544722469 0.31059513,0.448179221 0.331280836,-0.564554466 -0.325495124,0.335460713 -0.104368534,-0.239362673 0.898455824,0.433595374 -0.549389207,-0.375552174 0.888871046,0.721969103 0.158472204,0.393913893 0.524788211,-0.410076359 -0.263140393,0.32856126 -0.560106268,-0.856917159 0.199129747,-0.222738368 0.210653402,-0.14041629 -0.212576825,-0.116336845 -0.438495503,-0.21922501 0.649998302,0.256766285 -0.668393378,-0.042454288 0.714621215,0.039594862 -0.29734656,0.00229868 -0.941343229,-0.104471613 1.090155616,-1.036381698 0.189388639,0.290903333 -0.534656414,-0.591245593 -0.187572491,-0.111578528 -0.397398859,0.086723808 0.157561434,-0.369701915 0.066969693,-0.010609012 -0.620275788,-0.22831557 0.128240268,0.510151855 -0.337035103,0.423908491 0.316613677,-1.600366159 0.301182437,0.223384383 -0.017016843,0.59387002 -0.39485318,0.839661444 -0.235217777,-0.35547189 -0.506409069,-0.997234702 0.416776635,0.400435984 0.677011781,0.260565905 0.025036356,0.664709075 0.168440378,-0.087942962 -0.104499437,0.299560517 0.109229994,0.816039468 0.936737604,0.817586299 0.130860902,-0.983356524 0.66734726,0.355340969 0.123873323,-0.18836766 -0.687892431,0.144678012 -0.595269891,-0.287747326 -0.48690931,0.124940361 -0.049815599,0.240959948 -0.0553675,-0.292025385 0.596097298,0.521356314 -0.827942965,0.692271799 -0.522821645,-0.084132132 -0.870119567,-0.14832267 0.256560386,0.692651538 -0.222978423,0.108623293 -0.919596888,0.073682313 -0.40992382,-0.343492724 -0.497604774,-0.070709422 0.148655064,1.10436043 0.278708248,0.453954896 -0.636668504,-0.560004213 0.512536305,-0.490815719 0.233306086,-0.801896437 0.116959159,-0.163623028 0.132220949,-0.112471288 0.216209961,0.380739694 0.486611077,0.581167713 -0.264597029,0.20458632 0.022884242,0.063559711 1.397345707,-0.679479473 -0.544000101,-0.031658871 0.147714785,-0.426868222 -0.718982283,-0.233463323 0.10654074,0.362044233 0.487480317,0.388904062 -1.176731078,0.930293324 -0.292258906,0.474079143 1.126937075,-0.132164335 -0.387010528,0.535213133 -0.71183399,0.40489817 0.228834691,-0.195805629 -0.361500445,0.29902631 0.741872314,0.277414254 0.541024431,-0.856133038 0.399879222,-0.319138793 -0.712607901,-0.099849071 0.179601916,-0.676867067 0.190611275,-0.669352822 -1.041729266,0.462845767 0.313916951,-1.389039954 0.150306623,0.199228921 -0.529198619,0.426897899 -0.10432473,0.129242698 1.023986615,-0.142886437 0.392048639,0.345885529 -0.638614657,0.404229399 0.045562003,0.556487526 0.873422653,-0.690579348 0.016226092,-0.568325982 -0.255716358,0.002545721 0.582402619,0.318210928 -0.232638671,0.033260514 -0.115315024,-0.1215847 0.427904576,-0.250518661 0.889572166,-0.393453936 -0.412671358,0.49061782 -0.114439976,1.135340936 -0.034518659,-0.151823686 0.447065529,0.402403513 0.770203085,0.531964798 0.84555325,-0.019073658 -0.113608458,0.405210033 0.465605481,-0.270873284 -0.436801315,0.322420013 -0.268910687,-0.166269094 -0.598472096,-0.839221428 -0.550207909,-0.589036326 0.295609965,-0.274550035 0.366856284,0.693070206 0.108638781,0.72228693 -0.381107022,0.1065067 0.148451566,0.246996641 -0.602496892,-0.46360953 -0.877882042,-1.039181169 -0.251371303,-0.076501689 -0.20606393,-0.016151771 -0.474873943,-0.09059163 -1.002071085,-0.491755991 -0.212332689,-0.675185956 0.26635203,-0.181071551 0.393087655,0.593887605 0.797727064,0.877332643 0.020886578,-0.387668731 1.138237525,0.3411909 0.226350109,0.626988879 -0.078449304,-0.518803388 -0.965009102,0.031988329 1.215202708,0.105498598 0.705350373,0.287099079 0.316846488,0.686065614 0.559227482,-0.728579841 0.522186315,0.419677182 0.429603953,0.193272197 0.470917646,-0.254177692 0.531065792,0.093940379 -0.345052415,1.254810912 -0.134268928,0.01828504 0.058761001,-0.505284952 -0.427802663,-0.655947017 1.08760317,-0.754257512 -0.662224945,-0.381494506 0.071098152,1.809053274 -0.397322474,-0.159601265 0.044611904,0.805629856 0.084504284,-0.674882549 -0.024182196,0.718431757 -1.547327661,-0.335882943 -1.248126739,-0.550552747 0.360310145,-0.39749099 -0.446078927,-0.115406644 0.048510006,-0.504572878 0.400014931,0.448704936 -0.084148411,0.359792078 -0.357234279,0.91106117 -0.113302828,0.160298889 0.804270464,0.054374239 0.780018765,0.150887906 0.972952381,-0.018804102 0.750420006,0.547722324 -0.796598558,0.277398231 -0.927760945,0.537224298 0.032604041,0.631721696 -0.088860444,0.093800955 -0.738872043,1.677018056 -0.997146217,0.095989591 0.623760087,-0.416662646 0.835187888,-0.312936385 0.131961594,-0.459421226 0.085373475,-0.436409416 -0.061052694,0.32266685 -0.247213704,0.552124948 -0.695267482,-0.898339807 -0.102450146,-0.133152611 -0.524436771,-0.31510736 0.095373245,-0.351050646 0.353829031,-0.426990031 -0.145432341,0.133284146 0.741998293,0.192106574 0.837612577,0.099915942 0.618705119,0.370485062 -0.705999988,0.256244378 -0.770872315,0.068096154 0.038472205,-0.790626626 0.079161349,0.844866155 0.336722216,0.728720061 -0.734793772,-0.055904211 -0.137580507,0.489713767 0.175886279,-0.175449295 -0.832426556,0.654990715 0.093466076,-0.836554375 0.951413748,-0.538456376 -0.759387862,-0.592852717 0.665263316,0.195369577 0.525800244,-0.57617805 0.527560836,0.244372374 0.715703482,0.777994604 0.010323502,-0.289248046 0.100667444,1.109638661 -0.494896377,-0.22821856 0.259239807,-0.567892421 0.637127938,0.563383971 0.096089665,-0.239195861 0.587584782,0.423098154 0.621196466,0.053325272 -0.645694972,-0.519064917 0.168985544,-0.165836601 -0.23757634,0.302678359 -0.082977198,-0.170443805 -0.083194315,-0.803184334 -0.561580268,-0.701701099 0.470473362,-0.426548293 -0.456638346,0.196593922 0.242936061,0.464117715 -0.897598489,0.175982694 -0.184900735,0.018167576 -0.104340285,0.665873019 -0.330555881,-0.002824735 -0.088298142,0.435662758 0.517905786,0.286543208 0.292676365,-0.165875718 -0.396625416,-1.252654634 -0.106270244,0.834431854 -0.048319355,0.41251917 -0.189175204,-0.169416696 -0.065901993,-0.339841658 -0.146742288,0.699246261 1.068740544,-0.173749485 0.144973982,-0.071234276 0.273807005,-0.493731895 -0.289492144,-0.002791859 0.121072688,1.269811031 0.143829583,0.506109342 0.197991478,0.653051274 0.09181028,-0.501005627 0.99139232,0.444255004 -0.983388454,0.007095982 0.272364125,-0.151226432 0.264854107,0.260977232 -0.35647765,0.58718689 0.029564864,-0.162147572 -0.455468551,-0.504070415 -0.372136337,0.424324065 -1.105820176,-0.012427861 0.635025725,-0.18624505 -0.273591966,0.183142088 0.302510137,-0.474613344 -0.137335334,0.100707348 1.011920737,-0.135500571 0.121030856,0.283896634 1.109420719,0.503673711 0.082113663,0.590288949 0.725487969,1.266872517 0.061708007,-0.752162617 0.174400722,1.230957393 -0.121500771,-0.264460273 0.051307868,-0.007266027 0.358110976,0.258739566 0.244948546,0.294380624 -0.821328292,0.696832949 0.608140699,-0.797318329 -0.37182622,-0.219082882 0.471541207,-0.202395185 -0.061751038,0.409577297 0.035275384,0.618977018 0.260236605,-0.50952648 -0.449919545,-0.289750474 -0.033823211,-0.049795128 -0.348511774,0.666398951 0.340604646,-0.566463034 0.167108093,0.296227069 -0.711364719,-0.355395677 -0.156251098,0.226865344 -0.299157206,0.22279578 -0.331690378,-0.361756908 0.002854127,0.115312615 -0.908614537,-0.085438187 0.962459276,0.084448815 0.238011084,-0.317813847 -0.967221605,0.135238748 -0.456910006,1.093368833 0.185210066,-0.269400973 -1.146648227,-0.249602345 -0.241011744,0.26203673 -0.009622451,-0.058836796 0.635212625,-0.428222164 0.837982289,-0.438135629 0.661654903,0.004023829 0.74093677,-0.036504981 -0.24823942,0.162893094 0.568976917,-0.600264764 0.020553439,-0.060686712 0.906192497,-0.754507267 0.167378671,-0.497561267 0.34294184,-0.704696645 0.191769728,0.668550745 0.408842794,0.18754229 0.192070507,-0.383354912 -0.224202179,-0.328488437 0.053948325,0.217252577 1.46991058,-0.253278063 -0.538648975,0.617475852 0.252654025,0.062790366 0.209701514,0.282084812 0.503986448,0.531654864 -1.159783663,0.337382558 -0.630736994,0.302967458 0.064122472,-0.12378748 -0.463814103,0.034868573 -0.214934195,-0.351889828 0.339513318,0.044146736 -0.016151303,-0.053426395 -0.39070224,-0.358682718 -0.145436693,-0.003269238 0.865850401,-0.183454378 0.800672991,0.008590849 -0.225170181,-0.231108201 0.773145367,0.395491561 0.305331321,1.728485937 0.446487146,-0.277002206 -0.482117831,-0.016418458 -0.768767063,0.130330779 0.664509842,-0.366422155 -0.366677735,0.178742953 -0.315452301,0.050453245 0.109944212,1.387608927 -0.824219718,-0.140835663 0.296154957,0.882765153 0.662945962,0.107989667 -0.057279557,0.336874089 -0.864059736,1.803255137 -0.294442272,0.174916028 -0.278562589,-0.438146197 0.523870236,-0.108050856 0.528014295,-0.428659181 0.149806592,-0.6165368 -0.192573735,0.098548443 -0.073405628,-0.341350178 0.336951778,0.472614391 0.40579446,0.417952042 0.878041628,-0.247623665 -0.608699981,0.421146526 0.188636431,-0.05659474 0.129353816,-0.202343276 -0.861624668,-0.143589871 -0.105878817,-0.445578362 -0.276123234,0.570791551 -0.583945333,0.530647107 0.124858708,-0.534805831 -1.196219612,0.025380916 0.5362706,0.123251041 0.747331825,0.695872074 0.625686341,-0.323017847 0.456714749,0.994900189 0.123849587,-1.407090816 0.080334395,0.16539505 -0.05679842,-0.59994509 -0.380290857,0.153996776 0.104073597,0.340601985 0.375675219,0.455429095 -0.654253522,-0.074250878 -0.1250806,-0.375640029 -0.169480879,0.51074359 0.151698751,-0.173564407 -0.431230569,0.3010376 0.480060191,-0.788566303 -0.250830205,-0.470786176 0.635073849,0.422251014 -0.255765597,0.00645263 0.604566963,0.114628463 -0.168125253,-0.36946135 0.323556212,0.700462289 0.138665644,-1.109365571 -0.045625827,-0.711361886 0.747417939,0.303131764 0.092060937,0.085249861 0.212775928,0.515143955 -0.071109583,-0.638399512 -0.203062017,-0.569614071 1.10422366,0.321186392 -0.105658899,-0.147625185 0.071902191,-0.194183809 0.16566775,-0.209519402 0.086887014,-0.722363235 0.714470013,0.303782826 -0.584498069,-0.488685551 -0.173798833,0.255612451 -0.568627076,0.460981175 -0.346195413,-0.892725841 0.246728695,-0.264565616 0.422500782,0.503538184 1.423912527,0.588210984 0.25119802,0.685126088 -0.147304967,-0.076915829 -0.50232933,-0.327275686 0.202578957,0.821738235 0.463857846,-0.924618338 -0.214008767,0.120314297 0.133657145,0.015340212 0.122261738,1.138290067 -0.200239573,0.051494592 0.390053452,-0.331316201 -0.714914676,-0.078804957 1.011901699,-0.042967388 0.02704231,0.362639449 0.21330882,0.116464548 0.053726319,-0.630440609 -0.662784461,-0.029698561 0.29529516,0.520029602 -0.057364289,0.095707792 -0.511066735,-0.139030868 0.191451811,0.191200451 -0.97466919,-0.572273696 0.767870115,-0.139505081 -0.450260546,0.556687162 -0.061723588,0.608086205 0.92608078,-0.588624384 -0.724104627,0.720830487 0.838971887,-0.411060113 0.403563138,0.465102825 0.358208358,-1.585884695 -1.094626639,-0.795791731 -0.121164131,0.158885363 -0.697143991,0.049110159 -0.354272958,0.00696821 0.219306853,0.317250477 -0.44168446,0.186493607 0.543884552,-0.601302302 0.024462398,0.504329309 -0.793302036,-0.023501265 0.427881257,-0.228649967 -0.301496836,0.37989792 -0.518477911,-0.136489688 0.591682397,0.953301247 0.158911026,0.618645564 0.246943729,0.210552469 0.158141086,-0.360554814 -0.348833816,0.12980196 0.009007955,-0.119350408 -0.089652886,0.31228448 -0.325043844,0.118697865 -0.845868036,0.783931454 0.239214709,-0.565625373 -0.333568855,-0.346646619 0.659040515,0.568965876 0.492231665,0.934844071 -0.149267513,1.184615245 0.162473678,0.000486936 0.464514402,0.247971676 -0.142271107,0.122194226 1.511237804,-0.238085126 0.282327422,0.647099257 -0.046682948,-0.039507391 0.027587557,0.262114058 -0.019326668,0.076236077 0.654504872,0.248501906 0.62166321,-0.306736567 0.067873011,0.279934516 -0.079426872,-0.055693109 0.294689867,0.27689878 -0.298058714,-0.075686667 0.028325335,-0.790410065 -0.093098462,-0.149429186 -0.708372163,0.101703723 -0.281655674,-0.279635536 -0.554405344,0.0242103 0.470183712,-0.576406778 -0.586256037,-0.237009271 -0.060044127,-0.769393605 -0.485618502,-0.463708159 0.0474005,0.147707835 -0.23665389,0.176413834 1.175945717,0.518719704 -0.166015716,0.221543469 0.375100665,-0.586969423 0.192684119,-0.191024288 0.339510113,-0.628028428 0.511782085,0.891332818 -0.24285574,0.441076249 -0.566739438,-0.153289301 0.331809723,0.485987844 -0.46306118,0.262835358 0.682633196,-0.719520614 -0.546765924,0.372559497 -1.282159464,0.29871659 -0.529031791,-0.629401597 -0.258720296,0.304753748 0.949626269,0.109400249 0.411992957,-1.029011555 0.786566093,-0.552764571 -0.656966021,0.465602254 0.557338568,0.508962848 -0.303994225,0.235219225 0.433455524,0.164262293 -0.97172517,-0.909213994 0.49208295,-0.683931965 -0.151092977,-0.207158183 -0.09316589,0.334237523 0.662256596,0.310610661 0.181824112,-0.195826649 0.050368485,-0.20388555 0.411712774,0.141868283 -0.444458863,0.074068485 -0.665750866,-0.784821328 0.541803797,0.691495846 0.711708909,-0.432476852 0.249820531,0.222119194 -0.003917272,1.212770655 0.709901529,0.3792637 0.074451666,-0.289476675 0.194723102,0.251617425 0.059075177,-0.810741839 0.376225056,-0.530735992 -0.585967571,-0.088011729 -0.231557203,-1.03131593 -0.100176378,-0.85023963 -0.809947028,0.455300552 0.38606256,0.263789641 0.108046913,0.245455005 -0.354810655,-0.146890057 0.175502408,1.173831437 0.08631427,-0.262522433 -0.352285412,0.137743596 0.031724277,-0.155501114 -0.379118225,0.220348655 0.267935489,-0.622865152 -0.695193496,0.099277366 0.080880594,0.614526562 0.422572519,0.757049773 0.102126589,-0.849697887 -0.389485728,0.357816762 -0.542322566,-0.08705568 -0.8113286,0.516402558 0.228128883,-0.63251537 0.092036644,-1.247165545 0.028988179,-0.032742666 0.346057857,0.293160356 -0.683118787,-0.457637951 0.269604641,-0.52466037 -0.660966024,-0.08507788 -0.140644335,-0.478646016 -1.05247344,-0.211656926 -0.808802367,-0.11120646 -0.36186594,0.081601456 0.153370518,-0.542126148 0.112798099,0.557447348 0.467858021,-0.212815448 0.221202427,-0.376814621 0.227259516,-0.569744531 -0.481036979,-0.271425444 -0.566232611,0.01905286 -0.300163491,0.295848541 -0.887530525,0.347755344 -0.045857094,0.471253655 -0.116312867,0.396982993 -0.256554635,0.548933976 0.092794293,-0.185607866 -0.715811555,-0.183385442 -0.949322394,-0.117105237 0.285618614,0.513068743 -0.487813025,-0.236034935 -0.438238099,0.15363398 -0.222623091,-0.202367867 -0.3871649,0.16509749 0.615654748,0.264476953 0.514039448,-0.144220207 0.025051701,-0.705158153 -0.10519107,-0.219253808 -0.306534418,0.753858265 0.497724626,0.372599846 0.11963708,-0.056631869 0.106410595,0.184499401 -0.748151578,-0.224236524 0.438846675,-0.277405571 -0.30171925,-0.67733145 0.170746101,0.270659523 0.024854687,-1.012387087 0.658813573,-0.534408595 0.67472847,-0.388036649 0.651287435,1.141998243 -0.043569893,0.695855116 -0.056774484,-0.280649046 0.048168026,-0.551670041 0.244378806,0.654668552 -0.014809383,0.099283185 -0.663407556,-0.15370394 -0.444993961,0.002901723 -0.545167346,0.693758202 -0.333794669,0.337587939 0.647351643,-0.162086406 -0.045669724,0.127769854 0.334971603,0.334667885 -0.044416035,0.429867183 0.475613984,-0.639253424 -0.908079818,-0.816871874 -0.234007568,0.466504417 -0.042692288,-0.393736066 0.188459749,0.099741675 -0.115253516,0.048280876 -0.103825539,-0.690645585 0.565076997,0.313737316 0.312213237,0.996590618 -0.163500653,-0.382009925 -0.032212654,-0.267108046 0.345441647,0.726013188 -0.809978668,-0.236983051 0.423846013,-0.574444576 0.684735464,0.733466956 -0.296798915,-0.531621843 0.027092668,0.470899003 -0.76934359,-1.296025847 -0.059946517,-0.443144659 0.131815171,-0.135242594 -0.379062407,0.929716169 -0.050391439,-0.235173899 -0.465918719,-0.029437589 -0.04615803,-0.164953004 -0.119692761,-0.278274054 0.248614088,-0.747118199 0.374723709,-0.034238124 0.82722335,-0.692225242 0.423537619,-0.813676703 -0.204431207,-0.429011169 -0.093168797,0.072461988 0.86764281,-0.008284572 -0.59395665,-0.282741195 -0.059184137,0.656512886 1.1964893,0.676980368 -0.188544869,0.455880948 -0.595381599,0.013075522 0.141125075,0.411044973 -0.632903952,0.444400815 -0.712203931,1.060090526 -0.107735457,0.12738494 -0.592793683,0.193534534 -0.231179909,-0.746813496 0.629081404,-0.105573067 0.98352175,0.675215388 -0.353790685,0.032528636 -0.216973263,0.170355269 0.128433407,-0.728092322 -0.522592646,-0.631947331 -0.009670638,0.012068274 -0.524215256,0.026848494 -0.408804779,-0.416070213 -0.060122843,-0.092433315 -0.044225695,0.550381984 0.408190893,0.83511259 -0.202439352,-0.215225813 0.283208893,-0.445421548 -0.854315168,-0.022776989 0.13360449,-0.192353456 0.422830618,-0.266376852 -0.028959166,1.109422384 -0.071483688,-0.418740089 -0.200859257,-0.714970644 0.07292022,-0.539464308 0.412959276,-0.143546947 0.469418854,0.079079265 0.117760472,-0.385354501 -0.252181246,-0.02440434 0.865328819,0.572283108 0.491082355,-0.036672702 -0.462399055,-0.29479991 0.102775408,-0.350115674 -0.819824825,0.488996832 -0.813126171,0.12124561 -0.409328976,0.360261398 0.016562114,-0.276959696 -0.282273847,0.110716949 0.614007353,-1.170302709 1.042227814,0.072643749 0.45460235,-0.053583404 0.630193791,0.100471827 0.430513085,-0.435975094 0.546761014,0.291310462 1.230885275,-0.086884423 -0.347015207,-0.076649769 -0.599011571,0.264634169 1.307969663,1.044918783 -0.287434171,-0.195688486 -0.649762197,-0.411566615 -0.526054799,0.459856154 0.374015496,-0.226677386 -0.270236805,0.726977818 -0.199944869,0.491678235 -0.153662925,0.543886514 0.456743278,0.03665633 -0.02901801,0.017781985 0.439749051,-0.146048415 0.0426208,0.06109609 0.577081737,0.263636147 0.408322588,0.209850956 0.258184389,-0.045158366 0.359652126,-0.058285078 -0.916855679,0.275094961 -0.053823135,-0.591103013 -0.192216653,-0.116958305 -0.77755844,-0.140582204 0.090098986,-0.113791 0.308110935,-0.09739857 0.285528669,-0.766032127 -0.34686352,0.339282364 0.178223796,0.437470823 0.197984303,0.557679182 0.914529491,-0.284164076 -0.559150532,-0.107561787 0.344602399,0.06854644 -0.170619003,0.14921711 0.123604734,-0.38711048 -0.566271851,0.256136944 -0.439593182,-0.082622692 -0.772622584,0.475752875 -0.045378822,-0.109861324 0.104384133,-0.161770178 -0.128129719,-0.772135795 -0.425604407,0.059808105 0.304976589,-0.852981287 0.460832819,0.54918187 -0.1382125,1.069933063 0.70620472,0.777313305 -0.649878354,-0.240340426 0.356148555,0.299425106 0.397966662,0.118312064 -0.419938141,-0.075449759 0.289103066,-0.72388241 0.343270481,0.041954732 0.587280695,0.123389452 0.188783457,-0.379308159 -0.441154043,-0.614179507 -0.270089012,-0.689761968 -0.24681131,0.709213821 0.504009738,-0.978632332 -0.298344646,-0.501114148 -0.580839997,0.333647892 0.252343917,-0.458008511 0.431090278,-0.148186059 1.057733174,-0.558679106 0.404988325,-0.602121258 -0.004357667,-0.519845124 0.08078584,-0.728099041 -0.458016222,0.019447488 1.103466912,-0.378116344 -0.389303144,1.48845978 0.063078513,0.750859762 0.384694391,-0.721831858 -0.776230657,-0.076378793 0.480678885,-0.015959269 0.153044197,-0.663627051 -0.07507837,0.084378127 0.232318433,-0.695987285 -0.235402295,0.075491292 -1.129438592,0.130750435 0.335026696,-0.159942494 -0.227538981,1.067548179 0.76571605,0.41750536 -0.428740188,0.056837653 0.342075988,0.947642239 0.28140968,-0.277918898 -0.023442146,-0.061131813 -0.572803621,0.407341182 0.093935204,-0.211010037 -0.665498655,0.22857087 -0.381621889,-0.547103943 -0.362822679,0.724605466 0.624559889,-0.082945762 -0.805482504,-0.030168094 -0.429202089,0.935769086 -0.679642572,0.118203932 0.198708809,0.742916082 0.251809961,0.379077203 0.8752112,-0.537212705 -0.370679079,0.299875404 0.829659243,-0.410213962 0.252383344,0.121831023 0.109486683,0.041264524 0.394802856,-0.492515409 -0.492206201,0.196189921 -0.106621179,0.494555119 -0.331321931,0.238245531 1.078635253,0.291015136 -0.400283417,-0.262897214 0.042746814,0.207803738 0.249833624,0.015733321 -1.119590505,0.640664238 0.318636425,0.240022764 -0.955127676,-0.364034208 0.204617254,-0.42938585 -0.8866617,0.097074428 -0.332327577,-0.112174753 0.045785725,-0.377196273 -0.34770975,-0.457812592 -0.609961027,-0.355275336 0.940429969,-0.191147451 0.107636627,-0.063475292 0.99581268,0.49743821 -0.336297782,0.275960408 -0.245564643,0.541182331 0.973507199,-0.12613119 0.026866865,0.46988537 -0.016250473,0.09253479 0.60052225,0.139831584 -0.319463253,0.266456472 -0.663170388,-0.238428612 0.180502326,-0.453006889 -0.226334008,-0.56012546 -0.071920924,-0.091413487 0.260149564,0.506583615 -0.791169718,0.556111661 -0.784245864,0.023113212 0.585609852,0.334039448 0.007728979,-0.580502905 0.510145979,-0.011297509 -0.076899983,-0.524105733 0.272106675,0.241280281 0.226179834,0.523270785 -0.401506902,-0.300045083 0.612772909,-0.340600329 0.430248892,-0.237727366 0.085785092,0.315351938 -0.009418316,-0.032100097 1.159658479,-0.218761717 -0.825325757,0.02979235 -0.497769811,0.244815047 0.848914605,0.058330925 -0.085900604,0.410920493 -0.865975349,-0.193429501 -0.190009021,0.82372965 0.31595715,0.813079617 0.582261053,1.227484882 0.249891988,0.371891605 -0.300907249,-0.217066089 -0.770197649,-0.119357809 0.811536188,-0.982311069 -0.013895524,0.245772143 -0.29779073,0.207695585 -0.264554865,0.44736881 0.457632135,0.396472097 -0.711499659,-0.661655103 -0.171370367,0.1253303 0.627631429,0.186112502 0.279752961,0.074792859 0.229185743,0.213157618 0.10052855,-0.359716217 -0.358206301,-0.388872108 -0.055930931,0.473316625 -0.421990556,0.292616904 0.406034143,-0.206823522 0.20118793,0.450022591 -0.23508804,-0.426960773 0.577275666,0.315222045 0.745561514,-0.532135183 0.51058202,0.335433896 0.489600506,-0.084812317 -0.247305474,-0.186698788 0.535735421,0.390342046 -0.602487347,0.145354265 0.510898634,-0.222953563 0.710612126,0.388279614 0.192682522,0.111520423 -0.046304324,-0.175293806 -0.268458119,0.117569236 -0.659584172,-0.17362455 -0.112209634,-0.440782681 -0.079893918,-1.161142012 0.596672413,0.459579048 -0.543042371,0.030394717 -0.05604001,-0.140277266 -0.211643075,0.535272587 -0.169086684,0.924775677 0.330135077,-0.946342822 0.019107045,0.552141449 0.049897313,-0.935344609 0.229999509,-0.351695627 -0.784120875,0.163460651 -0.054036347,0.372113084 0.058711252,0.713283337 -0.14360872,-0.552160499 0.402559058,-0.666855036 -0.720251107,0.157084708 -1.403924618,-0.493672043 -0.603481474,0.556450796 0.234811792,-1.098941311 0.879506013,0.732288003 0.78167889,0.115366332 -0.709043937,0.321387573 -0.420274441,0.717425617 0.540442298,0.088670261 -0.002865819,-0.419665787 0.226897027,-0.420653427 0.364311354,-0.260625476 0.536238159,0.157999342 0.819569189,0.149183462 0.066108146,0.355139338 0.014409363,-0.212015396 -1.000317179,0.536816468 0.39023483,0.086556553 -0.067927161,0.421966381 -0.700503672,-0.067184929 0.060437912,-0.136244339 0.223479266,0.539430455 -0.661279259,0.937596668 -0.266550919,-0.093296078 0.070879506,-0.614361668 -0.589911647,0.848760701 0.013969199,-0.78581915 0.034318445,0.333898341 0.787229988,-0.501302751 0.656704714,-0.168107137 -0.372980191,-0.166611372 0.865345628,-0.481967859 0.343720046,0.440203353 -0.881262674,0.368010907 -0.506141957,-0.955775253 -0.409937972,0.222437746 -0.079209804,0.659986284 -0.274283588,-0.214210221 -0.608549402,0.244402639 -0.625625121,0.348390367 0.661496525,0.209079518 0.086388992,-0.900485357 0.070816973,0.230834676 -0.024370733,0.028388626 0.379765741,-0.584822263 0.268394441,-0.473313425 0.176044588,-0.204161281 1.222997887,1.211389628 -0.237662035,0.140098653 0.420423785,0.265275415 0.64616323,-0.259120411 0.132329453,0.685511205 -0.650237774,0.477254313 -0.209152295,0.304898971 0.266476526,-0.487079093 -0.269664282,-0.245622169 0.102133238,-0.283174649 -0.262957586,-0.329494252 0.273891281,-0.471339176 0.677255574,-0.05246398 -0.353249516,-0.200518343 -0.58357978,-0.323938547 -0.329077119,0.26762566 -0.055823034,-1.444750763 -0.361220818,-0.833546166 -0.642716144,0.032414456 0.873242712,0.504086443 -0.269604813,0.33777895 0.474299936,-0.457532812 -0.475124619,-0.026558913 -0.208415811,-0.137590169 0.206617496,0.007603645 -0.086138148,-0.538264916 0.399965405,0.340115633 0.251870901,-0.490355538 0.059869406,-0.032408255 -0.128633126,0.459843982 -0.668140032,0.323799724 -0.400085212,-0.215589553 -0.586751694,-1.11902617 -0.084245978,0.145941213 0.004398467,-0.325062832 0.322620132,0.087761281 -0.291628634,0.319151238 -0.427222796,0.288231006 0.014805984,0.088701395 -0.142443239,0.025054156 -0.025753986,0.191171868 1.268187369,0.751412029 0.53386676,-0.393823825 -0.342538356,-0.168778862 0.428595351,0.139738036 -0.359220514,0.315316011 -0.854944401,0.824320308 0.641489113,0.231447003 0.072245016,-0.027361897 0.028247313,0.336052832 -0.354810334,0.815528416 0.621226751,0.174736541 0.096281122,-0.325131493 0.648691063,-0.002809836 0.174926095,0.52928614 0.282278917,-0.346170741 -0.433030667,0.851418574 0.121423182,0.314814262 -0.53047632,-0.517748036 -1.210779644,-0.146674916 0.470803782,0.30016936 0.716442072,-0.609660242 0.20915869,-1.095982096 0.13400457,0.117956599 0.192026135,0.002488603 -0.913579742,1.098405851 -0.489869824,0.287776999 -0.328670056,-0.022032622 -0.09140184,-0.579306075 0.182254215,0.030060322 0.617398268,0.213827667 0.786019112,0.008238042 0.018486699,-0.664769529 0.324178391,0.960962734 -0.135609442,0.407060356 0.079230758,0.338174525 0.447860232,0.93333819 0.236244006,-0.165851472 -0.245245149,-0.185831164 0.327767659,0.303664829 0.424848831,0.580649328 -0.31816752,-0.111768355 0.256646207,0.289171982 0.47832824,-0.581419193 0.404855147,-0.460977268 -0.08822758,-0.909422532 0.413316571,0.071171445 0.670298328,0.834206954 -0.498108475,-0.074814153 -1.088771831,0.556409298 0.456252961,-0.489353869 -0.392508585,-0.36194777 -0.36580477,-0.224584121 0.389004203,0.696815589 -0.706919749,0.553723934 0.148716851,1.054584231 1.179881796,0.360103757 -0.528498469,-0.330981413 -0.214548561,-0.600273039 0.237776188,0.595288624 0.084482961,-0.605523059 -0.558926196,-0.133050111 0.106051762,-0.03214716 -0.174422692,0.408695464 -0.498233255,0.974932833 0.52143592,-0.905409754 0.853235673,0.394353672 -0.760621647,0.303951664 0.573458438,-0.367019451 0.117219808,1.420798525 0.2716094,0.2243605 -0.1925362,-0.1496623 0.2570277,-0.181199 0.1540021,-0.4624356 0.919577,0.1978798 0.7967023,0.1407074 -0.1790984,0.4047048 -0.5564386,0.9014704 0.2479592,-0.3105485 -0.6872771,0.6003586 0.2781051,-0.7804633 -0.2403341,-0.5913003 0.6114419,0.01061582 0.492248,0.3646668 0.7916011,0.06076343 -0.2626036,-0.2313722 1.00824,-0.3252454 -0.3670446,0.6987458 -0.6153112,-0.3421196 0.05916615,0.4912326 0.2360074,-0.2125016 0.6306974,1.012441 0.2524849,-0.450685 -0.3882139,-0.297229 0.4503779,0.3282098 -0.4430586,-0.4987847 0.5767953,-0.2589282 0.1912062,0.3657915 0.1513856,0.5186286 -0.4332103,0.1706717 -0.3244093,0.2060883 0.5427232,-0.0715804 0.2129641,-0.2463839 -0.251112,0.02764594 0.1201126,-1.590152 0.7423599,0.3163877 -0.2041291,0.0261627 -0.8502901,-0.7791148 0.3097444,0.4051242 0.02656317,0.1407574 -0.3611493,-0.2195453 -0.3429375,0.2966176 0.05103897,0.4067604 -0.0239574,0.6657968 0.04292606,0.07169949 -0.1103115,-0.356449 0.2907243,0.1567604 -0.4680282,0.1645124 -0.4038703,-0.02651378 0.9128381,-0.3374284 0.5472756,-0.1021074 -0.2379593,0.3766552 -0.5980983,0.6750484 -1.447964,-0.05811523 0.4664673,-0.208894 0.09048181,-0.4302976 0.1880175,0.1806804 0.08673985,0.4499202 -0.03918028,-0.3272144 0.5433223,0.5645245 0.2210503,-0.3873388 0.3738561,-0.4742255 0.001108805,-0.02240548 0.3823192,0.2268762 0.171095,0.8356369 0.1025056,0.7382598 0.1801707,-0.1728266 0.4042136,0.3382961 -0.5715404,0.2868253 -0.9555036,-0.07268287 0.295396,0.02645261 -0.1620174,-0.3019339 -0.891175,-0.3886564 0.2778201,-0.4100359 -0.3242093,0.1528629 0.3826325,0.3832058 0.1859752,0.5677707 0.3946528,0.6412289 -0.9247112,0.1317923 -0.5943407,0.4352197 0.4927107,0.1546993 -0.1071508,0.2170488 0.9831599,0.2048869 -0.08959043,-0.203303 -1.037088,-1.233126 0.3520525,0.8936259 -0.3964946,0.8001514 0.8576074,0.5626798 0.9225514,0.1945806 0.6991336,0.4321705 0.1410811,-0.6382029 -0.3456514,-0.4060388 0.0119982,-0.9869548 -0.2805553,-0.4610929 -0.3545404,0.4447683 -0.6528543,-0.8508384 0.09514269,0.7289776 0.4761014,0.4599198 0.1327834,-0.3711555 -0.346632,-0.06785375 0.1885934,-0.857779 0.3633434,0.8737375 0.1294519,0.194847 0.4029507,0.2760933 -0.7631166,0.01323227 -0.02954267,0.3237019 -0.3188962,0.2431436 0.276118,0.3634956 0.7018734,0.8967522 0.2560258,0.2669046 0.3302396,-0.7826311 -0.2595876,0.4659558 0.3608426,-0.3237647 -0.1390811,-0.7434618 -0.2623497,0.8974206 0.03126944,0.1273558 -0.2252994,0.7084769 1.058122,0.5399009 0.2156594,-0.4674293 -0.3615972,0.4062045 -0.1714512,-0.4973143 0.7476944,0.1075231 -0.5046876,-0.1121659 -0.6017374,-0.1306258 0.197802,0.6373641 0.5295456,0.1867303 -0.9894271,-0.9464682 0.0954866,0.4086532 1.108222,0.3890912 0.1741304,-0.2111965 0.4406947,0.2197212 0.01902792,-0.263788 -0.32513,0.5493979 -0.5503752,-0.6772161 -0.332378,-0.2334273 -0.6823613,-0.5056331 -0.009656351,-0.0149645 -0.4554612,-0.02609063 0.1649911,1.223973 -0.3103011,-0.9282405 -0.309614,-0.06658553 0.4054493,-0.4054809 0.3449802,-0.4831024 1.134347,0.6685714 0.02858335,-0.3264006 -0.9002385,-0.6562574 -0.4859137,0.2926799 0.3202543,-0.04968836 -0.06476361,-0.2607068 0.4758661,0.05405327 0.4918068,0.03190531 1.085019,0.07471991 0.1423894,-0.0191373 -0.03860812,-0.4165167 -0.2540716,0.1729552 0.05436387,0.6387136 0.2110469,-0.02432909 0.7711119,0.1222052 0.2875909,0.02971269 -0.6703965,0.2848217 -0.5980326,-0.1459281 -0.7807991,-0.6293337 0.5313969,0.3895419 -0.7041687,0.201664 -0.2882153,0.5110277 -0.6031718,0.3616476 0.6019166,-0.5751369 0.7672681,0.5235281 0.3842167,-0.4994778 -0.4698669,-0.1595372 -0.1495267,0.8906581 0.1243726,0.002992145 0.09662566,-1.03544 -0.5839343,-0.3842343 -0.1162776,-0.168552 0.6372439,-0.3621338 -0.5257753,0.7225985 0.3926082,0.172504 -0.1888938,-0.03322906 0.1087318,-0.5726548 0.2990476,-0.4571618 0.06803327,0.2028905 0.7729911,-0.3976379 -0.7260235,-0.01681812 0.139493,0.2678842 0.3530116,0.391237 -0.007924443,-0.04820365 -0.3335185,-0.4238651 0.9579772,0.6993522 0.4784646,0.3081015 0.5292286,0.02799768 -0.5745913,0.3039473 -0.2328807,-0.8590366 -0.9949638,0.2652515 0.1679697,-0.4242586 -0.8734027,-0.1099529 -0.9605965,-0.1714474 0.2801053,0.05415377 -0.784417,0.2320604 -0.2215245,0.08776655 0.1837523,-0.8295892 -0.04917388,0.2743424 0.3628244,0.1806732 -0.4213739,0.64054 -0.2151901,-0.08941128 -0.6515547,0.1168153 -0.7000851,0.4052394 -0.01864831,-0.4131955 -0.2047239,-0.9134269 0.3010862,0.4893071 -0.5281786,-0.4387955 -0.2744768,0.8868804 1.137089,0.4888334 0.1665604,-0.4516964 0.2322561,0.5348115 -0.5028479,0.3614225 0.9988185,0.5955558 0.5349818,-0.1384594 0.713008,0.6676701 0.3995538,0.4001645 -0.05111229,0.4102501 -0.2861387,-0.3636131 -0.4228868,-0.3770394 0.199929,0.4613032 -0.31615,-1.225898 0.1014074,0.8584998 0.06569308,-0.5812684 0.2241377,0.5264974 -0.1201637,0.91814 0.1001652,-0.1014982 -0.4096121,0.3256382 -0.4622459,0.1184223 -0.1603081,-0.333495 -0.4921997,0.1004698 0.1087391,-0.5202036 0.7662403,0.7384368 -0.07964688,-0.3078038 0.2129202,0.394025 -0.4128896,-0.7969952 0.3955205,0.3466558 -0.02988739,-0.3707713 -1.193381,-0.3406807 0.2238721,0.04191733 0.3258999,-0.9182423 0.2461677,-0.08838048 -0.01182749,0.6273718 0.2836516,-0.2276112 -0.04386247,-0.03257403 0.4841995,0.5858126 -0.608079,-0.1087445 0.3655585,0.7834967 0.2298462,-0.3450061 0.354194,0.6121851 -0.1174048,-0.5029299 0.1748756,-0.09233592 0.2945279,0.2247663 0.03178961,0.522707 -0.6704998,0.03305169 0.2579463,-0.9521219 -0.2908774,-0.1678557 -0.6580963,0.05329868 0.3291838,-0.8675786 0.7372754,0.03516848 0.05226214,0.922648 0.3897327,-1.217514 -0.2141361,-0.0778462 -0.1269044,1.174399 0.5674298,0.3115143 -0.1573476,0.3410905 0.3450308,-0.55332 -0.293752,-0.5724635 0.1034251,0.4571404 1.15945,0.5348166 0.5153777,0.3306568 0.9980843,0.5840184 0.8205209,-0.2318283 0.324992,0.230185 -0.572524,-0.1008263 0.2560503,0.6902143 0.01891629,-0.3839735 -0.450008,-0.3757855 -0.9100999,-0.4562515 -0.8168163,-0.4834644 -0.1264152,-0.9263109 0.4473262,0.5394879 -1.105966,0.01701013 0.5855482,-0.02857015 -0.9105963,-0.2143739 -0.1669807,0.7092613 0.5776285,0.1843485 0.3768371,-0.08586968 0.1276351,1.157752 -0.007325307,-0.3506384 0.1977957,-0.0824804 -0.1955316,0.07427886 -0.02708881,-0.4203621 0.00376948,0.2480419 0.7863677,-0.8226202 0.5966763,-0.5880066 0.4928404,-0.09431212 0.2243218,0.910991 0.2564518,-0.2471773 0.4382826,-0.6332897 0.2409949,0.118088 -0.1990116,-0.5051968 0.4825093,-0.03573688 0.2789768,1.252395 -0.2422401,0.09707268 -0.1857474,-0.5924636 -0.4667267,-0.2519732 -0.7600295,0.9818667 -0.1626651,-0.5101144 0.4346649,0.8122002 0.7450996,0.5942068 0.3062323,0.9177138 0.4346627,-0.1473918 -0.3761081,-0.6319526 -0.7471181,-0.05752283 -0.2301357,0.3233261 0.07902002,-0.02178322 -0.2043676,-0.4751651 0.5171071,0.2385302 0.204983,0.5920195 -0.3100889,0.2335491 0.7242287,0.08881121 -0.3365392,0.05693242 -0.6095881,0.3934571 0.1182182,0.7618879 0.2199488,-0.07315489 -0.8459723,-0.3098366 -0.03338943,0.4136808 -0.8915213,0.09484907 0.07780042,-0.2798986 -0.1023975,0.5033265 -0.2797604,1.116054 -0.5329654,-0.9452638 -0.0794162,0.002688792 -0.5208425,-0.6268122 0.7659642,-0.03813393 0.3444821,-0.1898096 0.8927741,-0.1093647 0.2064679,-0.1553773 0.3976796,-1.021604 1.351562,-0.419499 -0.8464205,-0.1730288 -1.047789,0.7339702 -0.5220112,0.144939 0.5065588,0.1305874 -0.7036966,0.01777705 0.8400516,-0.4852003 0.6662279,0.2380442 1.176726,0.4509469 -1.02435,-0.4724021 -0.4517865,0.5193914 0.4084964,-0.06598043 -0.05143423,-0.2496973 0.4448887,-0.1037548 -0.5458078,0.278345 0.2321695,0.2640933 0.06684305,-0.2898005 0.0600119,0.6518609 0.6357143,-0.2821451 -0.2634778,-0.09432769 0.1758338,0.01278645 -0.6353857,-0.2612054 -0.07863914,-0.09453691 -0.8322108,-0.2685749 -0.3309019,-0.3559666 0.04066516,0.4564509 0.4670512,0.2919887 -0.1501344,0.2404219 0.02937223,-0.8152396 0.5392358,0.2650463 -0.7934565,-0.2291847 -0.007784628,0.3955328 -0.01485335,-0.2413832 0.5568259,0.1124961 -0.02124483,0.06093204 -0.4395518,-0.3235667 -0.9450736,-0.2267874 -0.3198914,-0.3588016 0.5917566,-0.1139066 0.9785182,-0.1889855 0.7101168,-0.0730229 -0.4183736,0.4344665 0.01512156,-1.107009 0.4972505,-0.1881912 -0.2184142,0.774935 -0.4593588,-0.06449229 -0.0303776,0.5918025 -0.4723366,0.7738595 -0.8247833,0.1682481 -0.4411236,-0.557073 0.7323809,-0.6108445 0.4007809,-0.1375336 0.1502192,-1.084315 -0.0837558,-0.5938376 -0.2349975,0.1810946 -0.0566331,0.391045 0.1257513,-0.09077912 0.9172199,0.6832238 0.06589795,-0.1442156 -0.04397755,-0.8688879 0.2091405,0.3478523 0.568039,-0.02987603 0.816572,-0.2528071 0.2359626,-0.2350714 -0.3792211,0.6888478 0.2214517,-0.03385146 -0.019571,0.2391134 -0.3430934,0.2045354 -0.6921101,0.4498126 0.4225346,0.2710844 0.382283,-0.831303 -0.000447577,-0.325854 -0.359217,-0.4612837 -0.1350642,0.1223448 -0.4933071,0.1812599 -0.2838537,1.255423 -0.05467781,0.2801789 0.03565003,-0.2040054 -0.03338081,1.253482 0.2922184,0.4394255 -1.157616,-0.5335054 1.06097,-0.1465444 0.9137879,0.1673998 0.2192111,-0.06202985 -0.7037131,0.1573806 0.3913596,0.3035146 -1.182682,-0.1926278 0.7128867,-0.105861 0.4698471,0.6884094 -0.6674142,-0.4388888 0.358935,0.472875 -0.04466175,0.1311639 0.08685717,-0.04986507 -0.1093252,0.06534406 0.1366225,-0.4839803 0.5300034,1.008224 -0.3900577,-0.05501785 -1.521521,0.3491851 0.8200769,0.6457861 -1.012628,0.1771386 0.2288094,-0.02433469 0.02040765,-0.002274607 0.1770756,0.1451571 0.5869672,0.3130514 0.005198145,-0.1139891 0.2271085,-0.06147781 -0.481158,-0.9125767 0.1152217,0.6319825 -0.0396526,-0.3160361 0.341896,-0.3191629 0.3849793,0.3799978 -0.1781941,0.6238284 -0.634594,0.2774166 -0.5882318,-0.3987319 -0.4166572,0.03189638 0.1173852,0.2154567 -0.3739485,0.1486722 0.05105722,0.03588297 0.5911704,0.2897088 -0.2377006,0.4536421 0.3326567,0.6250377 -0.09840189,0.3924825 -0.1817351,0.09881718 -0.2347069,-0.4754847 0.02561772,0.4290398 -0.243664,-0.08813801 0.5293865,0.2262357 -0.01300657,-0.6002483 0.3249772,-0.01707491 0.8006541,-0.1370131 0.2543697,0.2029592 -0.7793883,-0.6480111 -0.6401178,0.8754146 -0.1887196,1.666777 0.4406116,-1.076623 -0.1591513,1.082517 -0.1483074,0.3191695 0.2229996,1.223424 0.0229261,0.2732629 0.009389618,0.004167211 -0.1091008,-0.7280544 0.5498478,-0.1057476 -0.04044523,-0.7847169 0.1631978,-0.5188983 0.2470162,-0.106251 0.1616538,0.4077829 0.149316,-0.1872227 -0.5272367,0.2325955 1.137806,-0.654344 0.2578911,0.2298877 -0.6130417,-1.071334 0.8148837,0.1759486 -0.1170561,-0.2566017 0.7350113,-0.0782139 0.4806347,-0.5782019 -0.1421958,-1.119903 0.02923901,0.1864199 -0.3946366,1.119875 -0.9610413,0.09452806 -0.4390102,0.5294277 0.02967516,0.7540304 -0.1770675,-0.01371401 0.36602,0.4529612 -0.1584648,0.6260339 -0.5727839,-0.0724713 -0.4293555,0.003887482 -1.191455,-0.2094976 0.4346234,-0.02434021 0.2516629,0.9071612 0.1217278,-0.562847 0.06044489,0.1474871 0.198243,-0.1169641 -0.3182934,-0.5408958 -0.6663819,-0.228775 0.02768692,-0.316586 -0.2489767,-0.7015096 0.2295597,0.4311233 0.3427357,0.1688764 -0.5890663,-0.8029577 -0.7794936,0.5896563 0.6353448,-0.525716 -0.5977903,0.4960052 -0.5777196,0.01785295 0.000833642,0.5779648 -0.6825512,-0.292483 0.1860765,0.0126483 -0.3778854,-0.8892019 0.6642016,0.7664233 -0.7781801,-0.4647767 0.3637333,-0.07856944 -0.202227,0.5219258 1.045826,-0.6137953 -0.221676,-0.2178779 -0.5234319,-0.6825406 -0.2884737,0.4429581 0.02495963,0.02493256 -0.110294,-0.1329174 -0.3344494,0.893741 -0.04900987,0.8992873 0.07792344,0.2582717 -1.230567,0.6738626 -0.791149,-0.516229 -0.8320995,0.1680283 0.4082411,0.7741112 -0.1342746,-0.1662063 -0.1066607,-0.06081698 0.7305863,-1.01983 -0.558835,-0.2413454 1.075354,0.1762345 -0.1267858,0.08680274 -0.7305184,-0.5542081 -0.4508173,-0.2460138 -0.1452515,-0.357878 0.2750237,0.04164435 -0.11537,-0.1556417 -0.4440105,-0.0268798 -0.5430325,-0.2937969 0.339415,0.3612062 -0.06180986,-0.3379548 0.1443089,0.5116371 -0.08408656,0.6359145 -0.7397707,-0.1285611 0.4987667,0.3988966 0.05669213,0.550846 0.7654454,0.1464634 0.8670125,0.8714349 0.07234465,0.7995084 -0.1215627,-0.3425375 -1.264981,-0.1609703 -0.007791654,0.6873339 -0.07573474,0.3470319 0.7234064,0.9522224 -0.3071837,0.3041429 0.5525517,-0.6478881 -0.3596411,0.09982073 -0.1994101,-0.1669012 0.1414697,0.4345699 0.3999314,-0.8278595 -0.07994814,0.6782688 0.5370525,0.3400913 0.8039238,-0.09097976 -0.1217076,0.4736472 -0.5843798,0.5633589 -0.03997143,-0.424797 0.5111542,0.5182718 -0.2968573,0.06782242 0.02458475,-0.5955162 0.2953297,0.4180924 -0.141292,-0.4283044 -0.3378953,0.7921831 -0.1057949,-0.1361161 0.4218526,0.2532731 -0.7544198,0.2520013 -0.4583206,0.7916816 -0.3777662,0.5652686 -0.7068657,-0.8003225 -0.3531967,0.3291237 1.319954,-0.4214728 -0.6242282,0.09413132 -0.7382227,-0.0868348 -0.5673125,0.4550748 -0.2474155,0.3271418 -0.7009548,-0.3742512 0.4211337,-0.08867273 -0.08521619,0.8573444 -0.7657698,0.201734 -0.3538153,-0.5545049 -0.1263691,-0.1816163 0.04571116,-0.4792308 0.5200039,-0.3726393 -0.1018343,-0.6552026 -0.8004113,-0.04526617 0.2182515,-0.8339065 -0.2699124,-0.4094026 -0.5542101,-0.007951937 0.5682927,0.2483056 -0.5172719,0.7129553 0.5852832,-0.1005847 -0.07763903,-0.1257867 0.474524,-0.04197792 0.3653128,0.02369377 -0.1003077,-0.04688821 1.000701,-0.8346492 0.2872115,-0.4021572 -0.3324628,-0.2889805 -0.1062463,-0.7809515 -0.09494441,0.1611752 0.6660913,0.6261012 0.6474777,-0.48562 0.7644493,-0.1103543 0.9657035,0.31851 0.1579039,0.5889504 0.04331478,-0.2790728 0.5251168,-0.4608441 0.3196091,-0.2382454 0.3315084,0.5354912 -0.07043021,0.02210724 0.6553642,0.1008725 0.2983874,0.4290626 0.5266516,-0.7968935 -0.05742616,-0.06054691 -0.001033341,-0.5959472 -0.4516901,0.130817 0.4307583,0.1963517 -0.6341154,-0.5100287 -0.6768089,-0.1990198 0.6357125,0.07690683 -1.356376,-1.233324 0.30222,0.3297943 -0.6000487,0.3395962 0.5291931,0.02170461 0.1507812,0.3782041 0.03890603,0.01640919 0.2811545,-0.8516153 0.1232744,-0.9494382 -0.267251,-0.321746 -0.5850293,-1.46596 0.06942889,0.281222 -0.2540383,-0.431843 0.3084346,-0.2193042 -0.5521106,1.279086 -0.8108358,-0.2303571 0.2245177,-0.5592117 0.6692339,1.678511 0.1348177,0.3962382 -0.1469798,0.1539972 -0.009858029,-1.170717 0.5911829,0.5835765 -0.2812876,0.07365663 0.02933554,-0.06261527 -0.02320632,0.3325953 0.04388599,-0.1021678 0.5426605,-0.1355369 0.2201956,0.3660086 0.07250611,-0.390022 -0.7904682,-1.245789 -0.02506232,-0.3649371 0.2958888,0.2075051 0.1556142,-0.3502557 -0.4740645,-0.803538 -0.3248337,-0.9209991 -0.352271,0.9137666 -0.4961981,0.330211 0.4647249,-0.8936868 0.457696,-0.04157102 0.4140837,-0.5109533 -0.2990238,-0.07361054 -0.08154338,0.2093619 0.222288,-0.01910642 0.4550668,-0.1569397 -0.01447951,0.268397 -0.1631851,-0.1552934 -1.157012,0.7229727 -0.1013564,-0.6767983 -0.3920938,-0.6700299 0.2244354,-0.1529665 -0.2302007,0.1271044 0.3070954,0.5982549 -0.1161218,0.7235905 -0.4051689,-0.4659545 -1.069291,-0.02053873 -0.4367002,0.1910065 0.2045683,0.4937699 -0.2322939,-0.1922733 0.1813923,-0.08779407 -1.258328,-0.5209984 0.06897935,-0.213643 -0.1149814,-0.262915 -0.1503304,-0.4176536 0.5373154,-0.1968727 0.1672132,0.5144249 0.09187883,0.2666105 1.007401,-0.03350434 -0.1051588,-0.1632578 0.3512893,1.006069 -0.1730636,-0.6106158 -0.2682533,-0.07319861 0.4241039,0.8135986 -0.07405547,-0.1519805 -0.3638863,1.030998 -0.1634447,-0.5635505 -0.09148088,1.182246 0.2416534,0.7470959 0.00706608,-0.2899703 0.06175324,-0.2051642 0.9187257,-0.7818754 -0.8820294,0.7515148 -0.1805222,-0.1159541 -0.05218146,-0.3764485 -0.6876777,0.1784625 1.298482,0.588476 -0.262783,0.1205424 0.5143782,0.7591618 -0.2674929,-0.2447046 -0.3847813,0.4652074 -0.5007875,-0.08112352 -0.5274718,0.4745086 -1.333285,0.9057271 0.3928272,0.5166193 -0.2137368,-0.006931411 0.09083612,-0.6672589 -0.1484136,-0.4943107 0.1036551,0.4675323 -0.4552699,-0.1515616 -0.1116133,-0.2225145 0.239886,0.1269898 0.2231846,0.19993 -0.02719253,0.2413078 -0.8167966,0.5438312 0.3049331,-0.4652676 0.3194499,-0.1294309 0.8515184,-0.5280646 -0.8404786,0.1359344 0.1529219,0.07452501 -0.06073202,0.4362416 0.6211558,0.006409001 0.09005888,0.1454698 -0.6174164,0.5680924 -0.3478231,0.391057 0.2795088,0.2342132 -0.436866,0.6358101 -1.13244,-0.01902234 0.9306242,0.3443682 0.1718278,-0.04301221 0.3932166,0.3212668 -0.3858414,0.3361123 -0.1630538,-0.1042406 -1.055691,-0.6696277 0.8309502,-0.8416999 0.3742198,0.2338852 -0.4811713,0.3267007 0.1226905,-0.1767782 0.2880151,-0.5268193 -0.4956462,0.01090879 -0.4824166,-0.07921498 0.3054735,-0.2756591 0.2218774,-0.6054014 0.4033186,-0.08440774 -0.1252862,-0.3046252 -0.2376347,-0.9386359 0.4966896,-0.6210295 0.2418452,0.3566425 0.2717478,-0.9432864 -1.101134,0.8455173 -0.9141966,0.1177895 -0.2344885,-0.4647582 -0.09415925,-0.1258911 0.4519871,0.4450345 0.1011041,-0.3662272 -0.3325218,-0.5561501 -0.5098846,-0.2913768 1.18171,-1.592831 0.4527192,-0.5048607 0.233798,-0.2556597 0.4987107,-0.01440319 -0.06937012,0.2157812 -0.53837,0.4207968 -0.3565963,0.1387655 -0.5313535,-0.09086301 1.296359,1.458994 -0.5812682,-0.714747 -0.3645773,-0.7832601 0.2254775,0.6244916 -0.1455354,-1.121266 -0.8468462,-0.1579652 0.1223351,0.3113548 -0.5140343,0.4632223 -0.6502849,-0.343547 -0.5571285,-0.6775709 0.6169647,-0.4050654 -0.07809678,-0.1816292 0.2620656,0.2849358 -0.2793339,0.09851477 -0.03828411,-0.3665115 -0.0951652,-0.05879034 0.9410273,0.4760766 1.504185,-0.3515116 0.3085724,-0.649201 -0.5665302,-0.6052286 -0.2090447,0.3015874 -0.006687138,0.3791122 0.1563256,-0.4010013 -0.4671932,-0.6662961 0.2305747,0.0253896 0.2817456,1.217586 -0.1594803,0.6213007 0.2075566,0.2810609 -0.9255884,0.1137109 0.04219429,-0.0167372 0.350804,-0.7426462 -0.2392114,-0.5356506 -0.3235595,0.1827269 -0.1246542,0.3286936 0.8952275,0.08819056 -0.1796218,-0.2725043 -0.05731782,0.01173723 -0.6634626,-0.5139196 0.4923231,0.2120694 -0.2407722,-0.145523 0.7690619,0.4123262 -0.5826457,-0.06389015 0.2429837,0.966829 -0.8055756,0.03751937 0.7041238,0.06596422 0.1493994,-0.5609521 0.5251347,0.03272249 0.3134884,0.5120442 0.9261658,0.2469015 0.972425,-0.3765536 -0.5983716,0.07099315 0.3295854,-0.7352436 -0.3884295,-0.4345737 -0.1055736,0.08346717 -0.6585955,-0.3606179 0.02342766,-0.5425073 -0.6941153,0.0806033 -0.3469921,0.1529382 -0.004424406,0.4741409 -0.3653949,0.7291057 0.003103305,-0.3149592 0.4983244,-0.4725251 -0.2373581,0.7734983 0.1944732,-1.038507 -0.1455319,-0.1462313 0.1262192,-0.1967664 0.1267159,0.4907162 0.3376393,-0.4037528 0.1420869,-0.5135122 -0.8105874,0.1085067 -0.6635993,-0.6751646 0.5975836,-0.01915744 -0.372673,0.4067292 0.1348015,-0.3180075 -0.05244833,-0.4753881 0.07052531,0.5191897 0.9713407,-0.05077344 -0.6909604,0.6188636 0.6573504,0.367123 0.1990384,0.6945281 0.08525144,-0.2294923 -0.3554631,-0.2718895 0.4688691,-0.4676405 0.2141697,0.4577796 0.09258661,-0.03056053 -0.51354,-0.6535404 0.4597385,0.3645906 -0.1683378,-0.2938921 -0.1878776,-0.370343 0.5779161,-0.1042054 0.3301728,-0.04393553 -0.2881875,-0.6464508 0.2746059,0.4784062 -0.4302581,0.3689359 0.3826975,0.4537645 -0.4028458,-0.2545737 -0.9061735,0.4316143 0.8517706,-0.1795623 -0.1928464,-0.357257 0.3320829,-0.03386157 -0.5656747,-0.3193021 -0.07014469,-0.1203956 0.3306205,0.5278746 0.5021272,0.399109 0.3354026,0.7183794 0.2916521,0.6025698 -0.1160301,-0.3115773 0.1906165,0.3925032 0.3751776,0.0995667 -0.6692275,0.364948 -0.09719601,1.189723 -0.3509186,0.04317959 -0.6828693,-0.01639741 0.5930335,-0.4413016 0.5661847,-0.1015851 -0.1429359,-0.2232411 -0.342636,0.3742268 0.5335277,0.1985431 0.02215393,0.1202418 -0.3775472,-0.2017786 -0.2269585,-0.33965 -1.05526,-0.2419657 -0.1728649,0.7058269 1.129432,-0.6745868 -0.1601798,-0.2167418 -0.4282637,-0.7587285 0.4308358,-0.1382638 0.1913328,0.172859 0.2129495,0.2512694 -0.2878436,0.5659513 -0.1619017,-0.658611 0.2530974,0.1418973 -0.5387573,-0.01531162 0.3363992,-0.167205 0.231867,0.2961514 -0.4767679,-0.1190869 0.137349,-0.09837315 -0.4250077,0.08097746 0.03188866,-0.2827161 0.1156353,0.04460114 -0.3132012,0.2945772 -0.5199517,0.05536868 -0.3233767,-0.847862 -0.2111437,0.6734853 -0.1258701,-0.3551884 -0.276776,-0.2416744 -0.3451027,-0.2223603 0.3762069,0.08491868 -0.6155356,-0.028986 0.4228499,0.2119499 0.3007053,-0.7328039 -0.32491,-0.1952482 0.5675795,-0.2065378 -0.08010257,0.1180125 -0.1281738,-0.6299468 -0.2001914,0.197873 0.05982567,0.4977796 -0.2894359,0.4839843 -0.9721069,-0.5787504 -0.506519,0.01348967 0.07769484,-0.4680061 0.7802624,0.4468141 0.365784,-0.1622605 0.4683768,-0.2094131 0.2328111,-0.5324217 0.423122,1.255052 0.7201993,-0.01532085 -0.5187263,-0.1196288 -0.8153258,0.1947338 -0.02790856,0.6050233 -0.4925691,0.1508025 -0.856345,0.6772571 0.1797135,0.4202766 -0.6571885,-0.05330018 1.559952,0.2130463 0.02887765,0.5313065 0.3661005,0.214363 0.379668,0.5820132 -0.4925559,0.1602062 -0.02937964,0.09930035 -0.5398061,-0.1237177 0.1996251,0.1119275 0.3977019,-0.08566919 -0.06656359,0.2483553 -1.210874,-0.8955198 0.4421388,-0.06312068 -0.2825455,0.4842555 0.7645445,0.1158887 0.1585985,0.09258302 -0.2479524,-1.045815 -0.4146432,0.5785685 0.09473249,0.2415725 -0.5944319,-0.5481969 0.3187011,-0.5730095 0.2777898,0.1651491 0.09612855,0.4514294 0.5134131,-0.2130675 -0.4917389,0.3655945 -0.4663476,0.08109105 -0.4814366,0.2552658 -0.4068561,0.002468497 -0.0972562,-0.2276734 0.9580063,-0.5320255 0.3508846,-0.7008383 0.4852747,-0.2832393 -0.06419824,-0.1539269 -0.6973526,0.03142494 0.3542767,0.03220005 -0.102806,-0.09874514 0.1362029,0.05210875 0.482745,0.9485782 0.3440116,-0.1834358 -1.032636,-0.4309026 -1.078747,0.2891126 0.8518641,-0.1756291 -0.5599894,0.4632982 -0.4959423,-0.1780232 -0.5589869,-0.09866105 -0.2997351,0.4651735 -0.3256922,-0.291534 -0.3373047,-0.8843786 -0.4877102,0.2593565 0.7230187,0.7859695 0.4778438,-0.03978669 0.3312106,0.107916 -0.2843308,-0.1375994 -0.2372529,0.5175035 -0.2326875,0.2991245 -0.0176747,-0.3931036 -0.2465336,0.3638909 0.6983456,0.2086881 -0.5127228,-0.4395408 0.09453635,0.004293444 0.3593379,-0.2100334 0.003883065,-0.8379892 1.245726,0.1013533 -0.08514052,-0.2016421 -0.7183016,0.07690611 -0.403053,0.09165038 0.4959869,-0.3825842 0.6716767,-0.7203088 -0.2022044,-0.4467305 -0.764355,-0.1268484 0.6944284,-0.09325574 0.02686294,0.4391439 -0.03119301,0.1034107 -0.5071782,0.7616852 -0.008531501,-0.2347409 0.2200038,0.5039688 0.5605026,0.04041738 0.113651,0.3874217 0.1511715,0.3471293 0.6581362,-0.1129407 -0.3332294,0.3157239 -0.3465664,0.3187696 -0.2673732,-0.4054506 0.0649063,0.4986809 0.1059396,-0.1027458 0.05972661,0.3666068 0.7612203,0.6055559 0.003021618,-0.2200261 0.2187709,-0.4142093 0.1636124,0.6316495 -0.01704551,-0.4839954 0.3398152,-0.4215838 0.005148697,0.1532937 0.8769247,0.2248368 -0.3378643,0.1473408 0.3002538,0.1210647 0.5282904,1.023729 -0.2946664,0.07791608 -0.2601273,-0.335709 0.3525314,-0.3157535 -0.04981987,-0.4922996 -0.3842652,-0.06541864 0.6450698,-0.3318024 -0.6780502,-0.01681332 -0.1722742,-0.3079359 0.1194491,0.5525596 -1.033447,0.3731692 0.366005,-0.1071493 0.3276097,0.5413979 0.254644,0.6128817 -0.4167516,0.01285912 0.5607335,0.2082874 0.2836155,0.126912 0.3035196,0.2123246 0.7969454,-0.01506085 -0.08682376,-0.2726248 0.8650359,0.7160911 -0.1461358,-0.2077637 0.4603627,0.1406635 0.2346916,0.1022894 -0.04437705,0.1579117 -0.2278724,-0.9075591 -0.1225484,-0.9614169 -0.4977296,-0.5382484 0.1300313,-0.4985593 0.2171522,-1.428245 1.015236,0.6204254 -0.379751,-0.06406612 -0.02744379,-0.1414446 -0.4706398,-0.6329267 -0.35787,0.06128331 -0.3854385,-0.7477271 -0.1454353,-0.6306862 1.087029,0.7317194 0.5090631,0.2783671 0.4016598,0.6132072 -0.4026167,0.09529753 0.941159,0.02632797 1.003093,-0.7384308 -0.4201445,-0.2440942 0.102962,0.2900385 0.1250279,1.36946 -1.056638,0.03780541 0.4363927,-0.5100071 -0.421421,0.04870974 0.40893,-0.8283344 0.2468455,-0.7104188 0.2078034,0.7356553 0.3260013,-0.383744 0.3925439,-0.4189631 0.1804544,0.207658 -0.4368514,0.364534 -0.4351722,-0.07030332 -0.4376645,-0.1438282 -0.1333214,0.2250904 0.100653,-0.1606029 -0.2683534,0.01470561 0.4237805,-0.05338241 -0.08573172,0.2630605 -0.927827,-0.2219041 0.9460226,-0.2014979 0.671738,0.09978934 0.9080122,-0.4160095 0.4893795,-0.3087045 -0.8893049,1.20159 -0.02724915,0.1364774 0.2768497,0.04915929 0.2177018,-0.0947328 0.3652412,-0.2754542 0.275812,0.007098901 -0.9268434,-0.3777664 -0.02944221,0.4847299 -0.1585349,0.06129547 0.04997578,-0.2556046 -0.7361869,0.6096782 -0.09463734,0.3588156 0.3180986,-0.1107604 -0.3337225,0.1831286 -0.3111019,0.2762436 0.2028728,0.1519252 0.4795126,-0.1336001 -0.4764785,-1.667554 0.5891321,0.2125115 -0.007751623,1.003165 0.8451845,-0.6169805 1.104269,0.1228864 0.5913489,-0.221831 0.09166174,-0.3589595 0.1925405,0.4776356 -0.566486,-0.9500689 0.6098848,0.2204863 0.8888909,-0.189947 -0.1155525,1.18838 0.07868439,0.2100662 -0.2316416,0.5336472 -0.4317363,-0.7158643 0.6399849,0.568793 -0.7019217,-0.6855607 0.5578304,0.3374063 -0.6513531,-0.03025822 -0.1139228,0.2386518 -0.2101662,-0.8777822 -0.3259988,0.155339 0.1238853,0.2712769 -0.1252536,-0.08561187 0.4779984,0.2370319 0.4385923,0.6051333 0.8600726,0.2270825 0.5871261,0.1477503 -0.1303671,-0.5977897 0.9674601,-0.2438512 -0.7855617,0.2930093 0.4317911,0.01202038 -0.1641773,0.02399436 -0.7268127,1.087105 0.5055093,0.5081127 0.2919991,0.1006974 0.009051227,0.05446129 0.05149517,0.4871332 -0.165526,-0.2386999 -0.1518723,0.2349585 -0.09873626,-0.1880114 -0.5354202,-0.3596673 0.1028838,-0.5153309 -0.2316821,0.5204627 0.3518241,0.6559675 -0.3801567,0.5192037 -0.4412575,-0.1098598 0.4692352,0.01236997 -1.160838,0.3179694 -0.1296293,0.2937923 0.363427,-0.5564354 -0.5898122,0.5888693 0.01438792,0.09753715 0.2398657,1.020695 -0.7958549,0.1366991 -0.6926992,0.7188076 -1.054559,0.1302706 0.05186917,0.1195355 -0.2175913,0.04539422 0.3940837,1.133186 -1.0545,0.03024919 0.2516101,0.4278945 0.001423936,-0.6990448 0.1343921,0.2515716 0.649455,-0.6534881 0.3454195,0.4613729 0.2926403,-0.1847459 0.02097675,0.1070471 0.6024453,-0.02120381 0.2281716,0.001815277 -0.009182788,0.0849174 0.3296677,-0.1539495 -0.5001258,0.2388461 0.4286003,-1.150425 -0.290688,-1.283366 -0.09719731,0.8025805 -0.07891025,-0.7066188 -0.1147608,-0.3249378 -1.219958,-1.059804 -0.1625718,1.038993 -0.2244735,-0.2524844 -0.06511989,0.3162855 0.317096,-0.09747614 -0.1237426,0.07511811 -0.9053241,0.2322289 -0.1649204,-0.2288779 -1.075599,-0.4480624 -0.1792978,0.2138555 -1.187539,0.4526236 0.2479198,-0.7796548 0.2368707,-0.1161414 -0.06699138,0.4215966 0.2680375,-0.3380516 -0.7146285,-0.1969968 0.5240205,-1.070998 0.01374568,0.4047409 0.2075284,0.819965 0.5887532,-0.0104068 -0.06676603,0.2534423 1.187814,1.366433 -0.4771961,0.4953975 0.2962386,-0.3603428 0.6051043,-0.6793304 -0.6244418,-0.1168368 -0.7265431,-0.612452 -0.4705572,0.8340283 -0.7107104,0.2020934 0.1212667,0.5606381 0.3365566,0.01676132 -0.5276761,0.2472647 -0.1378304,-0.2231874 -0.4570099,-0.144147 -0.4848763,-0.04586056 -0.3779502,-0.713993 -0.331637,-0.05117376 -0.118273,0.4269316 -0.3428141,-0.5166142 0.6058662,-0.446769 -0.6463521,0.4893664 -0.1172566,0.1358119 -0.04112668,0.6970704 0.3772349,-0.3614074 -0.1977689,0.09061202 -0.4978111,-0.1660112 0.2010659,0.5402233 -0.1541601,1.339212 0.607695,0.1423881 -0.6368495,-0.9130288 0.08210523,0.06143245 -0.3250736,-0.141019 0.9161222,0.2242666 -0.6458016,0.02348713 0.4679274,0.3768766 0.5079469,0.3842731 -0.475026,0.5002831 -0.4803725,0.5024719 0.2967499,0.451398 0.06225431,0.2952504 -0.3106872,0.09368049 0.3883319,0.130468 0.370284,-0.3947263 0.03871441,1.135244 0.07375627,0.2556083 -0.1849365,0.182348 0.4019339,-0.3118959 0.7893933,-0.02392665 0.4307794,0.239676 -0.2431462,0.3935441 0.6532719,0.1076641 0.02249484,-0.1169904 0.1124965,0.2594902 -0.5140398,-0.1940708 0.2854093,-0.5439052 -0.04924393,-0.3935125 -1.235794,-0.2570036 0.2841973,-0.1725964 0.6295854,0.07902656 -0.0627713,-0.9309336 0.3567497,0.08374645 -0.2314571,0.1351069 -0.8737416,-0.008670619 -0.4718141,-0.3201527 0.08874064,-0.07183252 -0.5664643,0.2285594 0.2476851,-0.5885311 0.1587995,-0.5244923 0.4829708,0.265502 -0.6222907,0.4651909 0.5828659,0.9213245 -0.2222702,0.3974548 -0.9502033,0.6061134 0.004030129,-0.03990474 0.2863349,-0.7361296 0.6572449,0.6002415 -0.1840199,-0.9878321 0.3113479,0.9875765 0.2647511,0.248801 -0.006154372,-0.41869 1.107134,0.6496074 -0.04153153,0.0243499 -0.1917298,-0.03681666 -0.36062,0.4168732 0.008871623,0.326514 -0.08093209,-1.240613 -0.4676004,-0.1688187 -0.4029404,1.155091 0.5473788,-0.0272684 0.2468151,-0.3351832 -0.3477709,0.2827136 0.07036385,0.2369918 -0.1171996,0.2745019 -0.1715842,-0.1201126 -0.1253017,-0.06518292 -0.2079659,1.247779 0.2608322,-0.2343125 -0.6918086,0.1562955 0.1184042,0.000406182 0.556402,-0.0555279 -0.06644922,0.6678655 0.005424679,0.6486965 -0.5739176,0.1543495 0.6392977,0.05223633 0.2446219,-1.141565 -0.4408045,0.3034373 0.380522,0.5511493 -0.2996807,1.194036 0.6363848,0.1959497 0.7037611,0.698598 0.5660642,0.3706073 0.5688018,0.8559971 0.5381555,0.1321715 0.009291551,0.2845883 -0.9094819,-0.2426168 -0.3670316,-0.3894848 0.5254985,-0.01542136 -0.4184885,-0.09956885 -0.3293493,0.5942869 0.7768106,0.1137934 -0.371085,0.4362651 0.3516446,1.059435 0.8662395,0.1036715 0.1914318,0.1967692 0.4973695,0.01457915 0.05425527,-0.5281154 0.1138496,0.2784089 1.296389,-0.6638989 -0.7235255,-0.1335224 0.171679,-0.2152049 -0.6814983,0.1942905 0.7603195,0.509753 -0.02024969,0.5790246 -0.1766059,0.7803897 0.3598376,0.1673301 1.029297,-0.06500201 -0.9025638,-0.4839354 -1.422604,-0.7119623 -0.05927133,-0.07320686 -1.167807,-0.4795896 0.4070635,0.03286889 -0.07879501,0.05007662 -0.639799,-0.9718249 -0.1841208,0.07925705 0.5170525,0.9432956 -0.23903,-0.4244971 0.1945364,0.2780273 0.6219078,0.2299695 0.0580521,0.4175395 1.114775,-0.1125789 0.1808864,-0.02210493 -0.315545,0.4352005 0.8233891,0.2284323 0.1868932,-0.261707 -0.771945,-0.3248013 -0.2554522,-0.2382837 0.5743505,0.1862526 -0.3594349,0.2759404 0.8689113,-0.9878355 0.1337379,-0.7309463 -0.2752621,0.1233379 0.1958149,0.4543991 0.6646179,-0.1049974 -0.4008015,0.09647589 0.3336573,0.282059 0.2958444,-0.06664449 0.06179349,-0.3675908 -0.2311188,-0.1165107 -0.3444628,0.6302285 -0.02676063,0.4651959 -0.2863533,0.05801423 0.1068782,-0.2347587 0.1799016,-0.2155781 1.138479,0.03464372 -0.2201457,-0.6694405 -0.1594857,0.598333 -0.07630609,-0.03215752 -0.06594465,0.4018585 0.2230986,0.09439264 1.124885,-0.01586239 0.09090926,0.01370514 -0.1354317,0.05892722 -0.01853661,-0.05567522 0.7031878,-0.1326454 -0.1333451,-0.4057427 -0.6480978,0.4333717 -0.1245027,-0.5949068 -0.5943703,-0.111618 -0.1546303,-0.487253 0.2945998,0.678232 -0.8417961,-0.2018739 -0.2653269,-1.366783 -0.008342046,0.2442662 0.09486843,-0.7831401 0.6737885,-0.1380133 0.5976601,0.2400456 -0.3100859,-0.3977972 -0.0875945,-0.5666099 -0.8235739,0.3060596 -0.6660365,-0.5317803 -0.5048403,-0.008410879 0.1137564,0.5309273 -0.3949458,-0.2834332 0.471824,-0.04824046 0.1731305,0.09262197 0.6818832,0.793983 0.5524122,0.1614102 0.05094117,-0.1301252 -0.1507928,0.4912307 -0.7553197,-0.6735567 0.2645035,0.08381778 -0.06487295,-0.3420366 0.1629727,0.5840263 -0.1078904,-0.2653321 0.7580018,-0.2999394 0.3456281,0.1706879 0.3280936,-0.01671697 -0.4276133,0.9080223 -0.1395301,0.8188466 -0.3711862,0.3574661 0.3887464,-0.09821263 -0.1446202,0.2037399 0.333123,-0.07834104 -0.9632316,-0.2204443 0.08837451,-1.063868 -0.5473424,0.5340854 0.06969885,0.6980827 0.3539328,0.9724428 -0.280373,-0.2354525 -0.00259353,-0.3860481 -0.6298666,0.1123178 -0.3497203,-0.2739038 -0.9381286,-0.1001775 -0.07648442,-0.1346886 -0.1674111,0.4951166 0.4933254,0.281085 0.2279724,-0.04633397 -0.009617772,0.4193397 0.2646907,0.5402914 -0.3901151,-0.778405 0.08589868,0.125067 -0.8045284,-0.5841591 -0.8375755,1.141119 0.4712575,-0.3539601 0.03978728,-0.6556907 0.705701,-0.06108121 -0.08518046,0.1053927 -0.6884052,0.2836541 -0.4497102,-0.5896681 0.7717917,0.08865825 -0.9095712,0.0469331 -0.4173495,0.1888996 0.6410829,0.3370832 -0.07765794,0.5633934 -0.8941897,-0.4977198 -0.1495486,0.0341095 0.2234808,-0.701075 0.5336542,0.108952 -0.4934801,0.2736706 0.9285388,-0.09269081 -0.00694133,-0.4453801 0.2827797,-0.3081869 -0.3011487,1.259283 0.6425618,-0.2466131 0.6680084,0.7374146 -0.2781946,-0.06646775 -0.3583256,0.7793536 -0.3795108,-0.8012556 0.7842554,-0.1107368 0.2677318,-0.02800579 0.1047061,0.2089411 0.4962366,0.3239497 -0.2686251,-0.008266216 -0.1340864,-0.50526 0.4645038,-0.5656165 -0.7791335,-0.1860742 0.3249591,-0.09816553 -0.7557631,0.165701 -0.4326599,-0.9289996 0.1738423,-0.2721564 -0.09304752,-0.003351854 0.2976731,0.1179414 -0.5441346,-0.6611174 -0.1896804,-0.04810454 -0.06690258,-0.3844505 0.1469469,-0.1284241 -0.4006072,-0.274493 1.152867,0.8456596 -0.507541,-0.4724855 -0.4712591,-0.0917215 -0.05356714,-0.4101778 -0.5656704,0.04358899 -0.2592868,-0.2875563 0.159677,0.4268319 0.299585,0.0826643 0.2830444,0.6071854 -0.4073777,0.006893866 0.1966925,0.1557578 -0.08085367,0.3186936 -0.4352945,-1.11153 -0.6833932,-1.170692 0.2002843,0.06845712 -0.6824247,-0.8574049 1.247762,0.2608474 -0.4198464,0.2089254 0.4771111,0.8065247 0.6253467,-0.4616906 0.5328745,0.2723339 0.5797212,-0.04659949 0.6359936,0.3737758 0.4636707,0.3279938 0.05080471,0.6800935 0.2788844,-0.2676307 0.2317072,0.3718521 -0.3303472,-0.2727931 0.1994806,0.976473 -0.6529135,0.5312658 -0.2216005,0.3972834 -0.6087003,0.5105317 -0.4199149,-0.6308282 -0.3386592,0.7082275 1.098027,0.2378295 -0.577336,-0.7248626 -0.1166999,0.202666 -0.1948722,0.3709863 0.01436772,-0.2398756 -0.8541849,-0.1454145 -0.2807026,0.3479561 -0.5696715,-0.04684236 0.5475285,-0.7847479 0.08339347,-0.2565709 0.5862439,-0.24409 0.344088,0.8020451 0.7577371,-0.1146363 -0.3180254,-0.7812907 -0.5818129,0.3183734 -0.2135824,-0.1983243 0.09804567,0.4637188 -0.4985239,0.4721568 0.2587332,-0.1639975 -0.3358785,-0.5312741 0.187659,-0.2425112 -0.2078008,0.6624081 0.5798343,0.4352799 -0.428021,-1.031245 -0.06937695,-0.1513952 -0.308731,-0.9559646 0.1323346,0.5132698 0.4062152,-0.2467134 0.2867044,-0.1996006 -0.3058781,-0.08241938 0.463791,-0.05142759 0.2298161,0.5490077 0.03885471,-0.4875412 -0.3970063,-0.02042737 0.3778238,0.5667509 -0.7450237,-0.5431453 -0.976051,-0.3723258 -0.2261994,0.1757707 -0.6843131,-0.7103704 0.1479054,-0.8479739 0.8117418,0.8977893 -0.2648449,-0.1083612 -0.1285941,-0.1573456 0.3754778,-0.02692143 -0.8179485,0.3158656 -0.7658272,0.9064579 0.9172782,-0.3485194 -0.2637623,-0.1227466 -0.1116201,-0.1500661 0.6531804,-0.259266 0.3864536,0.2342223 -0.925787,0.6257173 0.5843616,-0.2327246 -0.2358615,0.1545157 -0.3940057,-0.5948954 -0.8373954,0.188912 -0.9848786,-0.7586964 0.04368296,-1.257671 0.4224536,-0.4504787 -0.8564267,-0.6572896 -0.7878343,0.2167006 0.4293576,-0.1344325 0.1637498,0.5509661 0.2412996,-0.200275 -0.4306198,0.0973408 -0.2327539,-1.095418 -0.6942049,-0.2076592 0.2471554,0.01613078 -0.2238874,-0.04382012 -0.4226215,-0.6805144 0.3460636,-0.48965 -0.2772002,-0.9229981 0.4025721,-0.02349629 -0.1719234,0.9832037 0.08465902,0.4711542 0.140211,-0.3245466 0.3588273,0.8244841 -0.1993304,0.4382215 0.514003,-0.1644015 0.2667646,0.2630679 0.9916892,-1.539025 -0.6003685,0.2659001 -0.207237,-0.3215501 0.2255682,-0.6033174 -0.1312253,-0.2306544 0.5102134,-0.273447 -0.2170162,-0.089309 -0.1679705,-0.8557318 -0.1090462,-0.3490113 -0.0573534,0.2840865 0.04518698,0.1607071 -0.6451359,-0.29989 -0.2226512,0.184592 0.5297981,-0.04697736 0.8008819,0.6167227 0.1453525,-0.04453145 -0.7699201,0.7324534 0.715761,-0.975643 0.5737945,0.09617027 -0.018466,-0.2827406 0.1953444,-0.1457005 0.5560437,0.3389846 0.4261766,0.1892015 0.5746648,-0.1178995 -0.6867053,-0.2334127 -0.6673921,-0.006647477 -0.1623739,0.1799685 -0.4611441,0.0853963 0.4643699,0.2141598 0.3525432,-0.8556015 -0.02951046,0.1182081 -0.3703879,-0.3739039 -0.8358655,0.4129876 -0.3062706,-0.3562036 -0.7414343,-0.4233399 -0.3560656,0.4592402 -0.1385687,0.2031276 -0.003613965,-0.8970601 0.2529962,0.1907835 0.6158164,-0.4748656 0.1383427,-0.1499917 -1.049851,0.6390938 -0.4018877,0.4011716 0.4020414,-0.9640833 -0.08883743,-0.593242 -0.2470784,0.2114437 0.4900608,0.2643402 -0.05028407,0.1005224 0.4854242,0.2009835 -0.1551834,-0.07714663 0.3274982,-0.1052925 -0.1884566,-0.2974346 0.2552558,-0.1901195 0.2181142,-0.4940472 -0.05681891,-0.3282862 0.6697044,0.003878939 -0.01092568,-0.2554049 0.1865823,-0.08269798 0.4875293,-0.4868542 0.2143455,0.1367148 -0.1356071,0.4670829 -0.7323648,-0.6777044 0.5606812,0.2345327 -1.045467,-0.568907 0.2974067,-0.132554 -0.6112643,-0.7540354 -0.03393844,-0.2290144 -0.04172634,-0.9662741 -0.8872749,0.5088 -0.3255757,0.4679161 -0.6389811,0.414322 -0.5365245,-0.4966838 -0.1029937,-0.9269178 -0.237227,0.1544043 0.3680328,-0.1482901 -0.5090961,-0.4922671 -0.3933145,-0.1171802 0.01880809,-0.5092969 -0.9285707,0.405312 -0.08443828,-0.9715932 -0.1235624,0.1231276 -0.4772171,0.0774487 -0.2753053,-0.5716394 -0.8206987,-0.4482835 -0.390788,-0.01980969 -0.1972956,0.2288502 -0.2346917,0.1591176 -0.3679996,-0.6264008 -1.074562,0.5792096 0.06644624,-0.1601266 -0.6142026,-0.1670686 -0.1238374,0.2148856 0.02328048,0.03605489 0.2012424,0.2679938 -0.05608071,0.2228941 -0.2836371,-0.1900906 -0.4961688,0.04066619 0.519684,-0.03890135 0.02992136,0.6033076 -0.5746695,-0.2468578 -0.9352757,0.2418531 0.2310623,0.1237021 0.1432607,-0.3490412 0.5409422,-0.00222027 0.5456742,0.3482692 1.128849,-0.5888141 -0.6435133,0.2028007 -0.6104015,0.8081358 -0.7502398,0.8552353 -0.2953635,0.06080746 0.3839798,0.5346999 0.20489,-0.7839939 0.4867005,0.8085727 -0.6819612,0.002275288 -0.005789808,0.3646684 0.2414542,0.389687 0.07750006,0.5820276 0.6075449,0.3965043 -0.4188929,-1.284658 0.3107974,0.3997143 0.07776245,0.2227284 0.2044914,0.005462236 -0.7887772,-0.3474905 0.418418,-0.000723113 0.3617573,-0.3818011 0.06573937,-0.1019391 -0.1736276,0.09941103 0.7884108,-0.2034862 -0.0984182,-0.3214768 0.2054616,0.2417655 -0.2769955,0.09273717 -0.08753871,-0.3021377 -1.287539,0.1694298 -0.4934838,-0.122727 0.5901543,-0.5401402 -0.1558004,0.04355025 -0.644642,-0.5325429 -0.7778676,0.06084135 0.1759321,0.4871866 -0.5118094,0.1176572 1.291585,0.1214033 0.6131619,-0.4632235 0.5422559,0.4843108 0.0633716,0.4968733 -0.560721,0.76367 0.144604,0.1759446 0.3190774,0.2146057 -0.04768362,-0.7136792 -0.4034896,-0.4901748 0.8040978,-0.6000652 0.2057767,-0.3962712 -0.2012422,-0.7261701 0.05548118,0.127432 0.327018,-0.08959735 0.5345329,-0.3254357 -0.9417051,-0.1574524 -0.7214635,0.166989 0.2305149,0.006060521 0.29914,0.05026999 -0.4422381,-0.1911747 0.1803539,0.3972035 -0.847012,-0.09479052 -0.2311998,0.1701723 0.5126256,0.3010749 0.06171547,0.3733745 0.3784081,-0.09657583 -0.4936617,-0.02755484 0.07003547,-0.1700226 -0.7687435,0.02831975 0.01288592,0.7438689 -0.5115152,-0.2978509 -0.879529,-0.01419373 -0.4442294,0.1022895 0.981402,0.5976057 -0.247029,-0.4885371 -0.2445264,0.2399605 -0.2658361,-0.6380653 -0.3528919,-1.090101 -0.3936228,-0.8774672 0.02035314,-0.4255284 -0.08012871,0.2592912 0.353718,0.2284879 0.3362982,0.463399 0.2224347,-0.09875904 -0.06644805,0.3323877 0.1182912,1.089652 0.5569403,-0.1720952 -0.0549987,-0.05813127 0.02059253,0.112195 -0.8996254,0.2645985 -0.5251587,0.8525756 0.1903326,-0.03384891 -0.7471967,0.8070419 -0.03266697,0.1799558 -0.182085,0.373655 0.4227647,-0.7515775 0.2177147,-0.2126116 -0.2670689,-0.006444696 0.4716197,-0.1570699 0.1509177,-0.8713966 0.02872275,-0.1303755 0.5891167,0.8050984 0.1472285,-0.263033 0.5726315,-0.1237888 -0.07709134,0.6423693 0.3182381,-0.8850139 0.4553869,-0.5277998 -0.3314031,-0.3879941 -0.1453152,-0.5040165 -0.7319129,-0.6020885 -0.0545166,-0.300221 -0.359185,-0.7164394 -0.1490904,0.002565803 -0.3026478,0.1954388 -0.188992,-0.3305427 -0.2608725,0.6598663 -0.309103,-0.09801484 -0.218204,-0.7448404 0.6820546,0.632986 -0.4741231,-0.1647339 0.4507146,-0.4440458 -0.4003326,-0.1023795 0.153945,-0.3702693 -0.4554994,0.2979046 -0.5379603,-0.4347133 0.2227695,-0.04465982 -0.09917109,-1.141839 -0.7532383,-0.47617 0.3628697,0.3884718 -0.2917146,-0.206174 0.070241,-0.264192 0.1802252,0.0604522 -0.6062185,-0.46648 -0.3378657,-0.243948 0.7848217,-0.08235859 0.3097486,-0.08784221 -0.7181146,0.2566819 -0.1573894,-0.1019831 -0.5725486,0.4493304 0.5222565,-0.5636333 -0.003445265,-0.144186 -0.1454938,-0.1003211 0.5054281,-0.2210622 0.5558218,0.2422173 -1.146993,0.2307485 0.3279424,-0.168739 -0.1999542,0.3565204 0.3534501,-0.7798046 -0.4208969,0.2997367 0.3139223,-0.06971178 -0.432897,-0.358959 0.1575547,-0.413041 -0.6180652,0.1605881 0.03852314,-0.1646552 1.043493,-0.06231009 0.6067679,0.7924947 0.4443445,-0.5004425 -0.5204759,-0.107391 0.6555027,0.1147 0.4292828,-0.1837611 -0.2749021,0.7099019 -0.1659146,0.2733111 -0.3046175,-0.462401 0.4140727,-0.3909183 -0.4322657,0.2531419 -0.1711504,0.4225505 -0.5636902,0.8466677 0.3628318,-0.1106838 -0.7522141,-0.176729 -0.6137025,-0.04537401 -0.7673767,-0.1171278 -0.3158721,-0.1603905 0.1437803,-0.03046865 -0.6812339,-0.002733306 0.7409161,-0.004653734 0.1033106,-0.621394 -0.2241513,-0.5955724 0.02944758,-0.08693321 0.2061024,-0.2831905 0.08634085,-0.1520699 0.1271332,-0.6795805 0.002336176,-0.8524683 0.189891,-0.08865699 -0.05848314,-0.09774264 -0.1177263,-0.3382328 -0.7506397,0.08837567 0.6115529,0.7406963 -0.2954815,-1.096929 0.4190597,0.2536302 -0.2966273,-0.7653636 0.6325889,0.8608505 -0.4521779,-0.003567727 -0.2526077,-0.2465971 -0.04275691,0.352028 0.01994365,-1.129625 0.3458288,0.6680694 0.8017382,0.2068633 0.4176504,0.7075186 -0.05182169,-0.1784398 -0.04362067,-0.2091071 -0.9112153,0.2488437 0.2603011,-0.2390233 0.3292253,-0.1147584 0.7673735,0.1047643 -0.3044265,-0.2151102 -0.6250129,-0.1830235 0.02521689,-1.494319 -0.4085088,-0.5905451 -0.6025805,-0.5669936 -0.4061044,-0.7753716 -0.0634702,0.3259412 0.2129914,0.07730271 0.2631483,-0.3520693 0.420318,0.1045306 -0.06154183,0.2034777 -0.5976087,-0.1611637 0.1489495,0.6008176 0.1349865,-0.9658894 -0.243663,-0.09013195 -0.1088013,0.5038665 -0.08768255,0.5146723 0.1643112,0.3511247 -0.6299332,0.7522964 0.05922421,0.07179654 0.6448542,-0.7280518 -0.8122625,1.10574 -0.3125642,-0.4103379 0.4492403,-0.6379077 1.34932,-0.008566056 -0.2380056,-0.06218841 0.3840355,0.9843316 -0.8006837,-0.3669977 -0.4478871,0.2660804 0.01719763,-0.5942398 -0.8417894,0.5117635 0.2991403,0.5288617 0.7897344,0.5811004 -0.8565097,-0.6704637 0.7293851,0.05662318 -0.5657443,-0.9152105 -0.6065492,0.60243 -0.5982155,0.009869512 0.07072578,-1.063373 -0.1969162,-0.025111 -0.03097915,-0.119087 -0.1439004,0.3882027 -0.6337951,6.123772 4.254334,1.998274 4.036184,3.933653 3.281844,4.706509 5.914544,4.027574 2.012807,-1.069159 -1.244488,3.395166 2.732867,3.968004 2.144799,0.4075076 3.17559,4.6794 1.203434,5.519984 4.861207,4.668739 4.937226,1.8914 2.986425,0.07459592 2.069017,-0.3187248 1.234732,4.41543 5.240713,1.774275 3.664435,2.474941 4.522434,0.2492204 4.215976,2.556077 1.962725,1.552197 4.996814,3.980415 5.147959,4.119505 3.821324,1.107015 5.217384,2.896906 1.34718,2.072806 4.119281,3.708206 1.433068,2.186377 2.027741,1.216512 2.987327,2.111406 7.930899,2.47213 1.078455,4.12293 3.262342,0.66246 4.871345,-1.396083 0.1902225,2.39083 -0.8374562,1.580914 4.528532,1.302018 0.09396651,6.646789 7.044187,1.613593 3.651946,1.029747 -0.32441,4.236392 4.170017,3.250224 -1.207207,3.785719 1.014916,2.384775 -1.396652,0.9924672 2.45419,3.105715 4.071766,1.265849 -1.555437,2.84171 4.37964,2.858526 5.545759,3.3138 3.633715,6.14086 7.525577,5.900113 1.281963,-0.245218 0.9284035,3.179028 4.13278,7.677773 2.862784,4.03627 5.731283,1.961329 2.802521,4.153165 4.321229,4.646163 4.70587,6.798039 2.974168,1.233561 3.081323,3.458431 2.131464,4.886969 0.3552956,7.505656 1.352722,3.953928 3.176939,3.001008 2.558075,5.216173 1.860431,1.06639 4.261826,1.424497 0.450971,1.5432 3.186842,1.303319 2.806976,3.775654 4.125458,2.311881 1.161792,5.181519 2.879453,5.128898 3.839498,5.001822 1.128804,3.701416 -1.449144,0.4890166 0.6135218,3.909169 2.910042,1.572371 5.483417,3.134661 5.816329,1.514495 4.825566,3.203961 1.184535,3.622334 -0.2648553,-1.36462 1.010856,0.8889979 5.564637,3.815123 0.08545082,-0.5093527 1.875289,2.420903 0.9106944,1.341521 2.656529,2.660753 2.499838,3.744161 4.045502,-1.001232 -0.1900579,2.187058 2.308591,2.120936 4.604205,1.775019 -1.572244,-2.21742 7.895481,8.265568 1.867043,3.091343 2.246451,1.284041 6.068796,-0.05106857 0.2287392,2.105722 3.98823,0.132629 4.664884,3.153399 3.90764,2.053172 3.695023,5.993719 4.213412,1.642593 3.861349,-0.7395266 5.106122,0.9082853 1.52214,0.3885547 3.322526,5.324003 1.989508,2.570495 2.858926,2.745914 -0.5316107,3.377775 -0.3090904,-0.4496847 2.345558,5.218273 4.563212,0.5762591 -0.1081644,7.011439 4.938852,-2.408657 4.820656,3.920634 1.605781,-0.8962362 4.303129,4.306065 -0.1644951,0.5435583 0.3650879,1.257048 3.111263,2.788245 3.308372,2.861497 5.244936,3.452344 1.582546,0.1224159 1.967379,2.899168 3.315202,6.425046 5.674335,2.599149 1.925295,2.235343 1.796722,5.713091 7.035539,3.595193 0.2844927,-1.557038 2.927429,4.050773 1.723234,2.568582 2.06048,4.653038 2.051507,3.165082 2.10627,0.8227697 3.865567,2.7844 4.25058,5.827846 3.961879,1.807377 4.428054,2.819538 3.170427,4.553599 2.931378,7.267198 2.967952,1.315453 2.111875,5.827931 1.489893,5.030013 -0.4151361,-0.4304728 5.834272,5.138135 3.300615,6.03352 4.174367,0.4095936 2.555186,3.40533 5.507867,4.900571 2.16863,6.175121 4.844472,-1.423124 1.595586,6.413591 3.610339,4.563124 1.779264,-0.3258581 5.918668,0.9758288 4.979254,1.973601 -0.1460211,0.7671546 3.693828,4.704856 3.585963,1.076086 -0.566737,0.4806827 4.345743,7.211905 6.147026,2.78394 6.801977,-0.2870394 5.202567,4.186472 1.138684,2.797238 4.175332,1.239083 4.132271,4.581282 2.404653,2.129523 0.8080457,3.266812 4.800644,2.09944 3.939628,4.330329 1.266958,3.180662 0.8446349,0.3967292 1.295229,2.097322 2.884939,1.721487 1.535949,-1.380207 3.757502,1.504068 4.478805,2.413829 2.042944,5.434192 1.650292,5.413243 5.953207,2.215094 5.047384,5.47224 2.613794,3.429128 7.170795,0.9283498 0.1780362,4.494044 4.690895,4.055845 6.052265,0.8437457 3.462234,5.412384 1.921992,5.05887 2.202433,0.8400066 3.531433,0.9688622 3.587627,3.660115 3.756754,1.889969 8.273656,3.060848 2.217647,4.534786 1.63672,4.18842 6.9894,1.583396 2.895118,-0.8962755 0.07218361,3.739466 2.594125,4.443278 3.550568,0.8648404 3.073411,2.604301 -3.059017,3.936414 -1.46548,7.620882 6.377961,2.985748 3.911971,2.835339 3.418956,2.653783 4.578567,5.890467 6.744421,4.46477 3.603818,0.8825323 3.649986,3.879969 6.05295,2.110797 3.260794,1.227576 3.599453,3.876204 3.547331,0.1215705 4.439033,5.348152 2.488671,4.209157 -0.06869777,1.517309 3.789718,2.340499 2.174425,1.835094 0.5434007,2.864753 0.4219786,1.761168 2.750274,2.814373 3.87746,3.171136 1.61509,-1.692245 1.032491,2.717736 2.961661,2.051392 3.296201,2.309593 6.246654,1.847735 2.45396,0.8625517 0.9645654,5.784148 4.234463,2.192115 2.179277,2.079087 1.20434,1.566189 2.622766,4.107142 4.180891,-0.8655719 3.729449,3.598248 0.6834066,3.519416 3.783579,5.493079 0.9731943,1.507345 4.755679,4.257866 3.755823,2.53084 5.969956,0.5367055 3.172149,1.656461 3.816135,2.492863 4.931918,2.317899 2.997694,4.018044 6.142703,3.285927 3.730082,1.836354 1.108603,1.581887 0.8802704,2.812938 5.941759,-0.9374576 6.190295,4.760752 6.109861,3.87062 3.240465,1.410344 1.732014,4.839707 1.169697,5.717898 4.345946,4.864797 1.193315,1.102788 3.263058,3.806758 5.161022,2.677088 1.771203,2.9514 4.771145,4.060595 5.402464,-0.2714346 7.641102,8.509141 1.920332,4.087147 0.4998066,3.293963 -0.4819458,5.850873 2.351123,0.3760808 1.152152,4.482375 3.216558,4.977065 2.177326,2.727201 3.810081,2.974737 5.222209,4.426572 4.444275,3.14052 2.49801,2.643572 6.232017,2.109011 -0.8504028,3.391861 5.94346,2.70819 2.191848,2.70175 5.173242,5.320232 1.775127,4.521396 4.698221,1.565656 2.7693,4.616844 1.466814,3.6054 4.642196,4.960359 4.8499,5.150873 3.209664,2.202196 -0.4422453,7.880755 5.214932,5.112889 1.555677,1.858219 3.955181,-1.054228 3.592525,3.771419 4.534137,4.291964 2.589562,2.981393 5.166874,1.613932 5.163214,3.630946 1.440463,2.876406 -2.011022,0.6719449 4.24016,0.1063797 0.411572,-0.9787856 3.566267,3.173584 5.756753,2.791156 3.131649,2.586007 1.958912,4.988916 2.872227,4.246842 -0.4943332,4.195663 4.903549,3.343857 1.60292,3.814759 2.678458,2.188259 3.745688,1.069533 1.081477,-0.301317 -0.17764,-0.7056616 4.479285,2.059992 1.436363,1.605094 3.807339,0.5569428 0.4813504,-0.3431777 5.833642,3.21652 1.068538,3.214947 2.591427,6.780647 1.518617,4.644317 0.1889032,1.805098 4.45178,0.008933448 1.16462,5.15289 5.718867,2.980187 3.560823,3.563289 3.944017,2.610645 -0.2963551,0.7410659 4.031436,4.281374 3.028221,2.783294 4.10088,5.43336 2.302505,1.835912 0.8222064,3.981191 1.478483,-0.2874397 2.480801,5.186659 8.149772,3.696119 3.993292,0.8507879 6.264461,-2.677069 1.633718,3.662916 2.558315,-1.164178 4.810551,3.646428 5.489318,2.659297 2.103181,6.996174 2.824887,2.037768 6.996976,2.374202 1.333845,0.4584015 4.242343,4.045303 3.760103,0.2258693 1.231272,2.915604 4.641372,4.169899 -0.2294794,1.077455 3.193724,4.747212 3.899321,4.743419 5.529773,5.471491 2.938458,6.217759 4.759356,7.532552 -0.5705267,5.301768 0.3317092,4.678556 3.901257,1.021731 2.674806,4.155972 4.539606,5.043948 1.120816,3.830428 0.9304876,4.629467 3.722684,2.851451 5.269338,2.009601 4.262636,2.802639 1.71291,-1.460485 0.3596996,1.712528 4.14517,2.933616 0.8925778,0.2389234 4.201814,-0.3700031 4.379645,1.257603 3.616854,1.349318 3.19187,4.496609 -0.8183952,3.226382 0.01894876,-0.6018201 1.710556,4.319452 0.588189,2.879277 4.556131,1.625654 3.026856,4.001749 3.83695,2.92176 1.582654,5.024461 6.096652,5.896229 2.291519,4.322058 0.8576302,-1.252154 2.81886,1.04003 0.02210385,3.49211 4.931213,8.612742 4.577725,0.7533802 1.238404,1.940048 5.270812,3.499762 3.274494,3.657079 6.528349,4.694383 5.524491,2.897069 1.789222,1.247187 2.67217,5.050453 7.60935,0.5231851 2.238996,4.509683 8.093713,2.630717 5.872237,2.106458 3.524947,3.061471 -0.0915031,2.947388 2.558441,5.305496 4.343224,0.6315555 2.990506,1.391551 1.085242,2.415467 0.3843056,3.472224 1.660145,1.634598 -0.6204588,3.853566 3.990723,5.078873 -0.262065,6.899065 2.422386,3.882031 3.211394,5.021948 3.152704,-0.8809821 4.390256,3.662662 2.200691,3.333913 0.6580567,3.026841 6.12353,4.333546 2.589761,3.078337 1.622398,8.377255 -0.6798051,3.831648 1.768679,3.148319 4.76121,7.107548 3.671795,2.177421 3.279622,2.200181 3.02118,2.474784 2.627445,3.47378 1.834202,5.309352 -0.348259,1.445465 3.558197,5.073537 2.018376,1.33561 4.056978,1.230176 3.661782,2.401896 3.958118,2.541656 3.910368,4.353218 1.021105,3.504066 2.313825,4.456096 4.095593,2.241257 3.561178,3.091279 -0.9290552,3.606136 1.579297,2.079273 0.6443277,2.822359 0.8600508,1.451589 2.570411,3.583641 1.761366,2.729885 7.44885,3.586885 0.9965695,1.593084 0.6403346,1.075258 2.160782,4.254991 4.28669,3.965203 3.093665,1.75815 6.491509,4.495977 1.917707,1.637913 5.772314,-0.7948955 2.2669,2.754253 3.919155,4.538257 4.126701,3.185083 5.414076,3.457393 5.966303,4.037924 0.9304559,3.831851 2.524073,3.505848 4.29419,1.639961 2.073551,2.879002 5.694258,1.433424 2.925226,4.373586 0.6256467,3.149575 6.866761,5.837233 2.041792,2.926157 5.828042,-0.4453866 5.932051,7.218469 6.862078,1.372729 3.876349,5.364455 3.394281,2.859547 3.923521,2.396017 1.768265,0.7397988 5.827427,4.907571 7.099621,3.212348 4.167554,2.922772 3.946853,2.548402 6.585493,5.415674 2.952735,6.359661 2.757404,2.930724 2.377573,-1.437189 -2.460465,0.5357864 1.418154,2.065759 1.620451,5.411218 -0.362132,0.9476263 2.299498,3.686528 1.793733,1.20264 5.270998,3.926767 3.485008,2.781709 4.047395,5.596272 0.2126143,2.132445 2.814501,6.628406 3.112091,3.551385 2.978761,3.83448 2.594775,3.786308 0.9706839,-0.2153885 3.750742,4.680456 4.614733,3.373506 1.467183,2.436385 6.001051,0.379827 3.465345,3.907421 4.828296,-0.09936148 2.941545,3.714815 2.11204,2.61702 3.419706,2.688425 5.225915,3.99659 6.51777,6.688551 4.16948,2.07713 5.16793,4.529692 3.766622,1.053704 3.440897,2.309167 4.86462,1.508801 1.010507,8.708281 2.604942,-0.6363009 4.729239,2.029898 1.252934,0.05578479 6.698247,2.691066 2.949434,3.734804 5.544715,3.285006 3.811906,0.03265746 4.211721,2.432647 1.072155,3.156381 4.65818,1.1822 0.7464979,3.150063 1.554233,1.654974 3.178238,1.983153 2.753355,8.692731 -0.286487,0.6090233 3.569158,1.410549 1.971745,-0.3692785 0.1764208,1.233846 2.780882,4.668709 2.852024,1.386618 1.112403,1.85655 3.659324,2.081571 5.09438,3.175664 5.561632,5.385135 4.961277,2.519526 4.049564,-0.2684277 1.752169,3.452245 3.01112,2.48457 2.636336,2.310456 1.967254,1.032239 3.943302,1.404383 2.604066,3.196278 -1.930288,4.768093 5.552648,5.718768 5.751449,4.68335 2.518598,3.553797 3.575423,2.07932 4.201979,-0.6626205 4.327588,3.742197 4.061118,2.993634 7.268149,4.53477 2.748803,5.64075 3.134396,1.396359 1.757705,5.02656 3.456918,5.153327 4.174986,1.25225 3.181653,3.44067 1.337767,-1.915367 4.955591,3.467501 5.448681,1.223731 -0.3699135,1.163531 1.486454,2.005023 3.247478,2.396068 1.921577,3.113505 3.248699,2.438359 -0.1905821,0.2234121 2.262779,1.816561 1.31779,4.970689 5.899473,1.240154 1.900707,5.794636 5.905068,1.486791 2.522066,1.413625 1.534067,5.408746 5.728797,2.245178 3.819834,-1.067834 6.352822,2.85541 3.058264,3.178839 1.475579,1.460172 0.8089168,1.065361 5.792177,2.771434 1.274025,0.2950832 3.151983,3.088856 4.336342,-0.551301 0.629244,3.262471 5.991956,-0.4075925 4.282217,1.784684 -2.544801,1.980767 -1.237175,3.382386 0.6087277,5.789441 3.75959,3.508402 3.938825,6.16519 1.995964,5.211713 0.843651,2.049877 4.280364,2.264965 4.678321,3.624393 2.252367,1.786311 1.353719,0.9603356 2.232954,7.083913 7.099522,0.4885546 3.01108,2.843262 1.460096,2.62339 1.791198,0.6468494 2.758044,7.162573 5.38603,2.104717 3.166928,4.940012 3.460347,1.05181 4.395988,7.193437 -0.4172652,1.510514 4.249342,3.856137 4.283908,-0.03230214 6.699499,3.897556 0.8963903,2.100447 3.602956,-0.4389276 2.697419,5.777239 0.623834,3.278337 2.250625,2.955439 3.254198,0.6059599 0.8937439,1.277729 0.7313905,5.557017 1.277458,3.127632 -0.6250923,1.861518 7.191742,4.539617 5.094749,-1.334391 2.89099,5.272159 6.347691,1.207353 6.439637,3.311833 3.448116,4.178096 1.559018,0.08602149 0.3240234,1.694287 4.440332,4.6617 5.425479,1.285123 4.155634,1.318347 6.129249,4.324843 4.147423,2.893024 2.683937,-0.2141907 5.31305,5.109741 3.322681,3.799767 2.648322,2.998193 3.734344,6.23286 1.878703,3.564775 5.968782,1.560229 1.68753,2.244673 6.250513,2.6429 -1.088455,3.572233 5.406444,1.67188 3.086617,2.73058 2.65541,0.2835311 0.5103906,-0.3228541 3.023218,4.899089 1.237058,3.421953 3.997989,3.634863 1.151709,4.982735 5.5534,2.357906 1.057984,3.786614 1.754694,4.439439 4.765193,3.417353 5.567319,3.774923 1.44175,3.939075 -1.407255,5.351574 -0.005048671,0.5793786 3.094853,5.754177 8.750995,-0.2667955 0.04811634,0.464303 1.172121,2.142857 1.761209,0.4837492 3.361191,3.742599 1.475779,0.5653932 5.98196,2.797111 -0.1260478,7.02958 2.716716,1.934278 1.194753,1.177618 5.496845,4.893255 2.653726,3.766601 3.598403,-0.3901606 4.129731,3.250032 5.065451,-0.2275349 2.838295,2.188163 6.63677,1.073111 -0.182649,4.523385 4.625851,6.216609 3.55351,4.588847 2.998235,1.24083 2.343541,0.8018576 6.372638,1.754504 2.665197,3.138275 3.693308,4.696462 4.263063,5.046006 3.157845,6.88466 5.856433,1.319107 6.170036,1.168825 3.69016,4.919726 5.16506,0.3359107 2.303147,-1.364945 3.105106,1.759199 1.730109,2.097045 2.265723,5.845597 -0.7702347,1.976286 1.104502,2.361978 7.725914,4.354149 3.101775,3.522473 4.952491,5.415474 -0.8151732,3.885964 3.102224,4.195415 8.335625,2.014427 0.2105997,2.498126 3.521133,6.107124 2.059115,2.753516 3.408588,1.538879 1.886438,3.800179 3.546216,5.615995 0.9468054,4.398649 1.191417,2.698171 1.142722,2.855064 0.4092737,-0.9057244 1.701334,3.888962 2.185825,2.665838 2.652509,0.7868019 4.358881,5.101178 0.6417307,3.353718 -1.462738,2.151642 2.82265,1.197355 4.914191,0.5635703 -0.2651373,-1.103309 3.42337,4.027364 7.413612,2.595082 3.002144,0.96355 3.219042,6.802642 1.557988,2.149186 2.811381,2.687857 3.201027,4.491451 6.451739,0.3108258 1.667804,4.674824 1.02976,5.178563 0.1169063,5.43023 2.339976,2.28249 3.679852,3.492192 -0.5165679,3.782229 6.194128,2.618852 2.820388,3.087001 3.117968,5.048524 3.095871,5.898555 5.314562,1.622616 4.138854,0.9486089 1.006748,4.477996 3.315914,2.520056 7.227503,6.477423 5.838153,3.023421 4.641442,3.627969 4.126112,4.145974 0.7330743,2.503318 2.097028,2.278257 4.906158,2.669898 4.374281,4.554365 0.8432838,5.039445 2.537435,-1.182315 5.964087,3.476275 4.443034,3.3284 4.87696,5.425621 0.8842414,5.436078 2.427343,0.2665835 3.071236,5.322029 0.8073267,0.1827849 4.458999,0.3909807 3.476046,5.273949 4.531394,5.362019 2.722531,5.052486 2.891308,1.305549 4.503923,3.721726 -0.2094215,3.312326 4.273571,4.327159 3.032413,0.1514285 2.290269,3.420645 2.473913,2.894687 2.466094,-0.6647649 4.351889,3.423931 3.185304,0.06367316 2.800538,2.3124 0.07138802,6.464637 1.031929,5.920107 1.237939,5.545996 3.664822,4.654034 1.896304,3.945174 5.637334,1.51713 4.367524,2.799497 4.386416,3.479146 -1.084112,2.362855 3.55247,3.54861 2.120529,0.2794031 2.861084,2.601513 5.033743,3.5759 -0.3485212,5.399631 1.229735,3.82598 1.070059,0.08967238 1.386074,2.218683 1.295145,0.7102598 0.9454639,2.03716 6.334438,2.390628 1.819199,3.095521 4.748336,6.619214 2.117945,4.03297 3.384518,1.631676 2.906997,3.618609 1.233018,0.3121403 3.507292,2.900302 4.525849,3.497771 2.841948,3.23758 1.732026,2.848682 3.460096,0.3036787 1.760503,4.579826 -1.061098,5.386477 2.707453,5.247608 3.775748,2.090895 3.159948,0.8551175 3.652825,3.982832 0.2948515,3.30327 -0.5040965,0.3960446 2.286392,0.7752805 1.50709,3.762108 7.216958,4.569633 2.668934,3.781749 6.216244,2.465712 7.300169,2.978761 3.540781,2.68957 -0.2462005,0.2525757 0.4737269,0.1642912 2.066546,5.098045 4.38364,4.832123 0.7797819,2.381193 3.491159,3.417333 1.369579,4.398666 1.984977,3.939322 4.274596,4.439599 3.827511,4.412137 0.6787832,4.905219 4.032084,0.4792095 2.830427,4.175018 0.7213023,2.770837 1.933073,1.693952 2.89796,2.738157 2.718287,1.710341 3.848559,0.8470026 1.628549,5.850883 2.996134,0.7611919 4.105806,2.759005 4.525359,1.208852 1.645668,0.9067908 2.736953,1.787338 0.102218,6.652793 2.881397,3.269278 4.350658,2.692478 1.840456,6.662561 4.57914,4.217141 3.685374,1.561853 4.439827,4.834866 4.643931,3.349357 1.754047,4.886157 3.546135,1.890494 2.410963,2.249792 3.06445,3.888823 2.836738,2.943212 6.132334,2.330177 0.9370186,2.612971 5.405158,4.508559 7.434179,2.083063 3.989692,4.147949 -0.615134,6.133642 3.685205,0.1316564 3.344027,3.087764 4.462932,1.59869 2.081398,1.619082 4.763272,3.50117 4.25447,2.343647 0.9407072,4.672556 7.21013,3.564149 1.730261,3.790514 3.907631,5.370169 3.131189,3.956591 0.2046682,3.884154 3.498833,-0.2579949 2.63272,1.377215 2.312725,4.035878 7.215646,1.821059 6.23165,2.865738 3.084955,-1.020188 3.099009,-0.1768691 5.217042,2.132004 6.482916,4.000331 4.834595,2.413299 -0.8098294,4.449908 2.652823,3.766191 0.8885543,4.776898 5.661271,1.945382 5.484223,0.5985943 4.672366,1.481548 2.858126,3.345351 4.781851,1.943016 2.54276,-1.773154 2.180376,5.784565 3.298796,0.8013097 -0.5946333,3.375675 4.215928,2.857024 3.51314,0.7892829 2.782443,6.309138 6.923155,1.038519 2.383772,0.241696 4.341286,0.8932435 -0.8860436,4.320608 1.168116,-3.123538 5.675091,3.570068 2.975978,1.647099 3.349903,4.3221 2.850376,3.265809 3.0296,3.629217 2.498953,4.07602 0.8818336,4.064231 5.405535,1.005307 2.299761,3.872738 7.683933,1.419735 3.085049,2.920581 2.506647,2.966433 0.9021484,-0.1194717 4.708907,1.774039 2.221917,4.679031 3.259042,1.042296 5.212891,2.484326 5.240285,5.824258 5.965685,3.402279 1.717636,4.526779 0.2993194,0.3246243 1.980068,6.012862 5.865388,4.65888 2.955083,1.418307 4.007621,3.342949 3.142052,4.276904 2.093371,3.47183 1.738005,0.4977781 4.10943,3.307267 2.473308,-0.9457116 4.791569,3.938906 3.437631,1.405319 1.594428,9.493176 1.146938,2.226035 0.1888387,4.112836 2.465318,3.49527 2.004352,6.412623 1.049875,1.784412 4.372237,-0.1363572 -0.6194247,3.855152 2.931489,4.106941 3.355941,1.72472 4.019321,-0.4453171 2.326546,0.8026178 3.781127,1.741468 1.397623,3.779292 5.535846,4.642813 3.964062,1.128237 0.92514,5.765452 3.44985,4.000265 3.889537,4.877027 3.830511,-1.161548 4.751154,2.734759 4.000891,4.199195 3.363071,5.562364 1.299526,0.4286611 2.92441,7.523584 -0.3622231,4.846286 -0.6835405,3.209037 0.204581,2.801469 5.417603,0.3660787 3.278791,1.326204 3.834427,0.03909428 1.21419,2.619713 0.5735148,3.687546 2.014371,1.65527 0.8620987,5.171163 1.636046,3.057847 3.474719,2.636257 5.634815,4.530254 4.945386,1.374377 3.815404,3.404422 4.741069,5.78746 3.425945,5.130031 4.476929,3.749091 2.326656,2.811301 3.673077,3.704837 3.643182,5.177018 -0.09706987,3.455125 5.90669,1.277364 -0.9790322,1.693647 -0.5471186,0.9128777 6.55213,1.010793 3.054789,2.660744 1.12546,2.96291 3.746596,0.2568702 -1.062053,3.673818 3.858657,-4.10033 3.995856,3.599285 5.329427,2.382314 2.182727,2.851857 5.698634,5.839484 0.05885176,1.507896 3.019396,3.720724 2.954682,5.159243 4.504045,4.119667 3.955793,4.068968 2.360117,5.380395 4.402243,1.114216 4.336084,1.361009 3.106298,-0.03078098 0.9887067,5.180604 2.332158,-1.590698 4.176603,1.12173 4.002761,3.8189 5.174234,2.509785 3.930158,3.031648 2.890965,5.070301 2.629894,1.518827 2.67737,6.712832 2.529557,-1.111864 2.085741,0.577866 1.002951,2.815761 3.072316,4.236688 3.554348,4.557504 3.147003,0.5294958 3.944101,5.718322 3.148093,2.908187 3.570309,0.8938416 0.9784284,2.48382 7.749101,4.596933 0.2788295,2.442003 3.699395,5.018043 2.339597,5.715198 -1.446369,3.901217 2.471443,-0.9576886 1.482439,0.3283675 1.838035,5.080645 3.678103,1.759642 2.452785,0.3717012 3.653225,2.344814 3.591843,5.852645 1.393849,3.003439 5.178342,2.1841 -0.7608767,2.51626 3.237335,3.14417 3.713573,-0.2716419 -0.2170786,1.216842 2.438767,2.130711 1.785659,3.828124 5.641829,0.734264 0.3363789,1.923989 4.501636,4.46607 2.675183,2.493961 5.67175,2.802576 8.684292,5.199437 1.906964,4.155374 5.010089,2.708177 3.460855,1.895197 3.87965,4.057648 4.605844,3.235418 2.569659,2.11163 0.5565878,3.27857 6.240532,2.325266 0.8228559,0.2966664 1.166551,3.418265 4.935528,5.273458 4.561073,1.729017 1.110097,1.592792 5.338495,4.021209 6.250335,1.028372 4.845364,-0.5153648 3.438207,5.072196 2.915579,1.175266 5.156275,-0.7073268 5.853203,4.443379 1.33212,3.009178 3.690559,-0.9210309 3.362605,3.736283 -2.088743,3.785739 4.358186,6.347709 0.8192516,3.469864 4.269773,2.301261 2.389168,4.56148 1.171629,4.562382 3.952975,3.382807 2.307504,3.790677 5.580523,1.352828 3.477182,4.819254 2.635152,1.818871 3.25678,2.214686 4.301576,2.344523 5.592402,5.527177 5.372798,5.947381 4.119515,0.4605607 2.557613,4.089534 1.745659,4.271578 6.130835,2.953067 6.118771,5.884784 4.884346,2.283278 2.203896,3.435532 4.080851,1.430793 -0.2432538,5.716806 4.101569,4.187666 0.1058716,4.719409 3.293707,1.985072 5.467438,2.976091 1.177733,1.310018 5.050885,2.406066 1.709102,-1.27316 2.520011,5.719192 3.157403,3.01729 2.264778,6.68498 4.143638,5.913358 5.005731,5.592281 1.30611,4.397986 2.737264,0.6990363 3.368036,2.740703 1.299658,3.38356 0.7110162,4.895649 2.802579,6.89853 3.386732,2.486721 2.07671,-0.6595584 0.01512981,1.485718 0.8519767,2.250106 -1.516902,2.329567 2.826887,6.221926 6.917525,4.19075 -0.00565059,4.109553 1.891213,1.697686 0.1953673,2.56776 3.801332,5.58644 1.678685,2.266186 2.019678,5.842274 3.042138,2.209069 3.192065,3.808583 0.5617936,2.247254 5.883253,2.37118 4.775803,4.531791 2.79077,2.086696 6.16315,2.248544 0.3318434,0.3490012 2.372167,-0.2275661 6.92105,2.607271 -0.6106062,5.590584 0.4897195,3.135408 2.41709,0.6074075 3.308098,5.841758 0.6668044,5.953644 2.283888,0.2758678 0.03891172,3.567639 3.736861,2.790995 4.917023,1.829265 2.501271,3.591348 5.482231,1.824383 1.823572,0.2311824 3.419354,6.080162 1.342476,2.473398 2.778384,0.07280802 3.069844,4.087059 0.7066868,-0.1932808 3.682896,2.422147 5.0339,3.154701 4.491163,7.311262 5.336768,0.8752864 2.719471,0.06351189 2.4922,3.655207 4.645216,2.346098 1.446961,7.091339 3.094288,4.748423 2.090824,4.59862 5.104284,4.695353 1.48991,4.017838 2.693338,4.13539 1.30546,4.746734 2.754906,3.451992 5.350203,4.280487 5.142474,6.911301 1.859387,1.263364 5.82715,2.852497 4.082857,1.250894 1.546882,1.012407 4.934872,1.932818 2.202752,3.981031 4.871314,5.871147 5.121032,3.794115 2.17113,2.183136 5.946835,4.886759 4.075911,3.28431 4.494068,2.940789 2.210279,3.492599 1.344569,4.591239 2.705834,1.902081 6.258411,5.458981 1.349988,3.054806 3.232626,-1.184693 4.802656,5.576698 3.626949,6.990532 4.717596,2.226292 2.50848,3.708226 0.9503546,0.795075 4.267154,2.115302 2.643087,4.651821 2.785078,0.220607 4.723488,7.737282 6.284696,3.272911 1.557671,4.516855 5.075753,0.684981 7.85336,1.482402 5.361823,1.960492 3.441997,1.068542 4.931114,3.542351 1.762007,2.425329 5.242041,2.162712 3.807511,6.304807 3.249938,2.680424 2.089933,5.149148 6.595211,3.323744 3.1649,0.4004897 0.94324,-2.47586 1.30431,0.6728173 1.399481,2.822382 2.320798,2.090709 6.444968,4.59163 5.475215,0.5059581 4.239014,4.430755 1.960907,6.865107 0.4546585,3.793176 6.670589,5.064291 4.026229,0.7203949 4.175687,5.721565 3.548857,1.64899 5.914717,1.502364 5.063992,2.013601 2.443624,1.31289 4.247602,5.973157 2.574324,3.550199 -0.2378513,1.627283 4.076047,2.827254 0.7455771,2.851942 4.341251,2.180765 5.32081,6.67085 3.600976,3.527293 2.633353,2.928693 0.3229764,0.02965789 2.11338,7.466422 0.60724,-0.7778268 1.37033,3.493262 -0.3208363,2.147108 4.136757,4.508013 6.295999,6.260424 5.001291,1.699936 4.82242,2.80244 4.83815,0.7564719 -0.8116746,7.815876 5.232895,1.773668 7.869763,3.162557 0.6008632,4.523497 4.822655,1.363811 4.019852,4.20892 2.813857,3.738465 4.018539,1.019601 1.974016,1.887047 -0.4199811,3.522237 3.38867,5.621079 3.958008,2.417647 4.028427,-0.1064308 -2.102677,3.781801 5.437219,-0.2125225 7.511051,5.58071 4.282564,3.549353 0.222428,1.505433 5.306984,4.529531 1.0829,7.070182 3.580498,5.725487 5.135523,3.657759 4.744641,5.580611 3.09248,2.105475 2.668447,2.477367 3.501511,2.025977 4.533491,1.400651 2.066732,1.674063 4.853005,0.9447211 2.577342,3.923113 3.732791,2.972163 -1.172369,-0.4099596 4.255011,4.22047 8.286915,3.210895 3.415461,5.348242 4.122953,0.2605933 4.22185,6.473005 1.954477,-0.02230078 7.843701,4.362137 3.233298,5.445584 2.891233,2.58135 1.493928,1.350529 2.188032,2.163304 -0.5458844,5.20186 3.110336,1.869217 3.389861,3.06233 1.150471,4.686202 3.446919,1.091538 1.115423,1.564958 3.232768,3.40844 4.679398,3.698635 2.95736,2.819328 1.348654,-0.4141179 4.445341,3.003351 4.007819,4.210636 3.268038,-2.458113 9.699016,-0.9665276 2.427876,0.4535447 6.614495,6.801029 1.701523,-2.75757 1.345096,0.9084633 3.671041,5.562699 0.3679417,3.7766 3.057405,4.63036 0.8861822,1.843183 2.544665,3.422979 5.328694,3.767941 8.960621,2.081578 2.467051,5.127216 2.744078,3.184635 -0.9469444,3.259547 3.94338,3.374575 2.500027,4.250741 3.330747,4.042082 0.7012068,3.81388 2.849006,5.286305 4.786562,2.706089 3.764911,1.470325 -0.8116404,0.412445 1.154361,5.088575 5.614455,2.455677 4.291303,4.197194 2.133211,3.518242 2.622789,2.171046 0.188116,-0.1967895 3.975858,3.122036 1.841203,3.887175 4.6382,0.7860138 4.771089,0.1831382 4.559656,6.247066 3.117548,1.647913 5.945623,1.502009 2.33395,2.369732 3.309062,5.176255 5.335018,4.076157 5.658573,3.014644 3.433443,4.369751 4.307338,5.249874 5.079494,2.090401 3.477107,-0.5794949 3.991616,6.246336 2.206445,1.555743 4.280562,4.323474 4.68116,3.149907 3.683135,0.7636972 3.765274,1.094351 1.975403,4.296985 2.083066,6.169181 -0.4583361,0.6235354 7.783915,3.374669 2.210065,2.483564 1.571857,5.701218 1.766365,4.863021 2.101818,1.01117 5.399315,4.857356 3.396185,3.301788 1.928151,4.72134 5.510853,5.094544 2.591336,4.782708 4.216817,7.232745 4.933776,6.466896 2.215302,1.162993 2.380761,4.291608 1.290739,3.02801 5.835935,2.555929 0.8653739,1.933924 4.235645,1.064635 4.743837,0.5338022 3.131342,2.69473 3.706977,3.318525 2.388392,0.3481895 2.941788,3.176426 3.968668,3.137892 1.845253,-0.5237864 2.264225,2.477744 3.435652,1.366432 2.360594,0.3139047 3.731876,0.7147961 -0.3370802,3.471734 3.184451,4.340006 3.968775,0.5038795 2.853147,0.6632155 -0.4007447,1.803989 -0.01859919,4.496582 3.442579,5.145622 1.496924,0.9713529 2.011028,2.468643 4.954945,2.742036 3.570614,3.226554 6.290399,4.667066 4.341355,5.25824 9.534258,6.685145 1.537729,2.486888 4.80729,3.375029 3.60103,5.253091 3.391222,1.695104 3.876217,4.836689 4.45368,2.936436 1.645402,2.523287 4.819889,1.735428 1.852853,-0.6993231 4.516734,2.581066 3.740131,2.741536 3.596443,2.106752 1.279632,4.067835 3.260498,3.000476 1.405946,4.258308 1.877668,1.871513 4.775835,1.604341 2.24883,2.370579 1.417293,3.53551 2.181103,3.91238 1.677914,5.439956 -0.6121975,2.089626 4.486936,8.267761 1.301455,4.334358 1.743947,0.1954346 4.841064,3.500378 5.238672,7.481332 5.063192,2.094266 4.690265,-0.1644688 3.125859,3.46055 3.049698,1.031725 2.155783,3.760694 -0.07774606,3.547831 4.490375,2.034595 0.488786,1.354735 3.235936,-0.6844428 0.9969518,2.276918 3.995122,-1.456592 3.433996,-1.141574 0.09719684,3.62869 5.872088,2.497009 7.780101,0.02731307 2.689925,6.264541 3.916946,5.458737 6.148348,4.612205 4.105966,3.882681 0.5714272,-0.2524952 1.0587,4.749879 -3.175221,1.068664 2.937034,0.2339492 6.013776,5.248127 5.859397,-0.1661424 2.526662,2.136295 5.186302,-0.6115471 1.371847,0.6480067 4.796666,2.217013 1.979181,2.962099 0.5273837,3.321026 2.671471,3.246328 2.515283,-0.3363301 3.369624,3.350811 4.446715,3.122377 2.054499,5.799851 6.633365,1.859972 0.9013165,0.5271852 4.176756,2.890258 2.465476,-0.7107003 0.7936993,1.700323 3.362855,1.537556 2.613351,3.697346 -1.2181,5.532254 2.716905,1.064966 3.081032,4.193063 0.14059,3.294138 3.178521,4.769436 1.544563,-0.5708567 4.952715,4.648516 3.389955,2.207857 -2.680651,4.184911 3.831692,0.3596361 3.383299,1.173461 2.286027,5.741423 0.01964129,0.5184385 3.647094,3.63026 0.6624278,4.343502 3.095876,1.147163 4.373813,3.415373 3.081731,3.718223 2.758477,0.8000338 5.231479,1.968489 2.506238,4.403072 4.399796,-0.3539134 5.569668,-0.1255251 7.34816,3.580251 0.3445776,1.858119 0.193479,0.3017072 4.490805,5.119566 3.012323,2.977393 3.962614,2.990485 1.516379,3.045216 3.290874,2.305282 4.806779,4.083456 3.653041,3.49302 2.208535,1.854954 4.475971,3.378166 3.613307,3.026306 -1.052909,-0.2866429 5.768307,1.830001 1.947462,1.168192 2.305049,3.488 4.684644,1.541898 2.733631,4.59662 5.981264,3.851397 1.501977,5.465798 3.863738,1.225558 5.539599,-0.6065268 5.314046,0.8208416 0.5752108,4.227374 2.035088,3.93033 2.949454,4.693312 2.540141,2.131375 0.5094258,-0.2404076 8.049746,0.4597329 0.8198352,4.513385 4.161632,3.465071 2.793798,-0.1704567 3.249001,0.783688 0.0416281,1.097209 3.123474,1.841319 4.583084,2.825156 -0.238952,1.726632 3.632277,4.098611 2.517004,1.719387 0.9775597,1.724583 4.520228,2.225929 4.179625,1.308337 2.244158,5.64331 3.910587,1.042106 5.733436,1.121379 4.670172,4.446029 3.076181,2.173431 -0.2735875,5.681469 6.216515,1.860515 3.772307,4.492646 -1.088366,5.91633 0.4305411,2.318211 1.511403,1.549702 0.8622456,0.4129253 4.035043,4.686707 1.938977,-0.2026371 2.752197,0.4011727 2.633918,2.515975 3.254871,6.249903 3.159058,4.79107 2.263012,1.066312 3.72961,2.532648 4.657494,3.236468 0.483733,2.897142 4.891227,0.5129218 4.011574,7.508384 3.791397,6.462385 0.3030307,3.297895 3.150636,5.179224 1.115213,4.287743 0.7935715,1.643718 4.038011,4.619653 -1.098601,0.6077892 3.08977,2.142222 1.343962,2.705479 4.580727,0.953296 2.655448,1.944074 -1.306256,3.468565 0.2436907,5.127506 2.51598,1.592413 2.252961,1.571821 5.637314,4.868568 5.572743,2.117527 1.751225,7.233443 4.798555,3.434673 5.177151,6.428173 4.637574,5.542659 5.237379,-2.171981 3.548953,1.339753 1.975436,2.036521 0.5175653,6.447604 1.324052,3.796955 3.442701,3.543824 3.058164,6.422297 0.7646445,1.454896 0.571823,3.483725 5.29505,2.049769 -1.543983,4.005526 2.109357,1.424878 5.016854,-1.302387 3.457659,4.260327 4.804613,2.344251 5.670249,2.891755 2.804233,4.001007 2.591135,2.530536 3.579073,3.816687 4.662263,2.788785 1.692873,6.363578 8.312345,6.114787 5.127566,1.230236 5.569223,0.7503841 1.14963,3.130374 5.794708,0.3440775 7.14642,1.146419 3.850311,1.182396 5.4005,0.7321049 2.170548,5.299039 2.580294,1.051776 2.582035,5.01255 0.8910943,2.126608 2.303009,5.63667 3.609248,2.534239 2.148761,6.170193 0.1427238,-1.179866 5.611213,5.229835 3.36199,6.225522 5.778234,3.65342 2.887476,6.185649 4.264215,0.07791072 1.764642,4.517905 0.5770682,5.539633 5.163032,3.558623 5.963962,4.873771 2.24731,1.731893 4.428682,1.453189 3.948734,4.293779 0.7794234,2.295936 6.947759,-0.1347307 2.167543,3.36247 1.709158,2.910995 4.828148,4.974239 3.355653,5.17427 2.366592,3.496506 2.767763,2.853065 -2.187184,3.405938 -1.341977,-0.2635613 3.55795,3.313287 -0.768504,5.139656 -0.5551199,3.031508 3.517634,1.256623 3.829628,5.322607 4.206844,0.4856323 4.073547,2.069269 2.440743,3.713033 4.195247,0.1801559 0.8463159,1.446653 5.414147,0.6193382 3.365791,1.431764 4.010092,2.600945 2.272391,0.02853439 3.307298,6.766236 3.452489,3.020973 0.308904,1.673664 0.03597275,0.6539531 4.263888,-0.4539228 3.075425,1.799591 -1.72417,1.514686 1.717649,4.485699 2.980861,1.879672 1.329506,3.533955 1.459665,-1.53996 1.540109,7.251266 0.1581417,3.564042 5.819791,1.691427 3.521425,-2.308104 1.506414,0.2541261 -0.9650133,4.716784 1.512187,0.647775 3.577404,5.555889 4.088638,8.748385 4.189443,0.125383 2.289782,1.953111 2.671957,2.188486 2.730514,3.986235 3.431075,2.244215 3.282854,1.304132 3.765558,3.36246 -1.212933,3.502526 8.553245,3.373532 2.332518,1.813409 3.061937,6.149936 3.015534,2.166686 3.733716,4.638334 2.659104,5.769543 2.044619,1.662522 2.621149,4.941208 4.291572,5.462081 1.943761,2.697532 3.24719,5.075273 3.020994,-0.5690528 1.696281,0.008987154 2.997071,5.15959 4.051384,1.256408 3.591607,6.028719 4.113559,3.885484 2.326654,5.801622 2.793599,5.874867 5.674407,2.3469 7.506022,-1.523557 2.723397,2.809161 4.746354,1.330496 -0.1755117,3.864153 3.10309,-0.7787351 6.244914,1.938444 1.374739,3.145816 3.877637,0.5770715 1.214526,3.362471 1.827771,3.073118 7.268127,4.117329 4.595047,4.907032 3.078038,3.233914 4.110116,3.814525 3.13854,2.688237 2.414873,4.547307 -2.335776,1.856536 4.494479,1.157423 4.309298,6.465588 -2.102987,3.728215 4.053402,4.732181 3.630544,2.887412 3.937219,4.55283 1.643679,0.9143881 2.978954,4.387464 4.863345,2.4258 1.095288,4.085998 4.47523,4.311039 3.893096,-1.129118 0.08209364,-0.6329404 3.751032,1.665913 1.990777,4.349204 4.219222,2.901814 2.378236,2.030207 2.274889,4.950616 6.452889,2.142796 0.9468663,5.383449 1.616971,1.913074 7.182698,3.627307 3.150193,1.150762 -0.6792205,3.47464 6.152342,3.540011 3.803978,1.200601 3.57612,1.75594 1.840665,4.385097 1.297817,2.75014 6.383425,4.042917 8.783082,5.498812 2.320431,2.980157 4.700971,-0.2387914 4.641089,1.719543 1.690651,0.6250122 2.927099,4.203008 4.575681,2.956612 4.803835,3.480008 2.108466,1.279267 5.313526,1.301459 0.2938645,1.708404 3.41379,0.4939568 4.339259,0.6978053 4.205406,7.038743 2.500649,-0.3295236 2.690714,5.736535 3.223963,2.522648 0.9104996,4.925773 4.065322,6.909587 6.534963,3.321512 2.979027,2.923023 1.920986,5.029398 3.927977,1.368098 1.174119,3.668708 -0.06877498,5.538817 3.65138,4.760561 3.457094,3.538244 7.600719,1.275771 0.6469175,4.082397 3.854683,2.154914 0.6461978,5.344156 5.640186,3.534228 2.553869,5.134663 3.679543,-0.2329466 1.483324,-1.186798 3.8421,-0.4290113 3.033981,2.837408 1.43105,2.17293 0.9523161,2.982867 4.035019,2.194483 4.31059,4.006385 4.818478,1.088726 4.548992,4.928691 0.3598496,-0.7350591 0.6947276,2.735653 5.751446,3.521063 3.655997,6.694131 1.377364,1.461703 2.352657,1.152723 3.060586,4.446478 4.681339,4.038966 3.050185,3.212827 1.700402,3.826463 -0.6317342,3.50755 3.952956,4.125383 2.168775,3.760755 -2.396094,1.533732 1.815261,2.675642 0.1959089,0.423462 4.308057,3.673332 0.6552218,3.404809 2.811869,-2.18582 3.904734,1.790321 2.618564,2.523874 3.0515,3.876393 2.26461,1.574774 2.193546,3.487062 1.957732,2.097971 4.499158,3.636839 2.023313,-0.03448442 6.436942,3.292314 1.005891,-0.450361 2.814609,3.034043 3.821408,4.1106 3.174521,1.105792 3.48654,2.430522 6.610722,4.574097 0.2004436,0.5380258 0.3665451,2.672176 2.5072,0.2866979 0.255947,1.055837 7.707459,3.619263 2.930162,2.011358 -0.6318722,3.701304 2.80477,6.507323 3.627442,5.945297 1.749523,6.568983 2.178356,3.813391 3.083808,1.097324 5.538844,-0.0624884 -2.008664,5.861984 5.74409,4.212564 4.347291,5.500394 3.311833,2.729163 3.460347,1.327678 2.822763,1.524716 1.837182,3.692377 4.728822,3.205558 -1.059455,1.324217 4.586677,5.594301 5.713754,2.335562 3.40133,3.230234 3.052439,3.491879 6.801886,4.494705 5.60328,4.486162 4.60915,5.923224 1.854934,6.941178 5.554803,0.03585518 4.545593,4.700709 4.090421,2.820835 3.835924,4.549626 3.907443,5.62782 6.318925,2.917594 2.350498,1.283795 3.734822,5.699996 1.975778,1.675184 2.842782,3.144199 0.8285597,5.877729 4.979982,8.48861 1.561331,3.958905 1.223733,0.7432797 1.964196,3.15907 1.137765,-0.1421751 5.293907,1.679008 5.622825,-1.101471 4.37491,4.550837 2.447978,2.194759 5.308192,5.991021 2.445995,1.256659 1.023015,1.153125 1.708565,-0.3918985 2.92172,4.093804 1.885007,5.187428 3.380869,8.701843 1.712052,8.037454 0.2416642,4.159381 6.43322,5.623512 0.2741281,3.707383 4.144472,2.312764 4.387666,-1.114393 5.384649,2.364294 4.753667,4.06104 1.225721,5.559106 4.293917,3.869608 8.162925,-2.374843 6.306209,0.2810338 -0.3319765,3.334076 5.240415,3.055468 4.676061,3.827071 1.663345,1.77903 0.9354584,3.046918 2.182642,1.296196 4.735455,4.943584 1.90924,4.086439 3.858481,-0.3902297 2.156976,1.929767 5.523313,2.429353 5.365453,3.790276 3.265777,0.8694557 7.550649,-0.5329597 -1.021882,2.494973 1.630351,0.9584709 3.99604,-0.2509107 2.051927,-1.001348 2.172669,6.046626 3.096895,1.16668 1.741848,2.23574 6.908465,0.5384493 1.612909,-0.4569126 2.812228,0.6211201 0.2590755,5.399966 -0.3217267,-2.339001 3.435861,2.825685 5.462557,6.025851 4.095675,4.015086 3.677918,3.010739 2.267908,0.7704444 -0.02524884,0.8066528 0.9648811,-0.5375127 4.430585,3.699435 7.163066,2.681174 1.505345,-0.5382689 4.299348,2.935279 4.678207,1.969487 1.37104,5.91342 3.292452,2.831771 2.192027,1.134722 0.9107665,3.899589 4.662724,3.177167 5.125668,6.217308 1.593701,3.184656 4.240748,6.594241 3.39406,-0.7402675 3.042878,1.124623 4.685151,1.557999 -0.01799683,2.812788 3.130527,-0.8836994 3.006639,4.480582 4.032505,1.370068 5.370343,1.425613 3.049385,5.600879 3.493919,4.02072 2.028937,3.871089 -0.4109607,3.911935 0.07257965,3.377611 3.15609,0.6804021 1.848491,3.62445 4.83156,3.686724 -0.181736,2.432107 3.76588,3.967055 2.885261,3.743801 5.011985,2.892759 2.496319,3.904443 3.842879,3.427615 2.927163,6.446522 3.599238,0.6685589 -0.4243113,3.127073 2.951544,3.213049 5.252275,-0.02478628 1.771027,4.702273 5.237376,3.688143 7.875551,4.510881 4.186287,4.367503 0.890658,-0.2410381 2.23246,0.2055467 3.16066,3.153139 2.038336,4.62666 0.7788696,2.694666 7.663973,4.409756 1.243005,3.191775 0.9459046,6.978633 3.944476,4.996893 3.356508,2.940544 -0.3982392,2.476008 2.383767,1.942916 4.73862,0.7922695 3.498724,1.88733 0.9403029,3.654542 2.318826,2.64104 2.017017,8.937747 3.478928,3.384363 4.454673,0.7928167 -0.2675046,1.250446 4.672356,6.585901 0.5143321,1.759636 2.179511,4.046387 4.489552,2.734901 2.547447,3.85704 2.277516,4.293773 3.07198,3.731017 4.595753,2.092612 2.743555,2.015483 0.6287618,2.932253 1.127345,2.997748 3.501446,3.586184 4.476616,5.192407 1.980796,2.148686 7.782654,0.4894512 2.169847,1.644538 4.762509,1.912724 3.400283,3.930626 6.657259,-0.6949382 0.4263948,4.323725 3.281634,1.065016 3.620644,3.223598 2.55777,2.186289 3.782487,1.805752 2.737414,6.410162 0.8985258,5.855368 -0.8595226,3.33421 3.938931,0.5274244 3.843799,1.629081 0.9951462,0.3502388 0.7863957,2.801424 3.52105,-0.9670079 5.156954,7.245262 -0.6688357,-0.5371537 4.534009,3.811479 2.063556,1.993548 3.319904,0.9719615 3.425368,4.660752 2.27279,3.271228 2.257037,2.478222 1.258922,0.2033569 6.537245,0.06955309 5.84439,3.996811 4.515651,3.311978 1.584937,1.074322 2.623504,5.724812 2.243177,3.779305 -0.603931,2.788669 2.08002,3.338764 2.213305,1.613518 6.838334,6.34623 -0.3050536,4.67757 1.018285,-0.1678323 2.148635,7.995542 5.543616,1.310253 1.474195,-1.963915 2.52994,2.822299 7.602902,5.968985 1.089054,4.190141 3.437248,0.5019858 -0.5866751,3.082323 3.00076,1.768407 6.253422,2.696635 0.1971091,5.036098 3.944378,4.042634 2.12113,3.967164 5.473595,0.5814095 1.798185,4.570411 1.018309,4.032784 2.130588,5.694606 4.525478,2.801285 0.8230553,4.248667 5.984982,4.852259 3.948898,3.496821 1.898625,0.2345537 1.175048,-1.582359 4.687139,-0.5965592 -2.038295,0.9176344 5.662389,0.763231 4.40118,3.701472 1.285213,2.585672 1.884773,4.281507 3.769954,3.500057 4.036223,6.370372 1.322364,2.195033 0.649676,4.58566 2.720135,2.315712 5.01806,4.679974 3.962493,2.534189 2.030526,10.45458 5.045089,4.538529 2.48002,4.043313 -0.8187067,3.850127 3.147774,1.996793 7.177868,5.171075 3.565268,2.186732 4.051144,2.021894 7.082605,-0.07004686 4.81924,0.4413094 5.342317,-0.5874333 5.34611,1.082911 4.061636,3.546867 4.199331,5.55071 4.885613,4.317412 1.270646,6.213031 2.731235,7.356344 7.103715,5.203378 2.677894,4.156344 -0.1245738,2.393651 1.428409,2.756717 5.274217,4.026305 -1.345613,6.530312 5.963498,4.705544 0.5401555,3.174053 5.206686,2.062553 -0.629524,2.82958 -1.309336,1.722184 7.012605,0.8416287 2.715561,3.245985 2.042973,0.55942 5.278036,1.747443 2.699905,1.718398 3.551566,0.9838726 2.344249,7.222974 2.43626,2.712134 0.851696,3.355682 2.997034,1.989024 3.531964,4.001977 3.794877,2.385653 0.5157322,6.770044 4.533507,5.174075 1.41897,2.509397 0.5935484,3.185279 -0.2191809,4.255559 6.22921,5.924917 2.056404,2.087149 5.648416,1.52692 1.549685,2.756278 -0.3066742,1.009462 -1.037782,2.69945 3.171874,4.389591 4.595965,0.728667 1.554103,2.761031 3.157838,1.986145 0.8735956,3.149726 2.016599,2.871833 7.586329,6.336896 -0.8532379,0.9872987 4.905904,1.353147 3.696073,4.297735 1.303379,5.205652 4.608575,3.202836 0.8844251,5.937218 -0.4649771,-0.2763083 2.649838,2.123703 5.440882,0.114439 3.710561,4.438252 3.400545,1.903158 4.104122,3.404258 3.826926,1.404017 5.588527,2.484162 3.338788,7.020946 -0.9224901,1.494498 2.566431,4.517202 3.550335,1.555592 1.411378,-0.2768151 -1.173269,6.253712 1.584582,2.37768 5.347669,1.886971 2.684695,3.78026 2.254054,1.720198 3.078788,0.384217 3.179542,3.397147 0.9962432,4.411087 2.224823,2.895694 6.420138,5.24897 2.937418,-0.1890083 1.556297,-2.181074 1.299318,0.2348133 1.076008,4.959522 2.473702,3.547659 2.95081,3.606538 0.1917604,7.012595 3.025329,2.083657 4.999957,-0.8772312 1.988389,5.098026 1.573905,-0.1895883 7.98936,0.9297266 2.272545,2.111637 -0.6069477,5.297771 1.217544,5.868267 2.859163,0.9967278 5.957229,7.656901 2.662587,5.122092 0.756573,4.284273 5.227745,-0.585195 3.368526,-1.547372 1.770374,3.422403 4.896709,6.211674 0.2756455,2.106516 -0.6870757,4.000862 1.895673,1.935724 1.496308,1.24927 4.068341,2.365498 7.299161,1.924416 4.409151,1.976614 2.485048,1.101088 4.186087,6.633805 4.361822,3.223431 5.749283,3.932293 1.00581,-1.757833 7.33268,4.449751 2.792075,2.584525 3.446349,1.846786 3.07541,0.5925049 2.862331,3.310088 4.953191,3.292923 3.288156,5.275227 2.695629,0.3588397 -0.4156166,3.143933 0.9568635,1.700458 2.317524,1.922323 3.038562,3.665707 4.309489,3.576749 6.528916,4.92201 5.337344,1.829164 1.588679,2.270306 4.129531,1.799851 3.088617,2.213043 2.383781,1.597886 3.396001,5.070826 0.3486501,3.774194 1.333897,5.328609 1.696167,5.606274 2.094301,2.625491 1.357128,2.984716 6.086412,3.045975 3.81118,6.137775 2.551179,3.210276 2.488665,4.428296 -0.139412,2.823474 -0.04112044,1.246844 2.785927,4.803351 3.45832,-1.399891 5.268074,4.027628 0.08638854,4.073873 1.972431,0.8074772 1.010986,4.18052 2.023114,2.27219 2.959168,2.079048 3.361422,1.377775 3.788344,8.280689 2.867975,4.971361 5.859521,1.653058 3.572578,5.631776 5.959782,1.897377 0.8764476,6.209048 3.32069,5.220576 5.028612,1.590719 4.794495,4.793558 6.734724,5.561641 6.30035,2.373979 2.43251,4.08405 5.110334,1.694518 0.301223,3.241315 4.892138,7.09043 4.069014,2.448075 2.087674,6.097539 3.300836,1.519013 2.144013,1.749997 4.33804,0.867207 0.4201605,5.788797 7.640794,4.626655 2.003186,1.305861 1.080025,0.7978312 1.246822,2.190748 5.058303,4.5079 4.340629,-0.4713843 2.665769,1.410269 3.015854,2.289705 2.241618,5.415582 1.279879,5.196929 0.08570076,5.212925 2.006825,4.980503 4.508662,5.823507 0.1900739,4.203032 1.05876,3.024536 5.321034,4.185867 1.886952,6.631001 6.265465,5.14804 3.119159,-0.6911106 1.170599,0.3577138 1.706362,1.197146 2.682514,1.960193 1.437148,5.63443 1.217955,1.629939 1.550258,2.683562 5.878389,-0.2930773 1.429523,-0.003466881 3.745154,5.234693 2.29402,5.314993 3.225086,3.38864 3.392424,3.768433 4.274913,3.343364 3.415881,5.06361 1.52714,5.431564 1.48417,0.3083021 3.350391,1.680068 2.071196,4.379707 4.023932,0.127719 1.866689,7.352391 0.4675914,1.907969 4.417948,4.348926 2.502479,3.432824 3.466666,2.39809 -0.03609265,1.766299 5.759892,4.4459 -1.062466,5.282057 3.042319,5.724921 0.4329974,0.444647 -0.2823456,1.176395 3.746722,2.738922 4.177406,3.460442 5.324868,-0.09570667 6.434639,2.050804 2.096992,5.355389 0.8112303,1.424618 -0.9122727,4.369769 1.901101,0.365061 0.5741789,2.782377 5.905437,4.309446 5.068967,5.095171 6.239245,0.158351 2.291045,6.071278 5.829833,3.305199 4.696918,5.933983 2.036348,2.498236 0.6466908,1.379649 7.062648,-0.3373988 -1.876441,5.542118 -0.2805147,0.8609991 0.8708865,6.833792 3.408972,2.977051 0.5506399,5.772495 1.789011,3.080911 6.041631,2.554268 1.454228,1.967904 4.013052,3.227374 5.430754,-1.463741 2.289051,0.7847555 0.2497501,3.645858 3.773688,3.746585 2.586265,4.91448 4.196169,0.5012847 4.861076,1.609689 2.63694,4.083184 5.336231,0.4865644 5.104643,2.322341 1.976565,7.769614 5.614847,6.8279 4.129424,0.7565348 -3.003403,1.875166 1.719196,0.8909529 4.626583,3.89385 3.889133,4.43597 0.5866562,0.8245056 5.603405,2.114626 1.954054,3.879272 5.169497,4.162679 2.541531,0.147122 0.8932453,2.790069 0.04865873,4.405311 1.227185,3.360675 7.665875,6.021144 6.378739,5.429934 1.133987,4.689437 2.687271,0.9291528 2.591,1.854606 3.016623,5.926437 1.894135,-0.01538905 4.371503,7.156569 2.505772,1.939453 3.037372,5.42759 2.772104,5.777652 2.27753,4.258429 4.524877,2.566747 1.321264,-2.278727 5.921526,5.453182 1.797789,3.371415 3.703391,5.118334 2.944199,4.4495 0.3086407,1.904992 2.063245,3.53171 3.916377,-0.09588455 1.358794,2.111733 2.999742,2.062792 5.55171,5.2984 1.619108,2.750901 3.189188,7.976579 0.7203046,3.429434 1.419048,3.54762 1.503838,4.079816 0.7981895,1.645222 3.190532,4.636304 3.778278,-0.5267044 3.056859,6.190505 2.006284,-0.2080625 1.916428,2.843747 5.472286,1.055923 4.469965,6.498174 4.466449,4.53562 1.927564,2.641367 5.850377,2.431942 4.361897,2.357576 2.562343,-0.6935883 1.556045,-0.1555875 6.282041,0.04738825 3.253647,0.2431299 3.182356,1.349796 3.088723,3.507195 2.796419,4.667503 2.233909,2.626566 1.108029,5.444602 1.726399,3.380534 1.063871,2.661492 2.63039,2.470831 3.812966,3.757262 3.607371,8.274724 3.255229,0.7956807 6.481983,1.156959 0.6916493,5.885199 7.432146,1.893329 1.813861,2.112659 3.361464,0.9646697 3.69826,4.463492 2.632707,3.567011 6.44805,5.634585 1.446511,5.820579 3.470578,0.534751 1.415881,4.834469 6.729521,1.540056 2.455556,1.215781 4.023447,3.053118 4.616907,4.572187 6.979778,2.330287 2.247593,4.083607 1.591118,4.157388 6.512616,1.319772 2.945354,5.161335 1.662354,-0.2402249 1.191995,0.8397686 4.999256,1.783836 -5.002787,3.490622 -0.26221,5.894024 1.380923,2.915617 2.620489,3.408715 3.970189,4.272291 4.742482,3.487515 2.965464,3.429918 2.822139,1.916725 2.10659,2.183327 3.5483,1.430957 5.36616,3.45701 5.305889,2.916519 2.546257,0.8590556 2.656031,3.861104 2.646989,2.001368 3.415592,1.258868 0.7426026,3.165669 4.358996,3.421648 0.8128762,0.3444061 3.054944,1.25994 5.395684,-2.540484 4.251967,6.396164 5.364973,5.642026 4.946326,6.019696 -0.627404,4.420592 0.5165809,5.574625 5.192153,5.392346 4.897392,2.33924 2.155062,4.911709 8.72042,4.124476 3.710815,3.368659 -0.7896228,2.42416 6.234137,3.379984 3.036163,5.925917 3.714141,1.471544 1.621352,3.845065 2.848222,5.524457 -0.8297272,2.222581 4.158648,1.721457 4.382606,5.945023 2.79008,0.6410482 1.484231,0.8958778 -1.077044,1.453429 3.792698,4.912457 4.195169,1.814746 2.394102,4.630806 1.221923,-0.1133091 -0.6487651,1.02928 5.404605,0.5627644 3.672589,1.203091 6.24201,3.453016 5.33891,2.305233 10.23127,4.546478 4.057468,2.995998 5.785716,3.147698 5.145509,6.309174 4.264308,3.700379 3.313897,2.972792 -0.8456729,3.503558 3.938953,4.266329 -0.1925039,3.073013 4.790029,1.914625 1.427551,2.343628 0.1058607,0.08528932 3.670678,2.955168 1.66876,5.544049 4.252922,1.797287 0.3168002,6.200007 1.036632,1.723382 0.06618973,2.437617 -0.2170148,3.467266 4.545585,2.132124 8.742756,-0.189946 1.816857,0.957058 0.9464809,2.392164 3.839775,1.781747 3.113533,0.723212 3.269627,1.28382 3.885378,2.115157 1.561746,3.659369 4.341947,0.4405501 4.077305,1.915954 4.908793,1.80477 2.179407,3.623112 4.139208,3.064446 1.500353,3.376399 1.785511,4.0447 3.852715,5.115165 0.9545908,1.164647 2.51302,3.508596 4.52555,6.258229 2.944253,8.019092 0.6843458,2.873862 2.075558,1.389087 6.254435,-1.265496 4.051273,0.1202369 4.817118,3.326738 1.155987,3.360225 7.960377,1.452097 -1.006423,-0.1872573 2.650358,6.9972 1.448128,3.502884 4.284003,3.442786 2.522002,1.980876 3.10811,1.794942 3.510695,1.527735 -0.8159142,5.947491 1.077932,3.272669 3.488696,7.637914 3.130893,5.606268 3.483308,-0.1094852 4.044861,0.9770492 0.9638828,5.854296 6.766394,3.624352 2.440102,5.448405 3.978235,4.680613 3.972509,4.809885 6.668484,3.312786 -0.05383032,2.309205 -0.8564646,2.199194 4.642428,3.373835 3.181763,4.210315 2.260111,3.950618 3.419833,4.416089 7.121676,1.356595 0.3692818,4.663221 4.407207,5.205641 0.9102589,1.351074 0.8083373,1.351965 0.6243724,7.608858 4.686122,3.52125 2.539553,2.314362 2.609478,-0.8451675 2.805306,4.722986 -0.2320352,-0.8613595 -0.1233001,4.038065 4.693487,3.459135 0.4224774,0.4794326 2.793427,4.150122 0.1777924,10.15164 2.652561,-0.04750563 8.117576,4.134353 6.77821,2.87271 3.560699,4.365555 3.43385,2.959941 2.825882,6.19616 4.290689,0.8416983 4.302303,3.804687 2.819798,0.9428455 3.044205,1.601044 3.513624,3.07566 1.849213,1.509631 4.426296,-0.1983792 5.327098,3.009619 6.495203,6.016977 4.170329,5.36351 2.658514,-0.280023 -1.5385,4.282462 1.296061,3.010173 2.713025,0.02807628 3.730409,3.420214 3.060913,2.552933 4.359149,0.309465 -1.758265,5.615587 2.032848,2.092105 2.488474,-1.952419 1.79791,4.849712 3.249036,5.37733 4.036232,2.185408 0.8226729,5.351137 1.830924,3.200217 5.369218,5.124872 1.26342,3.969646 3.495285,3.756133 2.622897,2.296195 1.237326,0.202488 1.288373,1.696991 0.8113001,1.647157 3.567569,0.1525229 4.090967,1.849474 5.067862,1.265886 4.03345,2.346783 1.366276,-1.223844 2.112602,1.33998 4.499516,1.487826 2.705017,2.307097 3.393678,1.687858 3.644016,5.868412 3.302167,3.674659 4.27417,0.3888545 4.540478,5.081797 4.44461,1.142271 5.521081,2.535165 3.65309,4.198649 0.2606337,2.901364 2.468059,3.328338 6.131924,1.748765 3.246003,5.390117 1.898481,3.497106 4.193057,8.4029 2.29898,2.964899 0.4263749,0.264752 2.345918,6.062662 4.659964,-0.8663427 5.158258,0.05204947 1.494443,4.993204 4.816065,5.808481 3.096633,3.305607 0.7998367,1.472574 5.75274,2.179262 4.05072,1.385261 4.259012,2.330325 0.7188784,3.886592 2.695063,1.897707 1.159922,0.0493219 1.213323,2.678124 0.1075113,2.728163 2.995899,0.5749743 -1.293957,6.201681 -0.06347722,1.084778 5.19017,0.1511092 5.083981,4.269344 4.251146,3.906425 5.204783,1.621397 7.371269,0.5370836 3.550346,2.432197 0.6845121,3.897045 -0.09872458,4.453374 3.069095,0.547487 6.030017,3.766648 1.640808,6.429645 2.801125,5.916884 2.706517,5.73446 0.9203165,4.310566 2.205496,3.748589 4.29357,2.541926 2.581147,6.77069 3.061905,3.399933 2.237005,5.620183 4.508323,1.904979 4.552596,2.007256 0.6780285,3.123505 3.763185,1.335115 0.3930762,5.315008 1.917093,-0.2620327 2.207319,0.4948018 3.690963,-0.5198364 1.790591,5.336932 2.877259,4.467016 3.868749,3.631993 1.928553,2.149737 4.028799,0.8520261 5.071521,0.8948542 4.674219,0.9939177 3.079012,2.133436 1.955585,1.978518 1.162545,3.611269 2.001498,1.937242 4.307061,3.099685 2.886599,5.366606 5.770547,3.613627 3.804876,4.627032 4.414868,8.292916 4.525501,3.171723 1.826314,3.762072 3.134889,6.778721 4.122613,4.462922 1.737381,5.301045 2.148162,3.401616 3.26184,-1.255608 5.206506,0.2343697 2.175633,1.086974 4.301706,5.538408 2.816014,4.867084 4.592861,4.870752 4.836039,2.137352 1.187556,3.33127 1.692429,6.179168 5.354635,5.709781 0.9228077,4.208761 2.495502,1.030428 4.037485,1.933904 4.940263,4.719421 2.67214,1.801221 1.974195,1.60051 2.931758,4.338512 6.284241,1.593147 1.337819,2.458965 -1.940042,3.039767 3.066104,0.4468298 4.621625,2.31491 2.944497,4.418344 3.856579,2.125134 2.837778,3.881648 6.060098,4.324427 5.012371,5.395413 4.431212,5.171929 3.269841,6.810623 3.785034,3.564137 1.805529,3.694679 3.103186,2.651133 2.133742,4.084698 2.962636,-0.9760164 0.9691791,2.475865 6.504929,1.582879 1.666696,7.039566 3.124756,5.032334 0.5674139,-0.2653351 2.096492,4.009668 0.8397938,3.38095 1.356066,-0.1197439 0.03359416,-0.6088826 3.386645,0.9987935 0.1534365,4.59296 3.944958,2.534948 4.568046,-0.00807257 1.557017,1.413508 7.062772,3.834786 5.178993,4.862299 0.9181594,-0.1054139 4.582892,1.154294 1.04662,3.515298 -0.7327561,3.971681 2.284906,0.949119 2.978993,2.689058 3.182011,4.010532 1.413443,5.983406 4.931793,0.7459185 1.516869,1.861986 0.9375893,4.13544 -1.458588,4.523596 3.278549,5.341021 1.088631,1.036935 3.216158,2.515606 -0.6271521,3.133628 0.06915631,-0.6869424 1.668163,5.448927 3.62867,5.479474 1.913776,1.175542 8.190065,1.873266 2.692381,5.764555 3.333093,2.934509 4.750844,1.325411 3.998794,1.841591 1.354385,4.450788 -0.0823995,5.659224 0.9164082,5.041603 3.863908,4.590751 2.918612,3.879022 6.346903,3.704315 3.564232,3.909753 3.686016,3.626541 4.231892,4.643032 3.401423,3.973454 2.485261,6.43283 0.7400591,1.854624 6.750422,3.391674 0.5026356,1.724228 4.048944,2.501069 -0.1921777,2.919817 5.182939,4.442731 1.642566,1.512483 5.294107,3.959837 4.559367,-0.4693493 -0.6460998,4.160805 1.858363,2.408064 2.775181,0.4354289 0.3107788,4.703218 5.644351,3.148989 3.279307,5.176238 3.285586,0.5386876 3.360909,0.5428047 3.270697,3.374371 2.081529,3.540755 4.040315,4.618742 2.904674,2.807608 3.225651,2.36204 6.389056,5.399058 3.719263,4.17805 0.3443469,5.116205 3.05925,0.4310971 1.935805,2.30917 6.011383,2.051202 4.118306,0.29409 5.634819,2.764317 3.428454,6.949985 5.457533,4.01863 2.371968,2.757493 4.943134,4.646597 4.004664,1.956011 1.985015,0.3785805 1.715067,2.615433 2.088785,-0.8915399 0.2418849,4.574106 1.547563,3.295163 4.905045,2.688302 7.696708,1.604016 2.863338,2.226977 4.035469,-2.429621 6.1946,3.688501 2.590066,3.712527 3.534359,5.510718 4.979722,2.740566 5.320761,0.4875195 4.577962,-1.454604 2.879004,1.048828 0.5655023,1.005892 4.264405,2.960179 1.871533,0.5883945 6.01933,1.265232 8.272448,5.888418 4.217606,4.75463 3.535926,0.2048213 3.84606,2.440034 4.509794,4.349528 3.773655,4.376365 4.991134,4.248998 3.1634,2.842295 4.124968,2.188139 1.458212,4.894903 5.304988,2.23918 1.503168,3.02193 2.863458,1.74485 5.982388,4.952627 3.771072,1.619209 4.629723,2.091483 2.131365,1.393797 2.015891,5.253929 2.048472,1.58961 3.244063,3.27636 2.520765,2.270615 4.185835,6.933726 6.193248,4.034807 3.248594,3.510419 2.723318,0.9201899 5.034116,2.540152 1.713382,1.294277 3.961268,0.6198429 0.4936966,-5.253255 3.534308,-0.7838912 1.114584,4.915281 2.407108,-0.6148476 3.53205,5.048335 2.220937,3.122746 2.705169,2.42048 1.349991,5.723463 8.612924,0.9807783 2.503968,6.620632 6.296767,3.736725 2.314287,6.190763 4.679864,3.179252 2.43125,0.7526888 4.39901,0.8841622 2.110361,2.234276 6.695068,3.989032 4.867558,1.078308 0.9495851,3.812185 4.77197,3.909524 4.720206,1.171958 4.37338,4.691017 3.919882,6.465478 2.427373,1.012483 5.007167,2.822845 3.134662,7.189377 0.8659498,4.52662 4.954204,0.9740657 0.6078598,5.212244 5.202524,5.152346 3.136646,2.94772 3.089405,-0.3124217 4.00316,5.839466 2.751933,2.303068 2.144676,1.278619 4.541355,-0.4066082 2.293539,0.6575888 1.280985,4.731884 3.391823,4.847473 4.632342,3.019287 3.309482,2.756101 4.271283,4.16163 2.011683,2.392835 2.871977,5.658389 -0.005343475,2.858344 1.932588,2.758418 3.200862,5.543744 3.969509,3.493326 3.621782,4.596984 3.1161,1.463479 1.767728,2.198576 5.995992,3.972359 0.2404182,4.083418 1.942738,5.801317 1.879588,2.011514 1.220439,5.081755 4.88009,4.701358 4.897315,4.979446 3.621036,1.860453 3.831178,6.989265 2.311882,4.93299 2.820626,1.510422 -0.7054317,5.024808 4.13955,3.189421 0.2591601,7.790441 -2.070759,4.79135 2.936499,1.574736 3.966918,3.223575 1.739114,4.347728 3.108811,-0.2194272 3.021803,1.273955 4.211576,1.957893 3.017455,-3.247869 4.588379,3.09444 2.010618,1.249179 3.00837,5.687414 0.8956236,4.00651 1.160633,3.612962 0.7043692,2.665742 5.565857,3.876066 2.317674,4.065335 5.045851,2.293532 2.888058,5.304271 3.521589,1.902418 0.6129019,3.300565 4.366726,4.339238 1.693509,-1.299143 1.242572,4.207582 4.893782,2.154422 1.513944,4.232249 5.018305,2.604978 1.816074,2.286951 3.361745,4.276719 -0.04722683,4.751535 5.80135,2.308378 3.231358,6.060102 3.198636,7.030538 3.01851,4.229872 1.2189,1.644594 4.73673,2.475383 4.631967,1.871615 4.062628,4.788488 3.166889,4.148854 5.009378,5.999514 2.884796,1.961405 3.043413,-2.448689 5.59543,5.580563 1.102311,-0.7900809 2.454633,5.416468 4.178493,3.223577 0.5416322,2.040822 1.736286,2.855526 0.7791719,-0.2879294 3.046239,3.984986 4.504677,3.495622 4.999075,1.137742 0.4019535,3.213087 2.364155,2.351199 -0.05379868,3.111484 7.650516,-0.1272895 3.435305,4.967661 5.222239,2.939006 -0.4244706,2.460691 3.051515,5.824283 0.8274139,4.510497 -0.5804935,3.3939 1.197219,3.504836 2.865019,1.617919 2.857809,6.690272 1.763824,0.6437895 3.138501,-1.228124 4.980326,0.6225871 1.553683,5.041079 -2.11911,3.532553 3.605539,4.731785 2.718655,6.763518 5.797726,1.913386 2.671223,3.329803 2.294211,0.4489441 2.613782,3.675546 0.3820136,2.040962 2.755372,1.382217 0.5717632,3.065827 7.064508,2.760814 3.934398,-1.522172 -1.219073,1.0112 2.295,6.809872 0.7523416,-0.4904863 2.544738,3.764701 4.495246,0.09808617 0.7172425,2.769464 6.077284,0.587293 0.8796638,4.384506 3.801478,7.028724 3.308984,1.384016 4.817458,3.652084 3.10049,3.33642 -3.475856,3.419533 2.176876,3.834373 4.669681,0.7865717 1.507593,5.18001 3.404023,1.126452 4.047544,6.240121 3.659381,-0.510361 4.268675,3.15998 5.344046,7.043767 2.469078,2.426395 4.113296,-0.1341072 4.215479,-2.070656 2.293294,3.194006 4.310221,4.29094 6.746863,1.364143 2.09555,2.564717 -0.1200598,1.469113 1.377968,4.207942 2.150748,6.311528 1.551621,2.816981 3.390041,-0.3566695 3.121913,4.361825 5.385721,1.711671 6.804377,3.767425 1.289906,4.032138 4.923362,3.816446 0.4604724,3.489471 3.53358,5.220419 0.7747123,2.064795 -0.2804685,5.977214 2.379267,2.637895 1.296565,0.09319058 1.702441,0.5480601 4.092921,2.825465 5.286889,3.92994 1.156474,2.639073 5.741888,4.658985 1.796385,5.529453 1.592331,1.564369 4.093618,-0.5427591 6.127278,4.28806 1.749886,2.296704 3.733338,-1.834808 3.309949,2.217214 -0.414741,5.699007 3.132531,2.254958 -0.07213233,3.117904 -1.026302,3.809694 -0.09263619,2.654516 2.204631,3.734302 2.995958,2.810942 4.962851,3.644792 6.444866,4.588764 1.981283,2.618184 0.9786497,1.648514 4.779074,2.899424 1.540762,2.511414 2.396106,4.816459 4.565223,4.072974 2.234754,1.547359 3.706089,1.167267 -0.7567035,2.898284 1.83487,1.704857 2.590022,2.350628 -1.090397,3.090865 1.197146,0.361258 -0.2277384,1.253678 -0.8345076,-1.315144 0.4918768,1.255948 6.489811,5.386298 3.76108,8.831136 0.5628608,1.599554 3.939019,4.645254 3.016591,0.2583809 3.667645,2.454869 4.135954,2.434332 2.557806,2.741901 6.429792,2.100864 5.00361,0.5250655 4.934331,2.305727 1.571148,0.9776422 2.706191,3.694445 0.2635268,6.895982 4.074567,1.320809 2.99084,3.2185 2.481091,3.184575 8.640772,4.988116 4.300847,3.280931 0.7993039,2.01031 -0.4005218,4.739858 5.57063,2.569333 1.461143,1.799024 -0.4018876,4.263217 1.142895,0.8645463 1.993686,1.925333 1.885439,5.526923 2.726026,0.7607902 2.024548,4.578523 -0.2362717,2.305534 2.44775,3.416505 -1.433119,7.401069 1.204758,2.859787 3.26884,2.380126 5.50826,6.093672 3.375502,1.932468 -0.5182578,1.589331 2.696388,5.517352 0.03596883,7.984185 1.577012,4.923732 -0.300325,1.799764 5.410051,1.436059 0.9258719,4.040306 1.024365,3.96208 4.506447,1.023064 0.5692818,5.502584 4.331832,5.844427 4.026133,4.321341 4.79769,3.089176 0.6888906,6.120309 0.3094134,1.891131 3.746095,3.042243 1.960645,6.297623 3.678906,1.383401 0.5290428,3.23477 4.131487,4.516458 0.8661606,0.4701298 2.212347,0.6322421 3.386031,4.054443 -1.128594,4.368398 5.043894,4.263827 4.376771,-0.0566841 2.323143,3.20863 1.450593,3.031044 1.238675,1.540699 2.138673,1.40023 2.65729,0.2604611 2.015205,4.922017 4.176413,3.778153 -1.459381,0.9401306 3.156855,1.673408 -0.8825687,2.951299 1.280171,5.369716 4.028924,2.534614 2.298081,0.9288485 1.848734,4.225942 2.2776,4.377651 4.861311,4.153302 5.703951,4.041658 4.412579,0.768353 2.579166,4.007379 6.268457,4.477573 1.959863,3.141884 2.691251,3.878846 2.937672,1.539486 3.925533,0.2166342 1.018973,0.6132527 0.9989628,3.769519 5.469889,3.370563 5.62076,-1.03494 4.782642,1.197127 4.41739,1.455632 3.504881,-1.226964 4.088781,3.577002 1.393065,3.039143 -0.7140501,4.358388 2.79356,4.162802 4.588079,0.1374639 2.751293,3.587746 3.160739,2.950481 1.256636,2.40097 2.347924,0.757388 2.15959,3.380974 4.686306,4.90308 2.708906,3.762664 -0.3772749,3.21818 8.573895,2.170144 4.098361,3.97331 2.935632,5.034207 4.560894,-0.06074787 2.187694,4.066855 1.179692,5.422861 0.6824075,4.570262 3.678058,1.445607 2.432889,3.464788 1.44362,4.767155 0.670721,4.326928 1.741511,1.090697 2.328269,5.676523 2.703399,4.39843 3.070135,-1.127911 0.1540155,1.558079 3.241582,-1.786402 0.8633636,-2.915364 5.070929,4.069442 0.3802699,4.792781 5.201298,0.9916698 2.317924,0.8490175 1.88249,4.456392 4.498492,2.27671 4.088552,-0.05358236 2.70047,0.8665846 4.263295,1.237916 -0.3372941,1.888282 2.115744,-0.0386811 5.933113,2.726321 1.702274,4.846232 0.1950422,4.297521 1.632104,5.272441 -0.7676521,0.1744265 6.01816,2.917453 3.360225,-0.07583278 2.343699,6.268999 1.972595,1.584675 4.3703,-1.897047 3.662873,0.5281332 2.804408,2.855709 0.8886671,4.055516 4.301304,5.119628 3.351866,4.018068 3.446807,2.157356 0.7783976,2.001171 3.224326,2.638143 1.619713,5.27906 -0.8264007,5.61938 7.417635,3.309151 4.176858,5.574264 2.294531,3.601602 3.107255,4.567368 2.048731,4.201265 4.078945,0.9243042 0.2839068,7.474833 5.041844,0.01494663 4.430326,-0.4060981 3.183535,6.040685 0.1395071,5.085969 3.467755,2.322947 0.9615329,0.4190573 7.095912,0.3049189 1.821073,3.462361 1.792443,2.924203 3.603482,3.532926 6.00925,7.777354 3.288692,2.622229 6.769724,3.836497 0.4817842,6.059998 4.958213,5.721521 0.7865254,4.935121 0.275849,3.241555 2.114153,4.263395 2.69333,1.075287 0.7834865,3.095839 0.8442308,6.435507 4.786192,3.047782 2.993755,7.679798 5.032947,4.43605 0.2996284,0.1128394 4.732566,4.725321 5.138102,2.769361 0.6702639,3.638535 4.80149,2.510744 2.99069,3.733426 2.94046,0.3206057 -0.31002,1.923519 2.0471,4.734629 -0.7442397,-0.8321187 0.2609128,1.279228 4.993603,-0.9198129 2.463261,0.9308461 1.303815,3.614003 3.281735,1.952622 6.111003,7.407875 0.7710038,3.842245 5.704827,3.429984 4.680409,3.227439 1.107975,-1.867197 1.329037,4.664998 3.814096,0.4638407 4.38718,5.313401 2.259796,3.586206 0.7150255,4.226777 3.665662,-0.3590908 -1.848531,-1.702376 0.8555445,3.886702 1.562574,1.861934 4.278592,0.2955887 1.631963,3.671652 1.005527,3.734451 4.575482,2.794771 4.518045,5.130977 7.14654,-3.235342 0.5864001,4.588675 4.648782,0.2884263 3.129058,1.635143 3.583834,2.15084 3.626554,5.490091 5.17177,-1.088101 5.067778,-0.3086464 5.500639,6.564636 3.385834,4.482741 8.07955,3.227107 4.180602,3.976904 -0.6254742,3.207783 2.354287,-0.7063711 5.294608,2.212645 4.472303,1.867881 4.303939,1.816244 -1.224746,0.5058521 3.686525,2.179393 4.749751,3.340705 4.274194,5.427405 2.469682,4.211634 0.6208181,3.198823 4.941247,2.241791 3.272235,2.358041 2.058199,3.980327 3.605226,1.5552 3.393911,4.346278 5.381735,1.164436 0.3562105,3.395437 4.278889,6.459836 5.227927,2.344472 1.249267,4.514748 0.927372,3.019655 1.370495,3.743352 3.725474,3.294252 1.198217,2.235897 1.823735,1.123533 1.125351,3.482865 2.369668,4.549319 6.091108,3.467384 4.404488,0.6603184 2.519297,5.964364 1.578723,2.814229 1.750807,2.475872 0.7538299,3.908619 1.509982,5.426803 6.105636,4.818311 1.788923,3.90683 1.521323,0.4105856 3.962742,3.331596 3.430614,3.656681 5.118799,0.4707713 2.962343,-0.04275205 3.22436,1.109566 4.939019,4.470917 4.563618,2.827276 1.965267,5.375925 5.050982,4.11568 2.331003,5.870373 -0.7074468,6.591574 1.051537,1.009653 1.51016,-1.025273 4.754994,6.088317 1.302794,2.358965 4.019484,-0.2029323 3.558576,3.950606 2.206867,2.647384 3.112098,6.862805 2.532695,5.348157 4.09395,7.871053 3.212535,4.67948 2.95181,2.713369 1.746188,0.2476774 4.718235,4.767014 1.423883,2.971261 1.143349,3.882447 1.238582,0.9936633 1.911473,4.987576 6.848536,-0.7271358 3.456009,4.971374 -1.720604,3.578182 3.712487,4.904512 3.306289,3.521962 0.2474182,0.04556406 3.173691,5.496773 1.440176,1.285074 2.524021,-0.3361792 2.584278,2.167427 4.889433,4.085087 2.95194,2.31857 3.136878,2.635767 5.666658,7.527876 2.003195,2.180862 5.437911,0.1558833 1.815598,0.8080531 5.013491,0.8304621 5.685037,6.351895 1.76011,-1.015488 4.088384,1.658556 0.02668997,4.292843 2.534164,8.605386 5.688903,1.644859 5.078571,1.917127 0.4924603,4.416962 4.642853,4.72012 6.645407,1.812679 4.96932,1.429842 2.20661,2.859795 3.276183,2.9829 4.021265,3.814785 5.28823,4.210698 4.412957,0.9652959 6.815313,2.918363 0.5787813,2.580721 6.841249,1.477816 1.858148,-1.020273 2.423447,-0.190559 4.157825,6.099308 2.887938,5.962212 4.279298,4.991501 3.962332,5.00821 3.188445,0.6035141 2.999374,2.370201 5.940667,3.950378 1.690178,2.883535 1.00913,2.804933 3.32095,4.46767 4.757154,3.422983 3.805166,2.326427 2.654701,3.588718 3.156547,2.340488 0.1447611,1.326578 2.066851,2.757263 -1.205339,5.723965 4.123776,3.21171 -1.533082,0.3430208 1.588808,2.167986 0.9713553,5.450095 0.5971215,3.356291 5.61626,4.726167 5.768304,-1.522111 5.180776,4.634899 0.5361464,5.475436 2.016602,1.741916 -0.1168322,3.10167 5.727365,4.434437 4.305806,0.5249911 3.670236,5.262749 6.23621,3.077954 7.165451,1.818621 3.137079,1.345214 4.612732,4.279379 -0.06565261,3.812632 3.964893,6.330296 1.815411,6.858881 4.86446,3.707646 1.222996,-0.913902 4.123034,2.439511 2.927798,0.1466609 0.6711693,1.429669 5.116112,2.949949 4.733944,4.087649 1.846722,1.756455 4.612956,2.32986 3.267851,2.762718 3.272619,1.357206 1.890259,5.997217 2.85792,4.193328 2.49862,4.955051 1.681416,1.776984 0.6709802,0.01194209 5.353706,4.295882 5.323723,4.880754 7.02349,0.9928783 3.119163,-0.6675491 2.481195,3.551807 4.042131,6.030883 3.547377,4.73595 2.684829,3.357635 2.36929,5.651202 4.665361,4.557393 0.710931,4.656763 7.352961,4.510661 2.328597,0.5228003 3.882621,0.5394759 4.181034,4.613547 4.370201,3.426377 2.460769,1.190238 4.077019,4.081256 2.233325,2.023762 2.241261,1.329019 5.60638,1.863204 5.405994,3.956307 7.480381,1.801512 3.960489,2.126523 6.187412,5.411918 4.365054,4.091856 4.795763,5.298699 0.7164292,7.346944 4.856175,3.644833 5.615993,1.71037 4.487228,2.391477 4.218249,0.3444228 2.706131,4.4412 -0.9494777,3.44187 1.752981,2.1724 5.931,2.42114 5.350606,6.23229 0.6671984,3.952539 1.854129,6.277997 3.607739,-2.057682 4.573639,4.275103 6.278116,3.98737 1.829366,4.120973 0.5241488,0.7851384 0.8354429,2.471821 -0.2110819,2.93859 3.0325,3.771293 1.743376,4.205594 1.765335,1.528817 5.476497,3.312218 0.2046483,5.581551 5.428966,4.24698 5.171615,4.517331 3.354353,6.609866 7.085994,1.524446 1.238301,6.567184 2.525706,4.80914 2.17153,1.288981 3.02594,1.372297 3.020868,4.230167 1.880522,-0.9630319 3.666595,2.511895 1.572084,2.336988 3.914911,5.096571 1.373798,-1.620585 3.391797,3.167997 4.122563,4.55136 4.433343,2.965629 1.546158,2.144391 2.906488,1.598276 -0.6510191,-0.35941 3.989051,4.429709 3.449256,0.5978873 2.442846,3.760225 3.458425,1.064743 2.668325,2.218803 6.214421,2.661247 3.158927,0.9209369 4.766255,2.75974 5.247863,2.595528 2.644599,6.017411 4.182663,2.652742 3.71038,3.136157 4.89446,2.554953 3.29382,2.014644 5.307682,2.855468 -0.7561128,1.658527 4.339619,0.2970884 5.141269,2.964652 1.568897,4.560799 -0.4099228,1.831856 0.5966954,0.9121155 3.969065,1.831187 -0.8420937,5.062288 2.879408,4.412179 1.829824,2.436673 4.689734,2.592584 6.883268,2.317533 0.718459,2.268949 2.939178,1.050316 6.091407,3.591361 3.236026,-2.37961 3.831696,2.81598 1.422132,4.376846 -0.2563497,1.547311 0.293488,-0.08841486 4.446322,-1.284927 4.04563,0.4829614 -0.9018047,4.044106 3.792543,1.059842 4.903995,1.212838 -0.3350819,2.962503 1.179909,3.622281 2.40002,3.29057 2.601259,2.699628 4.821161,0.2150478 0.5539176,2.409558 0.9222184,3.147798 5.997442,2.802317 5.381502,2.935445 3.930213,4.188499 5.634432,2.709754 4.69906,2.675097 3.815795,4.416767 -0.8491941,2.194191 5.117767,0.3013363 3.105366,1.892574 3.419187,-1.418377 3.483639,7.462593 4.011416,5.782772 3.774206,0.06571544 -0.8029341,3.448333 2.482928,4.747873 4.15257,2.819621 4.179285,4.054844 -0.6449184,7.134301 8.550677,1.252204 1.338898,-1.001139 3.786224,4.656613 2.814946,5.09963 2.990745,4.086228 6.648569,3.961687 -0.2530939,1.572471 1.986721,-0.2227375 2.700402,2.382314 3.449248,1.151915 2.974815,0.9350865 1.146112,6.916323 2.69051,3.624798 2.557525,5.116862 1.966812,1.948826 0.5494782,-0.3647943 6.144999,5.351019 5.67281,-0.2504728 0.2670134,2.470937 3.823425,0.9041296 3.650432,2.304636 1.510891,4.747823 3.862609,4.638864 0.7789394,4.762792 2.928278,2.616264 2.044943,3.857485 2.713587,2.860763 3.293266,1.744465 4.420187,4.000743 5.230063,3.755421 2.139199,5.273646 0.2758222,2.704561 2.331276,4.609452 4.913511,4.924528 3.780658,5.154798 1.592312,3.920605 -0.5288049,1.992903 5.106322,6.11562 3.492202,2.742136 7.00443,-0.571908 5.848064,3.514971 0.2455898,2.667909 5.748541,3.536761 2.982164,2.847557 3.939595,3.357931 5.353942,-1.116362 2.912402,1.674635 3.877114,2.564451 2.696323,5.110937 3.527775,1.414547 5.794428,3.002504 -2.281917,7.997116 0.8840021,2.503462 0.5506149,7.322685 4.134838,3.96714 6.308431,1.00861 1.065252,2.86415 1.641581,2.876711 4.145787,4.457658 5.98906,4.652239 1.15529,3.52342 2.997632,0.232892 3.963257,1.808517 6.343987,3.591472 4.9791,3.806763 4.127342,1.284705 3.677432,5.826165 3.557979,4.808358 1.202288,1.851513 1.918006,4.875882 2.26695,5.306993 2.20758,2.342447 3.925028,-2.839459 1.536318,7.280875 0.2659334,3.825358 3.892757,6.33798 -0.364004,1.031483 5.722867,6.396525 1.762634,3.42793 2.330384,5.723805 3.21516,5.679829 1.585421,2.911909 1.010283,3.404428 4.939538,2.241348 1.770975,2.697324 1.82018,4.54185 1.944881,0.3760622 1.812127,3.010745 0.1201756,2.423416 1.958401,6.66561 4.292653,0.2738888 4.145442,5.369385 4.310474,1.142742 3.496631,2.232783 2.553929,0.2381267 4.939651,2.515515 3.136671,3.618547 3.044712,3.031999 4.066456,1.020206 1.313687,4.332645 0.1598224,5.258512 3.144141,-0.1724636 2.122401,4.502533 3.23605,-1.099414 7.268832,0.1711485 4.906001,1.430449 2.632106,4.859726 7.547912,2.838397 6.074111,3.162034 3.132869,2.678007 2.318231,3.765559 3.127675,2.027602 2.552765,4.503308 1.070377,4.687259 -0.5783459,2.137245 2.903465,0.9844223 0.005399122,1.955672 4.720105,1.667351 0.066394,3.026758 5.642159,1.018662 1.675258,0.7178776 -0.3606971,3.892942 2.79544,4.478332 0.6495478,3.950908 3.836283,6.91926 7.777803,2.49352 2.501448,3.941616 3.67488,-0.3710862 4.551259,2.459729 4.171478,5.72101 3.759999,1.954137 5.078637,2.628847 2.526163,3.152843 7.425924,3.043872 4.295304,4.523206 4.57348,4.865761 6.931115,2.571006 2.112173,5.825297 2.669595,1.262116 3.832103,-0.2598033 2.859929,6.256983 2.608509,0.6020319 0.2542043,1.266211 0.5127536,3.694279 5.79456,0.677058 4.913993,0.3904405 4.908366,2.946746 5.436853,4.036909 1.629177,4.988706 1.814614,7.502649 2.852601,1.220853 4.109681,7.674072 3.514067,0.781989 4.786932,2.126594 2.813163,3.9459 7.102395,2.621924 1.856144,0.8809559 -0.1898028,6.172126 0.4942056,5.700979 1.736671,3.279148 2.007502,0.6283623 2.149446,3.880603 6.658692,5.576866 7.824088,2.600547 5.520794,6.896309 3.934708,6.378763 2.591374,5.00632 4.450671,2.809247 6.669687,4.355819 1.385072,1.219587 5.820821,2.067813 -0.5271661,1.033979 3.633207,4.057578 6.639548,4.399556 2.664319,6.140041 4.376453,2.7607 1.853301,2.949547 4.123123,-0.5829179 1.753337,4.619379 0.6722687,2.920369 2.393184,4.043759 2.281421,4.947591 3.903102,3.202297 4.672276,2.718245 9.656519,5.803167 4.050819,2.2124 3.704053,4.172678 1.096066,4.985482 1.542996,3.20803 1.705308,3.149626 5.947433,4.426989 3.301566,4.511191 1.512931,0.2677567 -0.8895026,4.576883 4.446097,3.570797 1.967082,0.8441653 2.799733,2.058413 4.925958,4.587231 3.919994,3.403182 2.596546,5.449778 6.313703,6.071158 5.51983,2.275664 1.770345,1.711321 2.21533,7.314706 2.114362,4.234439 5.643161,4.233799 2.579986,5.248501 2.16475,1.40876 -1.808263,0.4214472 2.751516,2.903735 0.3805226,2.950482 4.840608,5.336572 1.337481,3.671391 5.414703,4.498878 2.915796,2.298151 4.040715,6.017009 3.821027,6.682512 4.045197,4.674065 0.7384065,2.783142 3.402195,0.9708686 0.952396,1.458874 2.8185,3.008033 5.760651,2.223426 2.70873,3.700129 1.094581,3.112698 5.449944,4.623908 3.532288,2.374229 3.286275,4.429804 3.853261,5.242187 0.2305744,3.301917 5.300519,2.110823 4.451265,4.120095 2.7483,3.288638 4.968945,5.916156 3.758608,1.696999 -0.2441967,3.23727 3.169295,1.720889 1.28668,1.81811 3.882965,2.963413 3.897454,1.037708 -1.688676,4.904354 1.338523,-0.3218741 2.388049,2.781505 2.387766,2.086523 4.001359,4.099755 4.250323,4.598413 2.740501,3.800759 2.605035,-2.331618 4.823548,2.992509 3.809095,3.087953 2.438262,1.390376 2.440855,2.414421 1.757113,0.7747674 5.519122,5.408008 2.854093,3.079389 3.30351,2.711929 5.58098,0.4235717 2.097999,2.882969 2.330456,2.858785 -0.3259352,2.845836 5.140822,1.61622 1.905046,4.726872 -0.2395205,0.5518717 2.138203,3.482253 3.658196,-0.3277001 3.750495,0.7601528 3.134752,2.725561 2.993011,7.701614 4.782264,1.53828 4.08357,0.890713 3.059443,3.642075 3.879551,1.300593 3.609613,2.403077 3.043394,7.992386 1.854226,3.357746 -0.2249849,3.753455 -1.182296,7.299899 2.334843,4.05757 5.742054,-0.3804998 -0.6440106,0.621781 1.274091,3.371762 5.019222,-0.1842157 1.701678,3.276025 6.866057,3.67769 2.019163,-0.3199882 7.056566,4.63999 3.1997,0.3582237 4.027377,5.642825 -0.7889027,1.857779 4.320856,3.599619 0.8979328,3.002401 0.8831722,1.324385 1.374297,3.650971 1.26619,1.271719 4.706281,1.847344 4.380897,1.446401 1.711784,2.416358 5.833485,2.230658 0.8828804,7.417024 5.72991,4.364243 2.884132,1.023729 2.654786,1.709765 5.117465,8.974542 5.22897,1.577074 0.9858982,6.305904 6.526324,4.052128 2.682823,0.9276283 4.361322,-1.17577 0.4160032,5.433981 4.469605,2.134937 1.578365,1.442811 5.894626,2.458491 -0.1011422,0.7008776 3.713906,0.6261931 -1.757398,4.430529 4.963143,0.6473541 0.5220862,4.235078 1.392711,6.778099 2.443518,2.111694 3.041057,1.435192 1.94647,7.329327 0.6822867,0.9686712 2.689244,2.893368 5.460465,3.118828 3.744973,7.488367 4.674562,7.186359 2.013389,-1.115002 2.338891,3.234454 -0.6064749,0.8700986 3.724247,2.556114 4.842515,1.43127 1.644268,3.560024 6.134289,3.220982 3.396618,0.9865158 -3.268828,4.266456 0.1667076,2.583168 4.417114,6.971241 2.271887,4.517413 -1.303305,4.103565 2.733131,3.385639 2.349636,2.53385 3.906631,0.1222231 2.016804,0.2517014 2.952616,3.048302 3.013444,3.758045 5.203635,2.123866 2.181713,2.234616 4.450545,4.298695 4.783095,2.714508 6.056712,5.334164 4.760832,3.371103 0.9803199,6.470261 2.994648,1.004499 2.713867,0.07039422 3.053921,4.04969 5.603803,1.539321 7.492451,4.72143 0.2075454,5.34612 2.007481,1.273835 4.43827,1.274789 3.260111,-0.1782963 0.621178,5.615074 4.478524,3.27762 0.6038428,3.3091 2.487961,7.345815 4.106275,1.702953 3.759464,2.103165 3.177747,4.377169 1.213356,1.759471 0.7171123,6.310695 2.136984,1.262546 4.883942,1.243839 3.997342,2.526178 2.283462,5.161918 4.286281,1.81494 5.103157,7.482103 4.537607,0.6104205 5.863405,3.414258 1.326722,1.047191 1.791922,5.41621 3.548111,5.001266 3.800988,6.931894 4.218454,3.06863 1.748447,-0.464144 2.52405,1.736396 -2.629078,2.230391 5.07216,1.350149 2.912725,0.9954392 0.7317538,4.088866 1.128103,2.771151 2.476502,7.270209 2.374928,1.353536 3.333132,3.422383 2.673452,0.7581166 5.47742,4.701402 5.478909,5.315228 -0.3057207,2.556999 7.857136,3.508329 2.478362,2.217139 4.439351,0.5478861 -1.63849,2.704378 4.580511,5.717626 3.286827,2.417258 1.371465,-0.01462896 3.225934,6.41278 3.217909,5.450065 3.72976,3.071887 6.315303,0.9223013 1.693763,3.602588 0.4660302,0.7874141 1.832754,2.917441 4.58405,2.958304 1.667922,1.479813 0.8317278,1.628892 0.1404057,1.339691 -1.171471,2.371733 3.572407,0.7726019 4.8602,1.934574 3.720513,5.597004 1.549362,-3.130714 5.410901,2.283642 3.685454,-0.4400479 2.882815,3.395324 3.933393,5.480145 1.572022,0.4261835 2.644174,2.331708 0.9459463,1.152719 4.716583,2.393528 2.656208,5.775017 -0.1827945,3.671679 1.217609,1.540438 4.35679,1.106597 5.711091,0.6541995 2.131336,3.685974 5.199424,4.120324 4.431281,2.722221 1.597891,4.988634 4.251686,0.8815177 4.205375,1.141264 -0.01978113,4.05984 2.732831,4.245168 3.790564,2.669543 3.928238,3.275394 1.791049,-0.08851237 5.659977,3.605467 4.966892,1.81254 2.957714,4.043189 1.191867,2.553509 0.07385504,3.22133 7.514297,3.323765 2.773096,0.3074596 -0.3737072,4.243262 1.800938,3.911952 2.596023,0.9883395 6.882699,6.461714 -1.167499,3.538484 0.8429944,1.730916 1.889925,2.234391 -0.04495999,6.221519 2.140582,4.21959 0.9391774,1.154865 0.7977728,2.96013 -0.1867264,2.179561 3.33017,3.256612 2.439253,3.722298 3.414202,2.195661 2.250643,3.010192 4.390947,2.388624 7.643047,6.152908 3.859287,5.289175 1.324039,4.273367 2.99806,3.85924 3.245193,3.377206 6.577782,3.483714 4.95182,5.506654 5.812809,1.412942 4.543374,5.869232 3.948268,1.558201 3.298059,2.373554 0.9101584,5.056392 2.705509,1.69765 4.535249,4.79601 2.34401,1.709748 2.09059,3.736616 5.017872,-2.124388 2.784797,0.8866878 1.3603,1.016681 0.9551863,0.1749461 2.771884,4.06695 2.203761,2.932671 2.313629,0.892079 6.261493,4.235774 6.202061,2.543843 2.728222,6.066634 3.802256,2.30007 1.107687,6.102285 3.068251,3.991357 1.925381,3.669588 3.424694,5.319359 3.76677,5.177895 4.011458,0.4724293 2.938688,0.1931595 -2.044258,5.103762 3.664957,3.597222 1.585249,3.37218 -0.6115547,1.126779 3.396263,1.297611 2.795815,0.866799 -0.3729193,4.537277 1.864477,1.379984 3.562683,2.601107 5.885527,5.013469 3.331533,4.292613 3.675756,2.540657 -0.7957763,2.989773 4.445632,7.197276 5.963305,4.573445 5.120204,4.867898 2.171808,2.919607 5.382151,5.445019 4.716566,0.5817743 5.262415,2.74795 2.706813,4.968953 3.229471,1.677012 2.521412,5.056632 0.9971337,4.219366 3.210715,3.353445 4.446047,3.816302 2.23286,4.659012 5.501115,5.179862 3.349444,7.254505 3.710704,8.00326 2.505975,-1.164601 3.120959,4.970791 6.470429,6.793488 -0.2645143,5.259929 4.620232,1.280002 1.863748,4.050211 1.732318,6.815678 -0.8582365,0.9604234 0.6805902,-0.2454069 1.661296,3.668154 2.041894,0.4518666 -0.3707303,1.805498 2.638908,2.691882 4.617284,1.070618 5.160693,2.822645 2.74301,-0.8046831 0.9270548,4.975542 5.37477,5.733862 3.474691,4.971411 1.671507,3.584825 4.25761,3.598732 5.268227,3.283512 4.965034,0.2029066 3.544344,1.717675 2.117987,4.925818 3.07475,2.123529 3.366773,1.846982 5.192808,1.984329 2.588266,-1.636714 -0.4739583,3.864278 2.230721,4.232917 0.8497178,3.890647 1.26243,1.567279 1.572851,-1.616305 3.484186,3.42765 3.463256,2.857607 3.237843,2.059176 6.237165,2.667985 3.620652,7.558401 1.287792,3.742333 6.591704,2.135866 3.90669,-0.6980829 3.888561,4.862177 4.565158,1.22629 3.24114,2.966768 3.538129,1.55431 2.395235,2.003498 2.773201,4.075261 0.9210452,2.952322 3.947812,3.755925 -0.7326935,4.905138 3.286981,3.816826 3.382092,3.653319 5.160182,2.9871 4.72251,-2.710329 2.348068,-0.8085596 1.169448,0.1796159 1.088629,3.344862 4.489035,1.881846 2.9131,1.924492 3.605113,3.281964 2.065356,3.827049 3.867215,-0.8258596 1.161678,4.845199 5.154182,3.653015 5.570089,4.182781 2.57745,4.102666 2.355353,5.522967 3.601274,5.008461 2.384062,5.329965 2.262785,5.366303 3.208366,5.738702 6.866541,4.104436 4.200303,4.907611 3.889113,-0.3558523 2.19364,3.386675 1.162003,4.495965 1.629289,1.962354 2.24074,3.669717 2.164166,4.221222 3.066705,6.05516 1.102237,4.03422 6.108027,3.820216 1.837586,4.003803 1.782845,3.147293 3.778562,-0.3604948 3.468527,1.972478 2.156961,3.51899 1.74592,0.2861917 6.133043,1.103957 2.842198,2.858341 0.6320396,0.4802371 1.180204,1.835626 4.971589,2.332245 2.982212,1.722523 1.051567,-0.06493031 5.580082,5.565959 5.325958,4.015941 3.792506,5.058306 5.425547,3.400333 6.949673,3.667524 4.36284,3.682964 1.138083,1.232886 1.815014,6.280289 3.791928,0.4654503 -0.832573,1.11443 0.7406029,1.621953 4.465049,5.702668 3.721404,3.819984 0.809692,4.120301 5.795946,4.46195 3.540701,1.765487 1.63677,3.675216 4.80973,-1.024927 3.18324,2.769831 1.372225,1.628246 0.7598915,2.132666 1.73905,3.632832 5.039685,5.387316 0.7233315,5.935841 0.8446114,5.865848 4.518368,0.5059284 3.437805,2.396559 1.153352,0.4146576 3.316818,4.084598 2.274727,-0.09434437 5.114406,4.239876 5.711786,3.726274 3.464021,3.486464 -0.7083951,0.262945 2.4438,3.795874 3.014246,8.404002 4.207219,7.289913 2.02917,5.436689 5.121199,2.449861 4.901008,3.054064 2.865199,1.166166 4.065082,2.875522 -1.631633,3.203024 3.595552,3.736366 3.00954,3.169063 3.241316,1.780369 4.24518,1.482571 3.989608,2.047823 1.992644,4.60934 0.5235551,6.309862 3.622675,4.156976 5.379732,0.832738 -0.4893339,0.6833253 5.634205,2.104254 -0.01422059,2.678909 1.594435,5.451586 -0.09722726,3.382563 4.287022,1.492159 1.851688,0.1915446 4.446866,2.761246 3.038099,5.182015 1.758903,7.092113 4.88729,1.054894 2.619733,3.826979 2.265481,-0.4417235 4.056612,-0.08162285 3.116751,4.980683 2.557651,1.377502 4.877739,3.895677 0.7403765,2.891965 2.585181,4.761415 3.067276,6.01503 6.572796,3.402949 5.305405,1.894829 2.791763,-0.5025981 3.165659,4.606688 3.718825,4.076316 2.569858,3.163527 3.884315,5.198593 -0.8539523,3.41852 1.814802,3.031103 1.517968,1.839129 2.183623,4.660888 3.022326,1.43159 3.311987,3.41935 5.009828,4.546116 2.568095,1.031491 6.89416,4.120008 3.713919,3.349657 6.536031,3.932113 3.993257,1.954425 3.369532,4.108834 2.361499,-1.598461 8.834834,2.194502 5.972606,0.9343997 2.241603,3.128923 1.473807,5.778818 0.7790575,0.1509579 2.122663,2.556064 -0.1160915,0.6757278 2.128731,4.718542 5.737205,0.834273 3.030139,6.764823 3.840343,2.75579 2.518065,4.03402 0.432585,4.004171 1.316477,-0.6639099 2.387155,3.325281 1.170626,1.876685 4.964462,1.862111 -1.470119,2.505277 1.612214,3.29577 2.561314,5.172374 1.531219,2.905944 5.044354,6.373668 1.512781,5.027684 3.600463,1.487499 4.820469,-2.634165 5.042019,1.923283 4.654602,3.88105 2.591362,5.019399 3.392847,5.249498 4.630311,3.516771 0.06105538,1.11935 1.121358,0.2787099 2.225253,2.090476 4.177763,0.7827321 3.673661,5.869634 4.759478,0.5740348 3.652706,1.724176 2.625207,2.533545 3.144352,0.4714628 -0.2784629,-1.74206 4.409594,2.983449 5.202398,1.061761 3.330535,4.23848 2.781086,-1.374764 4.500327,2.61512 2.967099,4.519068 2.539518,3.109336 1.961103,2.32723 1.203215,2.712182 6.6769,6.423928 7.412602,4.366507 5.758729,0.01494001 2.435136,4.73088 2.983011,2.978098 6.405827,3.022972 -0.3055274,0.07876411 0.4747784,2.790278 2.019129,5.37634 0.963878,2.497483 4.262384,0.7614405 3.864708,7.122677 2.216217,-1.214639 0.8251614,1.752145 1.083532,-1.242983 0.793277,3.7456 2.616026,6.646159 3.456061,2.625464 0.5534731,4.289694 3.457651,5.682201 3.049256,4.96893 0.4873407,4.567471 0.1901154,3.395851 4.445592,2.558232 1.375879,4.563786 9.422054,4.490569 -0.3034564,0.7250957 -0.2273919,1.671433 2.955472,1.376122 2.065843,-1.374905 7.321758,4.936735 7.053252,-0.18959 4.3001,3.591135 5.840232,4.845643 0.2778648,3.128842 5.748902,4.772378 0.4451439,5.170698 4.681122,8.984405 6.701736,5.232167 4.728501,3.546187 3.505541,2.703847 2.917047,1.584486 1.689788,4.298931 2.44378,3.207824 6.520591,1.000242 3.678031,2.198119 1.728863,7.189106 1.649921,4.705208 7.815734,4.3465 2.991449,3.318193 3.879977,3.069853 3.816767,4.482321 2.775996,4.528528 7.713763,2.571154 7.309501,3.96467 3.986696,7.091701 5.758437,3.623206 4.353228,2.136317 2.087631,3.807793 4.108559,3.131116 1.191129,0.09608369 1.559867,1.920577 5.09302,4.612944 4.414336,3.528345 2.831632,0.8583103 5.543415,0.69717 7.808216,0.618591 5.239357,4.847918 -0.9645689,-0.3023107 3.068129,2.906247 6.500222,3.626753 2.888823,2.353177 0.2833091,3.055434 2.099694,1.850725 2.613773,4.492776 3.951871,3.108484 6.010874,1.423756 2.660595,3.76512 4.991945,3.958663 -3.025934,3.264976 1.669067,3.412652 5.046356,0.3206007 0.08052629,0.5422472 2.139489,4.714854 1.613897,5.066161 1.954282,3.164967 3.229661,3.335589 3.028303,0.9220711 4.076221,3.265142 3.145161,1.110426 2.785905,4.020724 2.069398,1.540335 1.999965,2.87711 6.087507,4.087316 -0.2599331,1.416533 -1.329862,7.170075 3.099253,6.138686 2.900146,1.737618 3.530213,2.669028 4.683544,5.201039 0.6451063,4.237366 5.391013,-0.6356356 4.680983,4.625467 3.127112,-0.3879166 3.416921,-0.7206499 6.473018,1.925109 4.61473,3.779131 3.713872,2.858864 6.796661,5.570331 4.723495,4.545401 2.526035,3.963736 3.59087,3.026824 0.3343919,1.528867 1.908725,5.685249 2.512473,-0.1335465 3.450156,6.306489 3.524634,3.212642 4.649592,4.790298 0.8382533,2.244286 1.061468,1.822749 4.952323,4.285971 2.059411,0.6849028 1.528868,1.84327 -1.371651,0.5003734 2.312946,5.906748 0.5241445,-0.6960222 4.115321,1.831308 -1.40499,2.19363 1.907439,2.641403 -0.3984617,2.017092 3.443223,0.5344207 1.762392,1.233608 3.029846,6.373972 2.762831,3.454919 4.016846,0.2096087 2.892549,2.274864 6.724483,-0.9429737 0.4313834,1.530537 -0.4938815,4.627492 3.622249,2.090332 2.531827,3.199659 3.812507,5.321205 0.5516726,6.211966 1.284451,-1.461969 3.407966,2.962267 2.052994,7.232135 4.921433,1.954945 3.032673,1.1844 -0.1126373,6.324624 2.735977,5.950839 2.009327,1.859227 2.774617,2.692681 4.600334,4.867184 0.6784916,2.177505 2.523788,3.36005 1.866388,6.144844 2.226648,1.248775 1.902089,5.909523 -1.212556,4.266031 5.246724,2.998123 2.055926,-0.1757527 4.198254,1.092028 0.3358519,2.645175 4.888469,2.175994 2.944401,4.396474 0.9588446,4.136103 3.601873,4.189304 2.439502,2.467836 3.494558,4.428189 -0.4942973,5.018699 2.595012,4.268628 2.272322,2.025964 3.583676,3.841148 1.264165,4.857873 4.667411,2.177073 5.030323,4.966387 0.3561949,1.812607 3.853536,-2.669267 4.188617,3.389679 3.94089,4.360361 1.844986,2.974115 6.509325,4.678293 2.538502,2.86757 4.297296,4.437415 2.692874,2.059786 1.296869,4.45823 0.9695892,1.93595 2.045056,4.946059 3.110103,4.157973 5.854048,3.473184 2.788053,1.170779 4.776121,2.377767 0.5437462,5.70638 1.640013,1.450356 -0.02362315,5.636075 5.482268,2.942461 4.002726,0.7581974 0.5922159,5.856831 3.030546,5.855729 2.831975,4.565786 2.743833,1.552066 2.784305,4.657076 3.878098,1.456821 2.003569,3.246015 6.09358,0.4043186 -0.7908998,1.026641 4.060871,-1.604389 4.566727,4.779811 2.748579,0.8592968 4.2227,2.411252 4.190563,4.262963 1.619467,1.429507 5.076634,-0.7950139 5.551058,0.9643512 2.201563,2.217049 2.824195,2.671151 4.885747,4.889496 2.167765,2.290963 4.330068,1.008729 4.539014,3.675109 1.172908,2.761278 1.775041,2.215707 4.115675,5.86989 2.862011,5.774246 2.896711,5.05225 4.573648,3.75738 3.690086,1.695289 4.043514,4.989475 -0.247159,1.170092 2.69443,0.8915362 2.805277,3.395046 4.172487,3.626485 1.867172,3.622718 3.507016,3.558097 2.890493,4.551321 0.06644637,0.4277055 4.014561,1.503267 3.619106,5.194041 2.36321,5.298661 8.473576,1.623181 3.15672,3.791079 5.799968,1.210848 1.503561,3.673669 3.470482,3.441683 2.503972,2.068675 2.62798,2.743422 3.641894,6.593427 0.9034404,0.01078875 3.791561,2.965316 0.08776926,-0.6625455 0.1444733,4.690898 6.231915,6.785694 3.352186,4.637241 -0.366242,0.9073829 3.099409,2.937943 3.488554,-0.6102302 2.312333,4.807485 4.30918,2.305964 0.7680905,1.628556 2.948761,0.7768817 1.856983,1.723145 4.369728,1.866022 1.272927,3.023045 4.271164,5.367657 6.989679,1.966721 3.198192,3.712624 1.21456,0.09920721 4.416137,3.587054 2.187436,6.759675 1.351569,5.26784 1.535262,4.785897 1.610594,5.139498 2.330941,5.652053 3.183321,1.366541 2.397482,3.188668 -1.171543,3.925654 4.647843,0.2286823 4.287167,4.593877 4.353741,2.640083 2.627244,4.722491 5.842913,2.042157 4.463367,3.318293 2.625381,2.339414 0.2999898,4.023581 5.26122,4.311876 0.6195298,2.07425 5.890576,5.419235 2.440281,3.629928 1.070895,6.224396 3.606468,7.620015 2.700208,2.450551 3.571272,3.672715 -0.2738638,2.978166 2.155927,3.27501 3.159498,4.05914 -0.6897687,0.8128572 1.375206,1.308672 3.983422,3.332657 4.006376,2.339603 6.393934,7.026477 -0.6304384,0.3475918 0.5321529,4.178643 1.723419,3.715913 0.0956658,4.027401 2.778139,6.755805 3.86771,2.440132 6.6607,1.057596 2.652017,3.59741 0.7119442,0.5877816 1.818548,3.815763 7.027583,5.192165 6.086111,4.17844 5.708862,3.33046 2.270236,4.391571 3.608827,0.5849649 0.6356907,1.843617 4.150683,4.842667 4.135926,4.867566 -0.5275099,5.65115 0.3429079,2.329132 3.822469,4.316142 3.856438,4.808708 0.7026812,2.306621 0.5340458,3.271667 3.118634,2.495856 1.060192,1.23221 1.226488,2.492308 4.392623,4.956027 2.475941,0.8917488 1.949607,-0.2519317 3.370441,4.41511 1.59153,0.2506295 2.163779,6.330387 1.89797,4.758651 0.8347933,5.208924 1.367756,2.640557 0.9182904,4.534346 0.5889863,2.417694 3.433692,2.510647 0.7516747,2.575434 5.094271,4.394038 -0.1969175,5.297066 5.598076,6.618053 0.2059666,1.331455 1.060458,-0.7444541 0.6965778,2.501211 5.189572,1.710995 3.714749,2.716335 1.491189,1.09202 3.136122,3.221024 2.232647,1.37072 4.172763,1.498154 2.411425,2.694697 1.409738,1.904797 2.441722,2.567479 -0.5955007,4.606553 3.736325,0.2093725 5.393614,1.347154 2.155364,4.58773 4.053877,3.300058 2.181928,2.40366 3.749232,4.943121 -0.8603718,1.603869 4.352033,3.160684 4.922647,-0.6717875 4.156392,4.744933 0.7189118,5.207003 2.525627,3.14253 2.85606,1.749823 2.540557,6.459924 5.832898,-0.01343581 2.041415,4.492383 3.429181,-1.483531 3.299658,2.147679 2.394757,4.238645 2.11672,4.626688 2.050825,0.2249969 -0.06461349,3.874921 -1.719482,0.6644566 -1.156783,2.362048 4.891483,1.984031 4.969464,4.242804 4.658106,2.796846 -0.7151961,5.51226 3.570238,4.542159 2.853029,3.859948 1.468415,1.806057 2.736851,2.339211 6.793183,1.4605 5.022215,-0.2931129 8.423325,3.773136 2.988553,3.530605 4.536208,2.287627 0.7310693,4.681089 4.273934,2.492572 4.680329,5.579065 4.169674,2.845641 4.09784,1.888554 2.900529,2.867872 0.2919537,3.933762 -2.86369,3.848265 1.261591,1.562165 4.061133,2.404271 -1.333301,0.7813925 1.869017,3.425663 -0.5885734,7.159021 5.052528,3.141629 3.378178,4.872817 4.959641,0.8332226 3.045786,5.659436 2.360547,3.733508 1.836005,5.328564 4.563269,1.065058 4.099947,3.663518 3.455484,3.666802 6.096681,4.430404 4.621478,3.390274 4.785681,4.028845 2.265448,1.865359 2.705502,3.929624 5.02473,2.94208 0.4107602,-0.3910353 5.77917,5.557158 4.096247,3.197403 4.204706,0.4854628 1.341844,1.414305 6.78453,4.027619 -0.3065476,1.118512 4.726916,5.577349 2.03641,1.076284 4.157843,3.486136 3.393555,5.385985 -0.399503,-0.5434796 3.269243,1.259209 -2.490977,1.342514 4.63771,0.571056 0.4715102,7.027128 3.774126,4.51251 -0.170628,1.120484 3.46953,2.101701 2.625023,1.664173 5.429782,-0.8949618 2.487097,5.818024 1.21243,5.392149 1.269923,1.782776 0.7878066,2.900132 2.596463,3.452505 -1.37131,1.940202 3.540472,2.175158 2.040327,0.04000641 2.807609,2.06848 0.4670383,2.719097 5.381771,2.144367 3.478936,1.737616 1.917729,4.638643 1.176648,1.776346 -0.6568973,-0.4389268 2.303147,7.509369 -0.7717972,2.220734 4.158314,2.905394 3.768574,2.433989 2.450351,8.854321 5.157666,0.6777073 -0.1353244,0.8582949 0.5170527,4.182715 4.399548,0.0437113 3.898337,1.835648 5.767968,4.132659 1.181067,2.452113 3.764711,6.028394 2.165863,2.164961 5.597212,5.999842 3.06186,-0.5748202 6.074187,3.401647 2.638187,4.46368 3.909522,2.254355 3.006487,4.670305 2.089931,1.856147 2.153473,3.627951 4.831432,3.031203 3.766814,2.23012 5.875993,1.328377 5.264489,5.599026 1.409362,3.867529 2.828033,3.251444 2.645489,1.981254 2.707109,3.447111 1.424841,3.218157 8.346069,1.702879 5.757902,2.200507 5.40704,2.720954 4.794493,2.943864 2.471124,5.096695 6.487458,3.63041 2.897143,2.066437 7.274693,7.610453 2.28035,3.921289 5.55296,5.685864 5.475485,3.735848 6.238756,0.2164181 1.175693,2.501749 0.5800296,3.142435 2.848729,4.526331 2.724195,6.160956 4.771735,2.424413 1.966056,3.385779 8.166651,4.902306 2.134045,2.882958 1.509857,3.529912 -0.1269027,2.06816 2.309949,3.555508 2.549924,3.893903 2.717362,3.190047 6.122298,2.74309 4.061532,1.809049 -1.843565,5.256933 3.587212,3.418784 1.26672,3.166815 2.624486,0.9685965 4.403554,0.3547802 0.8336319,3.324789 4.485753,2.103245 0.2395952,2.15587 0.1072647,3.015283 3.807106,1.934092 5.110167,3.204382 4.619316,0.9222749 3.526228,2.067904 1.909229,6.508999 2.267427,6.675666 1.453965,0.5014695 3.256489,3.970969 7.201501,2.997742 3.276391,4.182162 4.210834,1.803047 4.043498,-0.3541788 5.200022,1.553602 0.9110149,1.490171 2.342277,0.3941799 4.334845,3.65799 7.09036,-1.559608 4.549665,3.692146 4.356257,4.420363 2.432147,5.197881 1.500006,2.860734 5.627144,2.892241 3.208876,1.400776 0.8019371,5.39281 5.295273,5.087109 2.027151,0.9319111 3.545645,5.512558 3.169824,1.685389 0.9252567,4.028064 6.640977,1.474239 5.550332,0.2926649 3.065268,4.018233 2.948469,1.179673 4.205274,4.780811 2.114612,3.582459 0.5938715,1.372566 4.559256,3.342694 5.994592,3.42092 4.31619,-0.7361222 1.544159,1.339294 3.823557,3.570857 0.6424222,1.132767 4.025503,2.796734 2.971624,0.1741731 1.989266,4.006044 2.571554,3.656704 0.7909384,6.558908 2.667833,1.823904 5.708219,-0.1312353 1.547619,5.273147 7.77007,3.869518 0.4904994,2.439776 4.142543,4.312815 7.028186,1.698366 3.166931,6.260376 ================================================ FILE: 2020年/2020.10.27散点图系列二/scater_plot2.html ================================================ 散点图系列(2)

记得安装prettydoc包,html模板在该包渲染而成。


欢迎关注我的公众号点赞,在看,收藏~~~


1.前言

散点图(scatter graph、point graph、X-Y plot、scatter chart )是科研绘图中最常见的图表类型之一,通常用于显示和比较数值。散点图是使用一系列的散点在直角坐标系中展示变量的数值分布。在二维散点图中,可以通过观察两个变量的数据变化,发现两者的关系与相关性。

散点图可以提供三类关键信息:

(1)变量之间是否存在数量关联趋势;

(2)如果存在关联趋势,那么其是线性还是非线性的;

(3)观察是否有存在离群值,从而分析这些离群值对建模分析的影响。


本文可以看作是《R语言数据可视化之美》的学习笔记。该书第四章——数据关系型图表中展示的散点图系列包括以下四个方面:

  1. 趋势显示的二维散点图

  2. 分布显示的二维散点图

  3. 气泡图

  4. 三维散点图

本文主要对第二部分进行介绍,并加上小编自己的理解。下面几个部分也会在最近陆续推出,敬请关注。

3.单数据系列

3.1数据格式

这里我们使用正态分布随机产生250个数据(这个就是实际我们采集的一维数据)。step是指按照多少的区间进行划分类别。我们通过hist()将直方图内部数据进行存储(我也是第一次见这种操作,以后学起来)。输出hg.

其中breaks表示边界点,counts表示每个区间内的个数,density表示密度函数值。mids表示区间的中间点,并利用这些参数来构建后续绘图所需要的数据。通过循环语句,计算出x,y坐标数据。 完整代码如下:

3.3 Q-Q图的绘制

在R中可以使用CircStats包的pp.plot()函数绘制P-P图;ggplot2 包的geom_qq()函数和geom_qq_line()函数结合可以绘制Q-Q 图;另外,ggplot2包结合ggpubr包也可以绘制,当然改包还有其他好用的功能

下面对第三种方式进行实现: ggpubr包中的ggqqplot相应参数如下,包括了非常多的参数,前两个参数分别表示:数据,要绘制的变量。当然其他数据包括设置主题(ggtheme);添加qqline(add = c("qqline"))等。

ggqqplot(
  data,  x,  combine = FALSE,  merge = FALSE,  color = "black",  palette = NULL,  size = NULL,  shape = NULL,  add = c("qqline", "none"),  add.params = list(linetype = "solid"),  conf.int = TRUE,  conf.int.level = 0.95,
  title = NULL,  xlab = NULL,  ylab = NULL,  facet.by = NULL,  panel.labs = NULL,  short.panel.labs = TRUE,  ggtheme = theme_pubr(),  ...
)

为了更好解释这个函数,我们重新模拟一个数据集。

##   sex weight
## 1   F  53.79
## 2   F  55.28
## 3   F  56.08
## 4   F  52.65
# 基本的Q-Q图
ggqqplot(wdata, x = "weight")
# 按性别改变颜色和形状
ggqqplot(wdata, x = "weight",
   color = "sex",
  ggtheme = ggplot2::theme_grey())#更改主题(灰色)当然可以用其他主题

3.4 带透明度设置的散点图

  • 数据设定

这个数据是张杰老师书中的数据,是经过一定处理得到的,结果图可以看下面。

##         x       y
## 1 -0.6035 -0.4126
## 2  0.1387  0.1736
## 3  0.5422 -0.4600
## 4 -1.1728 -0.1437
## 5  0.2146 -0.2756
## 6  0.2530  0.4243

我们利用ggplot()简单绘制二维数据的散点图,之后在对该数据进行聚类。

================================================ FILE: 2020年/2020.10.27散点图系列二/scater_plot2.rmd ================================================ --- title: "散点图系列(2)" author: - 庄亮亮 date: "2020/10/27" output: prettydoc::html_pretty: theme: cayman highlight: github --- 记得安装prettydoc包,html模板在该包渲染而成。 ![](https://mmbiz.qpic.cn/mmbiz_jpg/MIcgkkEyTHgfkvXafZE9scXp4icvdcNFyic0z7THajQBAyLNRiau3CKnZ3L9Y9K2YXObhaiblBm0Jbnicaq9lW3pz4g/640?wx_fmt=jpeg) 欢迎**关注**我的**公众号**,**点赞,在看,收藏\~\~\~** --------- ## 1.前言 **散点图**(scatter graph、point graph、X-Y plot、scatter chart )是科研绘图中最常见的图表类型之一,通常用于显示和比较数值。散点图是使用一系列的散点在直角坐标系中展示变量的数值分布。在二维散点图中,可以通过观察两个变量的数据变化,发现两者的关系与相关性。 散点图可以提供三类关键信息: (1)变量之间是否存在数量关联趋势; (2)如果存在关联趋势,那么其是线性还是非线性的; (3)观察是否有存在离群值,从而分析这些离群值对建模分析的影响。 ----- 本文可以看作是[《R语言数据可视化之美》](https://github.com/EasyChart/Beautiful-Visualization-with-R "《R语言数据可视化之美》")的学习笔记。该书第四章——**数据关系型图表**中展示的散点图系列包括以下四个方面: 1. [趋势显示的二维散点图](https://mp.weixin.qq.com/s?__biz=MzI1NjUwMjQxMQ==&mid=2247485142&idx=1&sn=564bffc9e7765ebae9b9b81a17a188d9&chksm=ea24f932dd5370241a05c75975ff24a34423a8f182bf6c716c8c9ed981788d0492dcb268248a&token=1544929502&lang=zh_CN#rd) 2. 分布显示的二维散点图 3. 气泡图 4. 三维散点图 本文主要对**第二部分**进行介绍,并加上小编自己的理解。下面几个部分也会在最近陆续推出,敬请关注。 ## 3.单数据系列 ### 3.1数据格式 这里我们使用正态分布随机产生250个数据(这个就是实际我们采集的一维数据)。`step`是指按照多少的区间进行划分类别。我们通过`hist()`将直方图内部数据进行存储(我也是第一次见这种操作,以后学起来)。输出`hg`. 其中breaks表示边界点,counts表示每个区间内的个数,density表示密度函数值。mids表示区间的中间点,并利用这些参数来构建后续绘图所需要的数据。通过循环语句,计算出x,y坐标数据。 完整代码如下: ```{r message=FALSE, warning=FALSE} #加载包 library(ggplot2) library(RColorBrewer) #颜色 library(scales) x <- rnorm(250 , mean=10 , sd=1) step<-0.2 breaks<- seq(min(x)-step,max(x)+step,step) hg <- hist(x, breaks = breaks , plot = FALSE)#使用直方图数据,但不绘图 bins <- length(hg$counts) # bin类别数 yvals <- numeric(0) xvals <- numeric(0) for(i in 1:bins) { yvals <- c(yvals, hg$counts[i]:0) xvals <- c(xvals, rep(hg$mids[i], hg$counts[i]+1)) } dat <- data.frame(xvals, yvals) # 变成dataframe格式 dat <- dat[yvals > 0, ] # 去除小于0的数 colormap <- colorRampPalette(rev(brewer.pal(11,'Spectral')))(32) #颜色选择 ``` ### 3.2原始数据绘制 接下来我们使用该数据(单数据)进行绘制: - **柱状图(正态分布)** ```{r message=FALSE, warning=FALSE} ggplot(dat, aes(x=xvals,y=yvals,fill=yvals))+ geom_tile(colour="black")+ scale_fill_gradientn(colours=colormap)+ ylim (0, max(yvals)*1.3)+ theme( text=element_text(size=15,color="black"), plot.title=element_text(size=15,family="myfont", face="bold.italic",hjust=.5,color="black"), legend.background = element_blank(), legend.position=c(0.9,0.75) ) ``` `geom_tile(colour="black")`改为`geom_point(colour="black",shape=21,size=4)`会得到以下图片 ```{r message=FALSE, warning=FALSE} ggplot(dat, aes(x=xvals,y=yvals,fill=yvals))+ geom_point(colour="black",shape=21,size=4)+ scale_fill_gradientn(colours=colormap)+ ylim (0, max(yvals)*1.3)+ theme( text=element_text(size=15,color="black"), plot.title=element_text(size=15,family="myfont",face="bold.italic",hjust=.5,color="black"), legend.background = element_blank(), legend.position=c(0.9,0.75) ) ``` ### 3.3 Q-Q图的绘制 在R中可以使用`CircStats`包的`pp.plot()`函数绘制P-P图;`ggplot2` 包的`geom_qq()`函数和`geom_qq_line()`函数结合可以绘制Q-Q 图;另外,`ggplot2`包结合`ggpubr`包也可以绘制,[当然改包还有其他好用的功能](https://rpkgs.datanovia.com/ggpubr/index.html "ggpubr简介")。 下面对第三种方式进行实现: `ggpubr`包中的`ggqqplot`相应参数如下,包括了非常多的参数,前两个参数分别表示:数据,要绘制的变量。当然其他数据包括设置主题(`ggtheme`);添加qqline(`add = c("qqline"))`等。 ``` ggqqplot( data, x, combine = FALSE, merge = FALSE, color = "black", palette = NULL, size = NULL, shape = NULL, add = c("qqline", "none"), add.params = list(linetype = "solid"), conf.int = TRUE, conf.int.level = 0.95, title = NULL, xlab = NULL, ylab = NULL, facet.by = NULL, panel.labs = NULL, short.panel.labs = TRUE, ggtheme = theme_pubr(), ... ) ``` 为了更好解释这个函数,我们重新模拟一个数据集。 ```{r message=FALSE, warning=FALSE} library(ggpubr) # 创建一个数据集 set.seed(1234) wdata = data.frame( sex = factor(rep(c("F", "M"), each=200)), weight = c(rnorm(200, 55), rnorm(200, 58))) head(wdata, 4) ``` ``` # 基本的Q-Q图 ggqqplot(wdata, x = "weight") ``` ``` # 按性别改变颜色和形状 ggqqplot(wdata, x = "weight", color = "sex", ggtheme = ggplot2::theme_grey())#更改主题(灰色)当然可以用其他主题 ``` ### 3.4 带透明度设置的散点图 - 数据设定 这个数据是张杰老师书中的数据,是经过一定处理得到的,结果图可以看下面。 ```{r message=FALSE, warning=FALSE} library(ggplot2) library(RColorBrewer) mydata<-read.csv("HighDensity_Scatter_Data.csv",stringsAsFactors=FALSE) head(mydata) ``` 我们利用`ggplot()`简单绘制二维数据的散点图,之后在对该数据进行聚类。 ```{r message=FALSE, warning=FALSE} ggplot(data = mydata, aes(x,y)) + geom_point( colour="black",alpha=0.1)+ labs(x = "Axis X",y="Axis Y")+ theme( text=element_text(size=15,color="black"), plot.title=element_text(size=15,family="myfont",face="bold.italic",hjust=.5,color="black"), legend.position="none" ) ``` ### 3.5 kmeans聚类的散点图 对上面数据进行kmeans聚类,这里使用base中的 `kmeans()`进行分类(两类),然后将分类情况(`cluster`)进行存储,并转化成因子类型。绘图时,cluster来设置颜色,这样就可以很明显看出分类结果。 ```{r message=FALSE, warning=FALSE} kmeansResult<- kmeans(mydata, 2, nstart = 20) mydata$cluster <- as.factor(kmeansResult$cluster) ggplot(data = mydata, aes(x,y,color=cluster)) + geom_point( alpha=0.2)+ scale_color_manual(values=c("#00AFBB", "#FC4E07"))+ labs(x = "Axis X",y="Axis Y")+ theme( text=element_text(size=15,color="black"), plot.title=element_text(size=15,family="myfont",face="bold.italic",color="black"), legend.background=element_blank(), legend.position=c(0.85,0.15) ) ``` ### 3.6 带椭圆标定的聚类散点图 有时候我们想突出聚类结果会在结果上画上椭圆,那么可以使用`stat_ellipse()`。 ```{r message=FALSE, warning=FALSE} ggplot(data = mydata, aes(x,y,color=cluster)) + geom_point (alpha=0.2)+ # 绘制透明度为0.2 的散点图 stat_ellipse(aes(x=x,y=y,fill= cluster), geom="polygon", level=0.95, alpha=0.2)+#绘制椭圆标定不同类别 scale_color_manual(values=c("#00AFBB","#FC4E07"))+#使用不同颜色标定不同数据类别 scale_fill_manual(values=c("#00AFBB","#FC4E07"))+#使用不同颜色标定不同椭类别 labs(x = "Axis X",y="Axis Y")+ theme( text=element_text(size=15,color="black"), plot.title=element_text(size=15,family="myfont",face="bold.italic",color="black"), legend.background=element_blank(), legend.position=c(0.85,0.15) ) ``` ## 3.7 多数据系列 多数据系列,其实在聚类散点图就已经涉及到。这里对较少数据进行绘制,这样看起来结果更加美观。 ```{r message=FALSE, warning=FALSE} mydata<-mydata[round(runif(300,0,10000)),] kmeansResult<- kmeans(mydata, 2, nstart = 20) mydata$cluster <- as.factor(kmeansResult$cluster) ggplot(data = mydata, aes(x,y,fill=cluster,shape=cluster)) + geom_point(size=4,colour="black",alpha=0.7)+ scale_shape_manual(values=c(21,23))+ scale_fill_manual(values=c("#00AFBB", "#FC4E07"))+ labs(x = "Axis X",y="Axis Y")+ scale_y_continuous(limits = c(-5, 10))+ scale_x_continuous(limits = c(-5, 10))+ theme( text=element_text(size=15,color="black"), plot.title=element_text(size=15,family="myfont",face="bold.italic",color="black"), legend.background=element_blank(), legend.position=c(0.85,0.15) ) ``` ================================================ FILE: 2020年/2020.10.30ggpubr/ggpubr.rmd ================================================ --- title: "ggpubr" author: "庄闪闪" date: "2020/10/1" documentclass: ctexart always_allow_html: true output: rticles::ctex: fig_caption: yes number_sections: yes toc: yes classoption: "hyperref," --- ```{r setup, include=FALSE} knitr::opts_chunk$set(echo = TRUE,warning = F, message= F) ``` # 简介 Hadley Wickham撰写的[ggplot2](https://ggplot2.tidyverse.org/)是出色且灵活的软件包,可用于R中的优雅数据可视化。但是,默认生成的绘图需要先进行一些格式化,然后才能发送它们进行发布。此外,要自定义ggplot,语法是不透明的,这对没有高级R编程技能的研究人员增加了难度。 “ ggpubr”软件包提供了一些易于使用的功能,用于创建和自定义基于“ ggplot2”的可发布出版物的图表。 该文章来自[ggpubr: Publication Ready Plots](http://www.sthda.com/english/articles/24-ggpubr-publication-ready-plots/) # 安装 - 从CRAN安装如下: ```{r} #install.packages("ggpubr") ``` - 从GitHub安装最新版本,如下所示: ```{r} #安装 #if(!require(devtools))install.packages("devtools") # devtools :: install_github("kassambara / ggpubr") ``` # 分布 ```{r message=FALSE, warning=FALSE} library(ggpubr) #> Loading required package: ggplot2 #> Loading required package: magrittr # Create some data format # ::::::::::::::::::::::::::::::::::::::::::::::::::: set.seed(1234) wdata = data.frame( sex = factor(rep(c("F", "M"), each=200)), weight = c(rnorm(200, 55), rnorm(200, 58))) head(wdata, 4) #> sex weight #> 1 F 53.79293 #> 2 F 55.27743 #> 3 F 56.08444 #> 4 F 52.65430 # Density plot with mean lines and marginal rug # ::::::::::::::::::::::::::::::::::::::::::::::::::: # Change outline and fill colors by groups ("sex") # Use custom palette ggdensity(wdata, x = "weight", add = "mean", rug = TRUE, color = "sex", fill = "sex", palette = c("#00AFBB", "#E7B800")) ``` ```{r message=FALSE, warning=FALSE} # Histogram plot with mean lines and marginal rug # ::::::::::::::::::::::::::::::::::::::::::::::::::: # Change outline and fill colors by groups ("sex") # Use custom color palette gghistogram(wdata, x = "weight", add = "mean", rug = TRUE, color = "sex", fill = "sex", palette = c("#00AFBB", "#E7B800")) ``` # 箱型图 ```{r fig.align='center', fig.pos='h', message=FALSE, out.width='100%'} # Load data data("ToothGrowth") df <- ToothGrowth head(df, 4) #> len supp dose #> 1 4.2 VC 0.5 #> 2 11.5 VC 0.5 #> 3 7.3 VC 0.5 #> 4 5.8 VC 0.5 # Box plots with jittered points # ::::::::::::::::::::::::::::::::::::::::::::::::::: # Change outline colors by groups: dose # Use custom color palette # Add jitter points and change the shape by groups p <- ggboxplot(df, x = "dose", y = "len", color = "dose", palette =c("#00AFBB", "#E7B800", "#FC4E07"), add = "jitter", shape = "dose") p ``` ```{r message=FALSE, warning=FALSE} # Add p-values comparing groups # Specify the comparisons you want my_comparisons <- list( c("0.5", "1"), c("1", "2"), c("0.5", "2") ) p + stat_compare_means(comparisons = my_comparisons)+ # Add pairwise comparisons p-value stat_compare_means(label.y = 50) # Add global p-value ``` # 小提琴图 ```{r message=FALSE, warning=FALSE} # Violin plots with box plots inside # ::::::::::::::::::::::::::::::::::::::::::::::::::: # Change fill color by groups: dose # add boxplot with white fill color ggviolin(df, x = "dose", y = "len", fill = "dose", palette = c("#00AFBB", "#E7B800", "#FC4E07"), add = "boxplot", add.params = list(fill = "white"))+ stat_compare_means(comparisons = my_comparisons, label = "p.signif")+ # Add significance levels stat_compare_means(label.y = 50) # Add global the p-value ``` # 条形图 ## 数据集 ```{r message=FALSE, warning=FALSE} # Load data data("mtcars") dfm <- mtcars # Convert the cyl variable to a factor dfm$cyl <- as.factor(dfm$cyl) # Add the name colums dfm$name <- rownames(dfm) # Inspect the data head(dfm[, c("name", "wt", "mpg", "cyl")]) #> name wt mpg cyl #> Mazda RX4 Mazda RX4 2.620 21.0 6 #> Mazda RX4 Wag Mazda RX4 Wag 2.875 21.0 6 #> Datsun 710 Datsun 710 2.320 22.8 4 #> Hornet 4 Drive Hornet 4 Drive 3.215 21.4 6 #> Hornet Sportabout Hornet Sportabout 3.440 18.7 8 #> Valiant Valiant 3.460 18.1 6 ``` 通过分组变量“cyl”改变填充颜色。排序将全局执行,而不是按组执行。 ## 有序的条形图 ```{r message=FALSE, warning=FALSE} ggbarplot(dfm, x = "name", y = "mpg", fill = "cyl", # change fill color by cyl color = "white", # Set bar border colors to white palette = "jco", # jco journal color palett. see ?ggpar sort.val = "desc", # Sort the value in dscending order sort.by.groups = FALSE, # Don't sort inside each group x.text.angle = 90 # Rotate vertically x axis texts ) ``` Sort bars inside each group. Use the argument sort.by.groups = TRUE. ```{r message=FALSE, warning=FALSE} ggbarplot(dfm, x = "name", y = "mpg", fill = "cyl", # change fill color by cyl color = "white", # Set bar border colors to white palette = "jco", # jco journal color palett. see ?ggpar sort.val = "asc", # Sort the value in dscending order sort.by.groups = TRUE, # Sort inside each group x.text.angle = 90 # Rotate vertically x axis texts ) ``` # Deviation graphs The deviation graph shows the deviation of quantitatives values to a reference value. In the R code below, we’ll plot the mpg z-score from the mtcars dataset. Calculate the z-score of the mpg data: ```{r message=FALSE, warning=FALSE} # Calculate the z-score of the mpg data dfm$mpg_z <- (dfm$mpg -mean(dfm$mpg))/sd(dfm$mpg) dfm$mpg_grp <- factor(ifelse(dfm$mpg_z < 0, "low", "high"), levels = c("low", "high")) # Inspect the data head(dfm[, c("name", "wt", "mpg", "mpg_z", "mpg_grp", "cyl")]) #> name wt mpg mpg_z mpg_grp cyl #> Mazda RX4 Mazda RX4 2.620 21.0 0.1508848 high 6 #> Mazda RX4 Wag Mazda RX4 Wag 2.875 21.0 0.1508848 high 6 #> Datsun 710 Datsun 710 2.320 22.8 0.4495434 high 4 #> Hornet 4 Drive Hornet 4 Drive 3.215 21.4 0.2172534 high 6 #> Hornet Sportabout Hornet Sportabout 3.440 18.7 -0.2307345 low 8 #> Valiant Valiant 3.460 18.1 -0.3302874 low 6 ``` 创建一个有序的barplot,根据mpg级别着色: ```{r message=FALSE, warning=FALSE} ggbarplot(dfm, x = "name", y = "mpg_z", fill = "mpg_grp", # change fill color by mpg_level color = "white", # Set bar border colors to white palette = "jco", # jco journal color palett. see ?ggpar sort.val = "asc", # Sort the value in ascending order sort.by.groups = FALSE, # Don't sort inside each group x.text.angle = 90, # Rotate vertically x axis texts ylab = "MPG z-score", xlab = FALSE, legend.title = "MPG Group" ) ``` Rotate the plot: use rotate = TRUE and sort.val = “desc” ```{r message=FALSE, warning=FALSE} ggbarplot(dfm, x = "name", y = "mpg_z", fill = "mpg_grp", # change fill color by mpg_level color = "white", # Set bar border colors to white palette = "jco", # jco journal color palett. see ?ggpar sort.val = "desc", # Sort the value in descending order sort.by.groups = FALSE, # Don't sort inside each group x.text.angle = 90, # Rotate vertically x axis texts ylab = "MPG z-score", legend.title = "MPG Group", rotate = TRUE, ggtheme = theme_minimal() ) ``` # Dot charts ## Lollipop chart Lollipop chart is an alternative to bar plots, when you have a large set of values to visualize. Lollipop chart colored by the grouping variable “cyl”: ```{r message=FALSE, warning=FALSE} ggdotchart(dfm, x = "name", y = "mpg", color = "cyl", # Color by groups palette = c("#00AFBB", "#E7B800", "#FC4E07"), # Custom color palette sorting = "ascending", # Sort value in descending order add = "segments", # Add segments from y = 0 to dots ggtheme = theme_pubr() # ggplot2 theme ) ``` - Sort in decending order. sorting = “descending”. - Rotate the plot vertically, using rotate = TRUE. - Sort the mpg value inside each group by using group = “cyl”. - Set dot.size to 6. - Add mpg values as label. label = “mpg” or label = round(dfm$mpg). ```{r fig.height=8, fig.width=6, message=FALSE, warning=FALSE} ggdotchart(dfm, x = "name", y = "mpg", color = "cyl", # Color by groups palette = c("#00AFBB", "#E7B800", "#FC4E07"), # Custom color palette sorting = "descending", # Sort value in descending order add = "segments", # Add segments from y = 0 to dots rotate = TRUE, # Rotate vertically group = "cyl", # Order by groups dot.size = 6, # Large dot size label = round(dfm$mpg), # Add mpg values as dot labels font.label = list(color = "white", size = 9, vjust = 0.5), # Adjust label parameters ggtheme = theme_pubr() # ggplot2 theme ) ``` Deviation graph: - Use y = “mpg_z” - Change segment color and size: add.params = list(color = “lightgray”, size = 2) ```{r fig.align='center', fig.height=6, fig.pos='h', fig.width=8, message=FALSE, warning=FALSE, out.width='100%'} ggdotchart(dfm, x = "name", y = "mpg_z", color = "cyl", # Color by groups palette = c("#00AFBB", "#E7B800", "#FC4E07"), # Custom color palette sorting = "descending", # Sort value in descending order add = "segments", # Add segments from y = 0 to dots add.params = list(color = "lightgray", size = 2), # Change segment color and size group = "cyl", # Order by groups dot.size = 6, # Large dot size label = round(dfm$mpg_z,1), # Add mpg values as dot labels font.label = list(color = "white", size = 9, vjust = 0.5), # Adjust label parameters ggtheme = theme_pubr() # ggplot2 theme )+ geom_hline(yintercept = 0, linetype = 2, color = "lightgray") ``` # Cleveland’s dot plot Color y text by groups. Use y.text.col = TRUE. ```{r fig.align='center', fig.height=8, fig.pos='h', fig.width=6, message=FALSE, warning=FALSE, fig_height=8, out.width='80%'} ggdotchart(dfm, x = "name", y = "mpg", color = "cyl", # Color by groups palette = c("#00AFBB", "#E7B800", "#FC4E07"), # Custom color palette sorting = "descending", # Sort value in descending order rotate = TRUE, # Rotate vertically dot.size = 2, # Large dot size y.text.col = TRUE, # Color y text by groups ggtheme = theme_pubr() # ggplot2 theme )+ theme_cleveland() # Add dashed grids ``` ================================================ FILE: 2020年/2020.11.05气泡图/1.txt ================================================ ================================================ FILE: 2020年/2020.11.05气泡图/Bubble_plot.html ================================================ 气泡图

气泡图

气泡图是一种多变量图表,是散点图的变体,也可以认为是 散点图和百分比区域图的组合。气泡图最基本的用法是使用三个值来确定每个数据序列,和散点图一样。气泡图通过气泡的位置及面积大小,可分析数据之间的相关性。

本文可以看作是《R语言数据可视化之美》的学习笔记。前两部分可见(跳转):

该书对气泡图的绘制并不是非常详细,小编将内容进行了大量拓展。下面的例子将一步步带你完成气泡图的绘制。本文内容丰富,希望大家都能学到自己想要的内容。

本文框架

数据介绍

数据集来源gapminder包中,包含了1704行和6个变量。其中6个变量含义分别为:

  • country 国家142个水平

  • continent 大陆5个水平

  • year 1952年-2007年(间隔为5年)

  • lifeExp 出生预期寿命,以年计数

  • pop 人口数

  • gdpPercap 人均国内生产总值(扣除通货膨胀因素后的美元)

由于数据过多,我们感兴趣的是年份为2007年的数据,所以使用dplyr包进行数据处理,具体数据处理案例可见我写的另一篇推送:[R数据科学]tidyverse数据清洗案例详解。数据缩略版如下:

手把手绘制

geom_point()函数构建

气泡图是添加了第三维度的散点图:附加数值变量的值通过点的大小表示。(来源:data-to-viz)。 使用ggplot2,可以通过geom_point()函数构建气泡图。aes()设定至少三个变量:x、y和size。其实就是散点图绘制的升级版吧,aes()中多了一个参数。

上图展示了世界各国的预期寿命(y)与人均国内生产总值(x)之间的关系。每个国家的人口用圆的大小表示。但是这个图不是非常美观,而且圆的大小并不是很直观,大家都差不多大。接下来对圆的大小进行设定。

scale_size()控制圆的大小

scale_size()允许使用range参数设置最小和最大的圆的大小,用name改变图例名称(scale_size(range = c(0.1, 24), name="Population (M)"))。

  • 图中可以看到,有些圆圈重叠了。k可将点的透明度进行调整(geom_point(alpha=0.5)

  • 为了避免在图表顶部出现大的圆圈,可以将数据集进行排序(arrange(desc(pop))),代码如下。

现在图可读性有所提高,但如果数据集中还有一个变量想加入图中该怎么办呢?

添加第四个维度:颜色

这里可以用每个国家的洲来控制圆圈的颜色(aes(x=gdpPercap, y=lifeExp, size=pop, color=continent)):

该图基本可以满足我们日常生活的气泡图的可视化了。相信大家通过前面的详细的介绍,应该可以自行绘制,只要换个数据,懂得各个代码的含义即可。后面是图表美化的过程,参考thr R Graph Gallery: Bubble plot with ggplot2

美化气泡图

拓展知识

其他扩展可自行学(小编做推送的时候已经学过啦,但是篇幅有限,就没继续整理下去了)

  • GOplot包提供了直接做气泡图的方法,函数是:GOBubble。

R语言数可视化书内代码

##                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
## Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
## Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1
================================================ FILE: 2020年/2020.11.05气泡图/Bubble_plot.rmd ================================================ --- title: "气泡图" author: - 庄亮亮 date: "2020/11/10" output: prettydoc::html_pretty: theme: cayman highlight: github --- # 气泡图 气泡图是一种多变量图表,是散点图的变体,也可以认为是 [散点图和百分比区域图的组合](R语言数据可视化之美 )。气泡图最基本的用法是使用三个值来确定每个数据序列,和散点图一样。气泡图通过气泡的位置及面积大小,可分析数据之间的相关性。 本文可以看作是《R语言数据可视化之美》的学习笔记。前两部分可见(跳转): - [趋势显示的二维散点图](https://mp.weixin.qq.com/s?__biz=MzI1NjUwMjQxMQ==&mid=2247485142&idx=1&sn=564bffc9e7765ebae9b9b81a17a188d9&chksm=ea24f932dd5370241a05c75975ff24a34423a8f182bf6c716c8c9ed981788d0492dcb268248a&token=1544929502&lang=zh_CN&scene=21#wechat_redirect) - [分布显示的二维散点图](https://mp.weixin.qq.com/s?__biz=MzI1NjUwMjQxMQ==&mid=2247485276&idx=1&sn=f98a2aede13555fa1c372f08c3cdec44&chksm=ea24f8b8dd5371ae9e13f3df41ff73e070775eb1ab871370783bb3f396a0a9c29d42c6a89210&token=682523778&lang=zh_CN#rd) 该书对气泡图的绘制并不是非常详细,小编将内容进行了大量拓展。下面的例子将一步步带你完成气泡图的绘制。本文内容丰富,希望大家都能学到自己想要的内容。 ## 本文框架 ![](https://imgkr2.cn-bj.ufileos.com/b4382ada-392f-4868-be6b-53e619921374.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=qppb6xaOmm72QdYDTIA9aO34REA%253D&Expires=1605239247) ## 数据介绍 数据集来源gapminder包中,包含了1704行和6个变量。其中6个变量含义分别为: - country 国家142个水平 - continent 大陆5个水平 - year 1952年-2007年(间隔为5年) - lifeExp 出生预期寿命,以年计数 - pop 人口数 - gdpPercap 人均国内生产总值(扣除通货膨胀因素后的美元) 由于数据过多,我们感兴趣的是年份为2007年的数据,所以使用dplyr包进行数据处理,具体数据处理案例可见我写的另一篇推送:[[R数据科学]tidyverse数据清洗案例详解](https://mp.weixin.qq.com/s/ozH-TsltnLwp51i3aDNpSQ)。数据缩略版如下: ```{r message=FALSE, warning=FALSE} library(ggplot2) library(dplyr) library(gapminder) data <- gapminder %>% filter(year=="2007") %>% dplyr::select(-year) ``` ## 手把手绘制 ### geom_point()函数构建 气泡图是添加了第三维度的散点图:附加数值变量的值通过点的大小表示。(来源:[data-to-viz](https://www.data-to-viz.com/graph/bubble.html "data-to-viz"))。 使用ggplot2,可以通过`geom_point()`函数构建气泡图。`aes()`设定至少三个变量:x、y和size。其实就是散点图绘制的升级版吧,`aes()`中多了一个参数。 ```{r} ggplot(data, aes(x=gdpPercap, y=lifeExp, size = pop)) + geom_point(alpha=0.7) ``` 上图展示了世界各国的预期寿命(y)与人均国内生产总值(x)之间的关系。每个国家的人口用圆的大小表示。但是这个图不是非常美观,而且圆的大小并不是很直观,大家都差不多大。接下来对圆的大小进行设定。 ### scale_size()控制圆的大小 scale_size()允许使用range参数设置最小和最大的圆的大小,用`name`改变图例名称(`scale_size(range = c(0.1, 24), name="Population (M)")`)。 - 图中可以看到,有些圆圈重叠了。k可将点的透明度进行调整(`geom_point(alpha=0.5)`) - 为了避免在图表顶部出现大的圆圈,可以将数据集进行排序(`arrange(desc(pop))`),代码如下。 ```{r} data %>% arrange(desc(pop)) %>% mutate(country = factor(country)) %>% ggplot(aes(x=gdpPercap, y=lifeExp, size = pop)) + geom_point(alpha=0.5) + scale_size(range = c(.1, 24), name="Population (M)") ``` 现在图可读性有所提高,但如果数据集中还有一个变量想加入图中该怎么办呢? ### 添加第四个维度:颜色 这里可以用每个国家的洲来控制圆圈的颜色(`aes(x=gdpPercap, y=lifeExp, size=pop, color=continent)`): ```{r} data %>% arrange(desc(pop)) %>% mutate(country = factor(country, country)) %>% ggplot(aes(x=gdpPercap, y=lifeExp, size=pop, color=continent)) + geom_point(alpha=0.5) + scale_size(range = c(.1, 24), name="Population (M)") ``` 该图基本可以满足我们日常生活的气泡图的可视化了。相信大家通过前面的详细的介绍,应该可以自行绘制,只要换个数据,懂得各个代码的含义即可。后面是图表美化的过程,参考[thr R Graph Gallery: Bubble plot with ggplot2](https://www.r-graph-gallery.com/320-the-basis-of-bubble-plot.html "thr R Graph Gallery: Bubble plot with ggplot2")。 ## 美化气泡图 ### 一些经典的改进 - 使用viridis包的调色板:(`scale_fill_viridis(discrete=TRUE, guide=FALSE, option="A")`) - 使用`hrbrthemes`包的`theme_ipsum()` - 使用xlab和ylab自定义轴标题 - 为圆添加描边:将形状改为21,并指定颜色(描边)和填充 ```{r message=FALSE, warning=FALSE} # Libraries library(hrbrthemes) library(viridis) # Most basic bubble plot data %>% arrange(desc(pop)) %>% mutate(country = factor(country, country)) %>% ggplot(aes(x=gdpPercap, y=lifeExp, size=pop, fill=continent)) + geom_point(alpha=0.5, shape=21, color="black") + scale_size(range = c(.1, 24), name="Population (M)") #+ #scale_fill_viridis(discrete=TRUE, guide=FALSE, option="A") + #theme_ipsum() + #theme(legend.position="bottom") + #ylab("Life Expectancy") + #xlab("欢迎关注:庄闪闪的成长手册 \nq Gdp per Capita") + #theme(legend.position = "none") ``` ### 带数据标签 这里使用ggrepel包中的(`geom_text_repel()`),可以给每个点自动加入标签,我这里是加入了各个国家名字,其他可以根据你实际需求进行设置。 ```{r message=FALSE, warning=FALSE} library(ggrepel) library(viridis) library(hrbrthemes) data1 = data %>% mutate(country = factor(country)) %>% head(20) attach(data1) ggplot(data1,aes(x=gdpPercap, y=lifeExp, size=pop, fill=continent)) + geom_point(alpha=0.5, shape=21, color="black") + scale_size(range = c(.1, 24), name="Population (M)") + geom_text_repel(label = country,size=5)#+ #scale_fill_viridis(discrete=TRUE, guide=FALSE, option="A") + #theme_ipsum() + #theme(legend.position="bottom") #+ #ylab("Life Expectancy") + #xlab("欢迎关注:庄闪闪的成长手册 \nq Gdp per Capita") + #theme(legend.position = "none") ``` 如果不喜欢圆形的气泡图,可以将代码中的`shape=21`进行更改,正方形是`shape=22`,得到的图如下: ```{r message=FALSE, warning=FALSE} library(ggrepel) data1 = data %>% mutate(country = factor(country)) %>% head(20) attach(data1) ggplot(data1,aes(x=gdpPercap, y=lifeExp, size=pop, fill=continent)) + geom_point(alpha=0.5, shape=22, color="black") + scale_size(range = c(.1, 24), name="Population (M)") + geom_text_repel(label = country,size=5)+ scale_fill_viridis(discrete=TRUE, guide=FALSE, option="A") #+ #theme_ipsum() + #theme(legend.position="bottom") + #ylab("Life Expectancy") + #xlab("欢迎关注:庄闪闪的成长手册 \nq Gdp per Capita") + #theme(legend.position = "none") ``` ## 拓展知识 其他扩展可自行学(小编做推送的时候已经学过啦,但是篇幅有限,就没继续整理下去了) - [GOplot包](https://wencke.github.io/ "GOplot包")提供了直接做气泡图的方法,函数是:GOBubble。 ![](https://imgkr2.cn-bj.ufileos.com/bdf4074a-8cb1-440d-9194-6e8d487e8ae5.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=190m6qR3V1exwcuPayCDULY0Ios%253D&Expires=1605238660) - [BUBBLE PLOT理论定义](https://www.data-to-viz.com/graph/bubble.html "BUBBLE PLOT理论定义") ![](https://imgkr2.cn-bj.ufileos.com/40810411-d8fc-413f-b665-ece61d55531c.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=9tj23TfNB23j468EBKqr46wN1Ec%253D&Expires=1605238689) - [plotly包](https://plotly.com/r/bubble-charts/ "plotly包")绘制可以互动的气泡图 ![](https://imgkr2.cn-bj.ufileos.com/47d4f17c-9b83-4340-9a09-ad122467565b.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=2uehzuNnkzKRhgkrmPmOmnEpGWg%253D&Expires=1605238713) ## R语言数可视化书内代码 ```{r message=FALSE, warning=FALSE} library(ggplot2) library(RColorBrewer) library(ggrepel) attach(mtcars) head(mtcars) ``` ### 带数据标签的气泡图 ```{r message=FALSE, warning=FALSE} ggplot(data=mtcars, aes(x=wt,y=mpg))+ geom_point(aes(size=disp,fill=disp),shape=21,colour="black",alpha=0.8)+ scale_fill_gradient2(low="#377EB8",high="#E41A1C",midpoint = mean(mtcars$disp))+ geom_text_repel(label = disp )+ scale_size_area(max_size=12)+ guides(size = guide_legend((title="Value")), fill = guide_legend((title="Value")))+ theme( legend.text=element_text(size=10,face="plain",color="black"), axis.title=element_text(size=10,face="plain",color="black"), axis.text = element_text(size=10,face="plain",color="black"), legend.position = "right" ) ``` ### 方块状的气泡图 ```{r message=FALSE, warning=FALSE} ggplot(mtcars, aes(wt,mpg))+ geom_point(aes(size=disp,fill=disp),shape=22,colour="black",alpha=0.8)+ scale_fill_gradient2(low=brewer.pal(7,"Set1")[2],high=brewer.pal(7,"Set1")[1], midpoint = mean(mtcars$disp))+ scale_size_area(max_size=12)+ guides(fill = guide_legend((title="Value")), size = guide_legend((title="Value")))+ theme( text=element_text(size=15,color="black"), plot.title=element_text(size=15,family="myfont",face="bold.italic",color="black")#, #legend.position=c(0.9,0.05) ) ``` ================================================ FILE: 2020年/2020.11.14gghalves/gghalves.html ================================================ Vignette Title

gghalves包

介绍

gghalves可以通过ggplot2轻松地编写自己想要的一半一半(half-half plots)的图片。比如:在散点旁边显示箱线图、在小提琴图旁边显示点图。

gghalves将_half_扩展添加到选定的geom。比如:geom_half_violin()函数,相当于geom_violin()函数的变体,该函数主要作用就是展示一半的小提琴图,然后与其他图形组合。还包含以下函数:

  • geom_half_boxplot
  • geom_half_violin
  • geom_half_point

安装

gghalves通过GitHub安装:

if (!require(devtools)) {
    install.packages('devtools')
}
devtools::install_github('erocoar/gghalves')

函数介绍

geom_half_violin(mapping = NULL, data = NULL, stat = "half_ydensity",
  position = "dodge", ..., side = "l", nudge = 0,
  draw_quantiles = NULL, trim = TRUE, scale = "area",
  na.rm = FALSE, show.legend = NA, inherit.aes = TRUE)

其参数包括:翻译来源生信玩家

参数 解释
mapping 通过aes()指定图形属性映射。默认为NULL,使用ggplot()aes()指定的映射。
data 指定数据框。默认为NULL,使用ggplot()中的数据。
stat 覆盖geom_density()和stat_density()之间的默认连接。
position 位置调整,可以是字符串,默认为"dodge",也可以是位置调整函数的调用结果。
side 画半小提琴图的一侧。 “ l”代表左,“ r”代表右,默认为“ l”。
nudge 在小提琴图和分配给x轴上给定因子的空间中间之间添加空间。
draw_quantiles 如果不是MULL(默认为NULL),在给定的密度估计分位数处绘制水平线。
trim 若为TRUE(默认),将小提琴的尾部修整到数据范围。 若为FALSE,不修剪尾巴。
scale 如果为"area"(默认),则所有小提琴都具有相同的面积(修剪尾部之前)。
na.rm 如果为FALSE(默认),则会使用警告删除缺失值。如果为TRUE,则会自动删除缺少的值。
show.legend 逻辑值,默认为NA,若为FALSE,不显示该图层的图例; 若为TRUE,则显示该图层的图例。 它也可以是带有名称(图形属性)的逻辑向量,用来选择要显示的图形属性。 如show.legend = c(size = TRUE,color = FALSE)表示显示size对应的图例,而不显示color对应的图例。
inherit.aes 默认为TRUE,若为FALSE,覆盖ggplot()aes()默认属性,而不是与他们组合。
geom 覆盖geom_density()stat_density()之间的默认连接。
bw 要使用的平滑带宽度。如果是数字,则为平滑内核的标准差。
adjust 多次带宽调整。这使得可以在仍使用带宽估计器的情况下调整带宽。例如,adjust = 1/2表示使用默认带宽的一半。

示例

单个函数

我们以iris数据集作为本例数据,先使用单个函数进行绘制。

if (!require(devtools)) {
    install.packages('devtools')
}
devtools::install_github('erocoar/gghalves')

geom_half_boxplot

library(gghalves)
## Loading required package: ggplot2
ggplot(iris, aes(x = Species, y = Petal.Width, fill = Species)) + 
    geom_half_boxplot() 

默认为箱子在右,使用center = TRUE将箱子居中。下面函数参数调整类似,就不再绘制结果了,就把最原始的进行展示。

ggplot(iris, aes(x = Species, y = Petal.Width, fill = Species)) + 
    geom_half_boxplot(center = TRUE) 

geom_half_violin

ggplot(iris, aes(x = Species, y = Petal.Width, fill = Species)) + 
    geom_half_violin()

geom_half_point

ggplot(iris, aes(x = Species, y = Petal.Width, fill = Species)) + 
    geom_half_point()

综合案例

云雨图

该案例来自生信玩家公众号ggplot扩展包–gghalves但并没有对代码进行详细解释。

这里小编对代码进行详细解释,喜欢的伙伴,可以按照解释自己理解,并用到自己实际所需的复合图中。

先将数据的统计摘要进行计算存到了summ_iris中,包含了均值,标准差,数量标准误差。iris_plot为所需数据,这里将Species变量设置为因子,因为要用它作为分类变量。

library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.0.3
## -- Attaching packages --------------------------------- tidyverse 1.3.0 --
## √ tibble  3.0.3     √ dplyr   1.0.2
## √ tidyr   1.1.2     √ stringr 1.4.0
## √ readr   1.3.1     √ forcats 0.5.0
## √ purrr   0.3.4
## Warning: package 'tidyr' was built under R version 4.0.3
## -- Conflicts ------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
# 统计摘要
summ_iris <- iris %>% 
    group_by(Species) %>% 
    summarise(
        mean = mean(Sepal.Length),
        sd = sd(Sepal.Length),
        n = n()
    ) %>% 
    mutate(se = sd/sqrt(n),
                 Species = factor(Species, levels = c('versicolor', 'setosa', 'virginica')))
## `summarise()` ungrouping output (override with `.groups` argument)
summ_iris
## # A tibble: 3 x 5
##   Species     mean    sd     n     se
##   <fct>      <dbl> <dbl> <int>  <dbl>
## 1 setosa      5.01 0.352    50 0.0498
## 2 versicolor  5.94 0.516    50 0.0730
## 3 virginica   6.59 0.636    50 0.0899
# 数据转换  
iris_plot <- iris %>% 
    mutate(Species = factor(Species, levels = c('versicolor', 'setosa', 'virginica')))
head(iris_plot) 
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa
## 4          4.6         3.1          1.5         0.2  setosa
## 5          5.0         3.6          1.4         0.2  setosa
## 6          5.4         3.9          1.7         0.4  setosa

接下来进行绘图,我们想要得到SpeciesSepal.Length的关系,其中Species为离散变量,Sepal.Length为连续变量。并绘制了半边的小提琴图,并将该图往右移了0.15,上下位置不变(position_nudge(x = .15, y = 0)),为了后面绘制其他图形留位置。

library(gghalves)
library(ggsignif)
## Warning: package 'ggsignif' was built under R version 4.0.3
library(ggsci)
## Warning: package 'ggsci' was built under R version 4.0.3
library(ggpubr)
## Warning: package 'ggpubr' was built under R version 4.0.3
ggplot(iris_plot , aes(x = Species, y = Sepal.Length, fill = Species))+
    geom_half_violin(aes(fill = Species),
                                     position = position_nudge(x = .15, y = 0),
                                      side = 'r')

接下来加入散点图,并使x坐标往左移动0.1(x = as.numeric(Species)-0.1),使用position_jitter使得重复的点分散开。

ggplot(iris_plot , aes(x = Species, y = Sepal.Length, fill = Species))+
    geom_half_violin(aes(fill = Species),
                                     position = position_nudge(x = .15, y = 0),
                                     side = 'r') +
    geom_point(aes(x = as.numeric(Species)-0.1,
                                 y = Sepal.Length,color = Species),
                         position = position_jitter(width = .05),size = .25, shape = 20)

在原来基础上加入箱子图,位置放在正中间

ggplot(iris_plot , aes(x = Species, y = Sepal.Length, fill = Species))+
    geom_half_violin(aes(fill = Species),
                                     position = position_nudge(x = .15, y = 0),
                                     adjust=1.5, trim=FALSE, colour=NA, side = 'r') +
    geom_point(aes(x = as.numeric(Species)-0.1,
                                 y = Sepal.Length,color = Species),
                         position = position_jitter(width = .05),size = .25, shape = 20) +
    geom_boxplot(aes(x = Species,y = Sepal.Length, fill = Species),
                             outlier.shape = NA,
                             width = .05,
                             color = "black")

这里比较有趣的是,作者还通过geom_pointgeom_errorbar加入和汇总信息以及对应的误差项。

ggplot(iris_plot , aes(x = Species, y = Sepal.Length, fill = Species))+
    geom_half_violin(aes(fill = Species),
                                     position = position_nudge(x = .15, y = 0),
                                     adjust=1.5, trim=FALSE, colour=NA, side = 'r') +
    geom_point(aes(x = as.numeric(Species)-0.1,
                                 y = Sepal.Length,color = Species),
                         position = position_jitter(width = .05),size = .25, shape = 20) +
    geom_boxplot(aes(x = Species,y = Sepal.Length, fill = Species),
                             outlier.shape = NA,
                             width = .05,
                             color = "black")+
    geom_point(data=summ_iris,
                         aes(x=Species,y = mean,group = Species, color = Species),
                         shape=18,
                         size = 1.5,
                         position = position_nudge(x = .1,y = 0)) +
    geom_errorbar(data = summ_iris,
                                aes(x = Species, y = mean, group = Species, colour = Species,
                                        ymin = mean-se, ymax = mean+se),
                                width=.05,
                                position=position_nudge(x = .1, y = 0)
    )

这里使用ggsci包的scale_color_aaas(),scale_fill_aaas()将尺度的颜色进行改变(非常好用!)

ggplot(iris_plot , aes(x = Species, y = Sepal.Length, fill = Species))+
    geom_half_violin(aes(fill = Species),
                                     position = position_nudge(x = .15, y = 0),
                                     adjust=1.5, trim=FALSE, colour=NA, side = 'r') +
    geom_point(aes(x = as.numeric(Species)-0.1,
                                 y = Sepal.Length,color = Species),
                         position = position_jitter(width = .05),size = .25, shape = 20) +
    geom_boxplot(aes(x = Species,y = Sepal.Length, fill = Species),
                             outlier.shape = NA,
                             width = .05,
                             color = "black")+
    geom_point(data=summ_iris,
                         aes(x=Species,y = mean,group = Species, color = Species),
                         shape=18,
                         size = 1.5,
                         position = position_nudge(x = .1,y = 0)) +
    geom_errorbar(data = summ_iris,
                                aes(x = Species, y = mean, group = Species, colour = Species,
                                        ymin = mean-se, ymax = mean+se),
                                width=.05,
                                position=position_nudge(x = .1, y = 0)
    ) +
    scale_color_aaas() +
    scale_fill_aaas()

最后使用ggpubr包的geom_signif加入显著性结果,ggsave保存图片。

# 绘图
ggplot(iris_plot , aes(x = Species, y = Sepal.Length, fill = Species))+
    geom_half_violin(aes(fill = Species),
                                     position = position_nudge(x = .15, y = 0),
                                     adjust=1.5, trim=FALSE, colour=NA, side = 'r') +
    geom_point(aes(x = as.numeric(Species)-0.1,
                                 y = Sepal.Length,color = Species),
                         position = position_jitter(width = .05),size = .25, shape = 20) +
    geom_boxplot(aes(x = Species,y = Sepal.Length, fill = Species),
                             outlier.shape = NA,
                             width = .05,
                             color = "black")+
    geom_point(data=summ_iris,
                         aes(x=Species,y = mean,group = Species, color = Species),
                         shape=18,
                         size = 1.5,
                         position = position_nudge(x = .1,y = 0)) +
    geom_errorbar(data = summ_iris,
                                aes(x = Species, y = mean, group = Species, colour = Species,
                                        ymin = mean-se, ymax = mean+se),
                                width=.05,
                                position=position_nudge(x = .1, y = 0)
    ) +
    scale_color_jco() +
    scale_fill_jco() +
    geom_signif(comparisons = list(c("versicolor", "setosa"),
                                                                 c("versicolor", "virginica"),
                                                                 c("setosa", "virginica")),
                            y_position = c(8.2, 8.6, 8.4),
                            map_signif_level = c("***" = 0.001, "**" = 0.01, "*" = 0.05)) +
    ggsave('云雨图.pdf', width = 6, height = 8)

混合图

最后是混合图,根据自己想要的图,可以自行添加。相信这个代码简单的图给大家学术作图上省了不少时间。

library(tidyverse)
ggplot() +
    geom_half_boxplot(
        data = iris %>% filter(Species=="setosa"), 
        aes(x = Species, y = Sepal.Length, fill = Species), outlier.color = NA) +
    ggbeeswarm::geom_beeswarm(
        data = iris %>% filter(Species=="setosa"),
        aes(x = Species, y = Sepal.Length, fill = Species, color = Species), beeswarmArgs=list(side=+1)
    ) +
    geom_half_violin(
        data = iris %>% filter(Species=="versicolor"), 
        aes(x = Species, y = Sepal.Length, fill = Species), side="r") +
    geom_half_dotplot(
        data = iris %>% filter(Species=="versicolor"), 
        aes(x = Species, y = Sepal.Length, fill = Species), method="histodot", stackdir="down") +
    geom_half_boxplot(
        data = iris %>% filter(Species=="virginica"), 
        aes(x = Species, y = Sepal.Length, fill = Species), side = "r", errorbar.draw = TRUE,
        outlier.color = NA) +
    geom_half_point(
        data = iris %>% filter(Species=="virginica"), 
        aes(x = Species, y = Sepal.Length, fill = Species, color = Species), side = "l") +
    scale_fill_manual(values = c("setosa" = "#cba1d2", "versicolor"="#7067CF","virginica"="#B7C0EE")) +
    scale_color_manual(values = c("setosa" = "#cba1d2", "versicolor"="#7067CF","virginica"="#B7C0EE")) +
    theme(legend.position = "none") +   
    ggsave('综合图.pdf', width = 6, height = 8)
## Warning: Ignoring unknown parameters: beeswarmArgs
## `stat_bindot()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bindot()` using `bins = 30`. Pick better value with `binwidth`.

================================================ FILE: 2020年/2020.11.14gghalves/gghalves.rmd ================================================ --- title: "Vignette Title" author: "Vignette Author" date: "`r Sys.Date()`" output: prettydoc::html_pretty: theme: cayman highlight: github vignette: > %\VignetteIndexEntry{Vignette Title} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- # gghalves包 ## 介绍 `gghalves`可以通过`ggplot2`轻松地编写自己想要的一半一半(half-half plots)的图片。比如:在散点旁边显示箱线图、在小提琴图旁边显示点图。 [gghalves](https://github.com/erocoar/gghalves)将`_half_`扩展添加到选定的`geom`。比如:`geom_half_violin()`函数,相当于`geom_violin()`函数的变体,该函数主要作用就是展示一半的小提琴图,然后与其他图形组合。还包含以下函数: - geom_half_boxplot - geom_half_violin - geom_half_point ## 安装 gghalves通过GitHub安装: ``` if (!require(devtools)) { install.packages('devtools') } devtools::install_github('erocoar/gghalves') ``` ## 函数介绍 ``` geom_half_violin(mapping = NULL, data = NULL, stat = "half_ydensity", position = "dodge", ..., side = "l", nudge = 0, draw_quantiles = NULL, trim = TRUE, scale = "area", na.rm = FALSE, show.legend = NA, inherit.aes = TRUE) ``` 其参数包括:翻译来源[生信玩家](https://blog.csdn.net/weixin_43700050/article/details/107512448) | 参数 | 解释 | | --- | --- | | `mapping` | 通过`aes()`指定图形属性映射。默认为`NULL`,使用`ggplot()`中`aes()`指定的映射。 | | `data` | 指定数据框。默认为`NULL`,使用`ggplot()`中的数据。 | | `stat` | 覆盖geom\_density\(\)和stat\_density\(\)之间的默认连接。 | | `position` | 位置调整,可以是字符串,默认为`"dodge"`,也可以是位置调整函数的调用结果。 | | `side` | 画半小提琴图的一侧。 “ l”代表左,“ r”代表右,默认为“ l”。 | | `nudge` | 在小提琴图和分配给x轴上给定因子的空间中间之间添加空间。 | | `draw_quantiles` | 如果不是`MULL`(默认为`NULL`),在给定的密度估计分位数处绘制水平线。 | | `trim` | 若为`TRUE`(默认),将小提琴的尾部修整到数据范围。 若为`FALSE`,不修剪尾巴。 | | `scale` | 如果为`"area"`(默认),则所有小提琴都具有相同的面积(修剪尾部之前)。 | `na.rm` | 如果为`FALSE`(默认),则会使用警告删除缺失值。如果为`TRUE`,则会自动删除缺少的值。 | | `show.legend` | 逻辑值,默认为`NA`,若为`FALSE`,不显示该图层的图例; 若为`TRUE`,则显示该图层的图例。 它也可以是带有名称(图形属性)的逻辑向量,用来选择要显示的图形属性。 如`show.legend = c(size = TRUE,color = FALSE)`表示显示`size`对应的图例,而不显示`color`对应的图例。 | | `inherit.aes` | 默认为`TRUE`,若为`FALSE`,覆盖`ggplot()`中`aes()`默认属性,而不是与他们组合。 | | `geom` | 覆盖`geom_density()`和`stat_density()`之间的默认连接。 | | `bw` | 要使用的平滑带宽度。如果是数字,则为平滑内核的标准差。 | | `adjust` | 多次带宽调整。这使得可以在仍使用带宽估计器的情况下调整带宽。例如,`adjust = 1/2`表示使用默认带宽的一半。 | ## 示例 ### 单个函数 我们以iris数据集作为本例数据,先使用单个函数进行绘制。 ```{r eval=FALSE, message=FALSE, warning=FALSE, include=TRUE} if (!require(devtools)) { install.packages('devtools') } devtools::install_github('erocoar/gghalves') ``` ### geom_half_boxplot ```{r} library(gghalves) # Compose Half-Half Plots Using Your Favourite Geoms # Compose Half-Half Plots Using Your Favourite Geoms ggplot(iris, aes(x = Species, y = Petal.Width, fill = Species)) + geom_half_boxplot() ``` 默认为箱子在右,使用`center = TRUE`将箱子居中。下面函数参数调整类似,就不再绘制结果了,就把最原始的进行展示。 ```{r} ggplot(iris, aes(x = Species, y = Petal.Width, fill = Species)) + geom_half_boxplot(center = TRUE) ``` ### geom_half_violin ```{r} ggplot(iris, aes(x = Species, y = Petal.Width, fill = Species)) + geom_half_violin() ``` ### geom_half_point ```{r} ggplot(iris, aes(x = Species, y = Petal.Width, fill = Species)) + geom_half_point() ``` ### 综合案例 #### 云雨图 该案例来自**生信玩家**公众号[ggplot扩展包--gghalves](https://blog.csdn.net/weixin_43700050/article/details/107512448)但并没有对代码进行详细解释。 这里小编对代码进行详细解释,喜欢的伙伴,可以按照解释自己理解,并用到自己实际所需的复合图中。 先将数据的统计摘要进行计算存到了`summ_iris`中,包含了均值,标准差,数量标准误差。`iris_plot`为所需数据,这里将`Species`变量设置为因子,因为要用它作为分类变量。 ```{r} library(tidyverse) # Easily Install and Load the 'Tidyverse' # Easily Install and Load the 'Tidyverse' # 统计摘要 summ_iris <- iris %>% group_by(Species) %>% summarise( mean = mean(Sepal.Length), sd = sd(Sepal.Length), n = n() ) %>% mutate(se = sd/sqrt(n), Species = factor(Species, levels = c('versicolor', 'setosa', 'virginica'))) summ_iris # 数据转换 iris_plot <- iris %>% mutate(Species = factor(Species, levels = c('versicolor', 'setosa', 'virginica'))) head(iris_plot) ``` 接下来进行绘图,我们想要得到`Species`与`Sepal.Length`的关系,其中`Species`为离散变量,`Sepal.Length`为连续变量。并绘制了半边的小提琴图,并将该图往右移了0.15,上下位置不变(`position_nudge(x = .15, y = 0)`),为了后面绘制其他图形留位置。 ```{r} library(gghalves) # Compose Half-Half Plots Using Your Favourite Geoms # Compose Half-Half Plots Using Your Favourite Geoms library(ggsignif) # Significance Brackets for 'ggplot2' library(ggsci) # Scientific Journal and Sci-Fi Themed Color Palettes for 'ggplot2' library(ggpubr) # 'ggplot2' Based Publication Ready Plots ggplot(iris_plot , aes(x = Species, y = Sepal.Length, fill = Species))+ geom_half_violin(aes(fill = Species), position = position_nudge(x = .15, y = 0), side = 'r') ``` 接下来加入散点图,并使x坐标往左移动0.1(`x = as.numeric(Species)-0.1`),使用`position_jitter`使得重复的点分散开。 ```{r} ggplot(iris_plot , aes(x = Species, y = Sepal.Length, fill = Species))+ geom_half_violin(aes(fill = Species), position = position_nudge(x = .15, y = 0), side = 'r') + geom_point(aes(x = as.numeric(Species)-0.1, y = Sepal.Length,color = Species), position = position_jitter(width = .05),size = .25, shape = 20) ``` 在原来基础上加入箱子图,位置放在正中间 ```{r} ggplot(iris_plot , aes(x = Species, y = Sepal.Length, fill = Species))+ geom_half_violin(aes(fill = Species), position = position_nudge(x = .15, y = 0), adjust=1.5, trim=FALSE, colour=NA, side = 'r') + geom_point(aes(x = as.numeric(Species)-0.1, y = Sepal.Length,color = Species), position = position_jitter(width = .05),size = .25, shape = 20) + geom_boxplot(aes(x = Species,y = Sepal.Length, fill = Species), outlier.shape = NA, width = .05, color = "black") ``` 这里比较有趣的是,作者还通过`geom_point`和`geom_errorbar`加入和汇总信息以及对应的误差项。 ```{r} ggplot(iris_plot , aes(x = Species, y = Sepal.Length, fill = Species))+ geom_half_violin(aes(fill = Species), position = position_nudge(x = .15, y = 0), adjust=1.5, trim=FALSE, colour=NA, side = 'r') + geom_point(aes(x = as.numeric(Species)-0.1, y = Sepal.Length,color = Species), position = position_jitter(width = .05),size = .25, shape = 20) + geom_boxplot(aes(x = Species,y = Sepal.Length, fill = Species), outlier.shape = NA, width = .05, color = "black")+ geom_point(data=summ_iris, aes(x=Species,y = mean,group = Species, color = Species), shape=18, size = 1.5, position = position_nudge(x = .1,y = 0)) + geom_errorbar(data = summ_iris, aes(x = Species, y = mean, group = Species, colour = Species, ymin = mean-se, ymax = mean+se), width=.05, position=position_nudge(x = .1, y = 0) ) ``` 这里使用`ggsci`包的`scale_color_aaas()`,`scale_fill_aaas()`将尺度的颜色进行改变(非常好用!)在下面展示另外一种配色(`scale_color_jco`) ```{r} ggplot(iris_plot , aes(x = Species, y = Sepal.Length, fill = Species))+ geom_half_violin(aes(fill = Species), position = position_nudge(x = .15, y = 0), adjust=1.5, trim=FALSE, colour=NA, side = 'r') + geom_point(aes(x = as.numeric(Species)-0.1, y = Sepal.Length,color = Species), position = position_jitter(width = .05),size = .25, shape = 20) + geom_boxplot(aes(x = Species,y = Sepal.Length, fill = Species), outlier.shape = NA, width = .05, color = "black")+ geom_point(data=summ_iris, aes(x=Species,y = mean,group = Species, color = Species), shape=18, size = 1.5, position = position_nudge(x = .1,y = 0)) + geom_errorbar(data = summ_iris, aes(x = Species, y = mean, group = Species, colour = Species, ymin = mean-se, ymax = mean+se), width=.05, position=position_nudge(x = .1, y = 0) ) + scale_color_aaas() + scale_fill_aaas() ``` 最后使用`ggpubr`包的`geom_signif`加入显著性结果,`ggsave`保存图片。 ```{r} # 绘图 ggplot(iris_plot , aes(x = Species, y = Sepal.Length, fill = Species))+ geom_half_violin(aes(fill = Species), position = position_nudge(x = .15, y = 0), adjust=1.5, trim=FALSE, colour=NA, side = 'r') + geom_point(aes(x = as.numeric(Species)-0.1, y = Sepal.Length,color = Species), position = position_jitter(width = .05),size = .25, shape = 20) + geom_boxplot(aes(x = Species,y = Sepal.Length, fill = Species), outlier.shape = NA, width = .05, color = "black")+ geom_point(data=summ_iris, aes(x=Species,y = mean,group = Species, color = Species), shape=18, size = 1.5, position = position_nudge(x = .1,y = 0)) + geom_errorbar(data = summ_iris, aes(x = Species, y = mean, group = Species, colour = Species, ymin = mean-se, ymax = mean+se), width=.05, position=position_nudge(x = .1, y = 0) ) + scale_color_jco() + scale_fill_jco() + geom_signif(comparisons = list(c("versicolor", "setosa"), c("versicolor", "virginica"), c("setosa", "virginica")), y_position = c(8.2, 8.6, 8.4), map_signif_level = c("***" = 0.001, "**" = 0.01, "*" = 0.05)) + ggsave('云雨图.pdf', width = 6, height = 8) ``` ### 混合图 最后是混合图,根据自己想要的图,可以自行添加。相信这个代码简单的图给大家学术作图上省了不少时间。 ```{r} library(tidyverse) # Easily Install and Load the 'Tidyverse' # Easily Install and Load the 'Tidyverse' ggplot() + geom_half_boxplot( data = iris %>% filter(Species=="setosa"), aes(x = Species, y = Sepal.Length, fill = Species), outlier.color = NA) + ggbeeswarm::geom_beeswarm( data = iris %>% filter(Species=="setosa"), aes(x = Species, y = Sepal.Length, fill = Species, color = Species), beeswarmArgs=list(side=+1) ) + geom_half_violin( data = iris %>% filter(Species=="versicolor"), aes(x = Species, y = Sepal.Length, fill = Species), side="r") + geom_half_dotplot( data = iris %>% filter(Species=="versicolor"), aes(x = Species, y = Sepal.Length, fill = Species), method="histodot", stackdir="down") + geom_half_boxplot( data = iris %>% filter(Species=="virginica"), aes(x = Species, y = Sepal.Length, fill = Species), side = "r", errorbar.draw = TRUE, outlier.color = NA) + geom_half_point( data = iris %>% filter(Species=="virginica"), aes(x = Species, y = Sepal.Length, fill = Species, color = Species), side = "l") + scale_fill_manual(values = c("setosa" = "#cba1d2", "versicolor"="#7067CF","virginica"="#B7C0EE")) + scale_color_manual(values = c("setosa" = "#cba1d2", "versicolor"="#7067CF","virginica"="#B7C0EE")) + theme(legend.position = "none") + ggsave('综合图.pdf', width = 8, height = 6) ``` ### 其他参考资料 [Using gghalves--Frederik Tiedemann](https://erocoar.github.io/gghalves/) [gghalves: Compose Half-Half Plots Using Your Favourite Geoms](https://cran.r-project.org/web/packages/gghalves/index.html) [CRAN](https://rdrr.io/cran/gghalves/f/vignettes/gghalves.Rmd) ================================================ FILE: 2020年/2020.11.16flexdashboard/flexdashboard.md ================================================ ## 简介 - 使用R Markdown可以将一组相关的数据可视化发布为仪表板。 - 支持多种组件,包括htmlwidgets; 基本,晶格和网格图形;表格数据 量表和值箱;和文字注释。 - 灵活且易于指定基于行和列的布局。可以智能地调整组件的大小以填充浏览器并适合在移动设备上显示。 - 演示图板布局,用于呈现可视化效果序列和相关评论。 - 使用Shiny动态驱动可视化。 去年师兄用这个包做了一个不错的应用(企业可靠性统计方向的项目)。今天正好需要学习下数据可视化仪表盘的制作。尝试了下,还不错,比Tableau还要优秀。最近出一期入门,有机会可以把自己的例子介绍一下。 下载方式如下: ``` install.packages("flexdashboard") ``` ## 官网案例分享 今天分享下官网的一些[小案例](https://rmarkdown.rstudio.com/flexdashboard/examples.html "小案例")。主要是截图呈现,当然你可以把他的[github](https://github.com/rstudio/flexdashboard "github")克隆到本地,有个文件夹专门放例子的代码,尝试修改代码,应用到自己实际项目中。 ### 2008年NBA运动员得分情况 ![](https://imgkr2.cn-bj.ufileos.com/20176c63-2213-4ead-b45c-fa378b217eef.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=w%252FdtpUnaHBk1BklxKe6%252BPq1ry70%253D&Expires=1605537297) ### 各种散点图 ![](https://imgkr2.cn-bj.ufileos.com/bde1939f-1930-49c4-bb44-81d716a09ce1.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=jLDVKbiSgrpJXlKfSDVTeK7sClo%253D&Expires=1605537248) ![](https://imgkr2.cn-bj.ufileos.com/42b53872-fcfe-4603-ba3c-9ee6b775ca96.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=Z7jj50JIv3HzDzImGtaiUVT2szk%253D&Expires=1605537256) ### 其他例子 ![](https://imgkr2.cn-bj.ufileos.com/6f819551-f375-4cb5-8d5b-b4a5a03a551a.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=zQoPXU9PUkadIF6hYSYn2KXFb5U%253D&Expires=1605537340) ![](https://imgkr2.cn-bj.ufileos.com/ff9d45a7-a1ab-4d93-9a09-427b4eaf29e6.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=ig0Bp6ORQ8cXVxHXOUpE2ZY7rbw%253D&Expires=1605537186) ![](https://imgkr2.cn-bj.ufileos.com/2e94d2a6-85f7-4bab-8402-929a47d70de0.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=ICP%252FysUWGCUXKEhwXpUmYtLwZW0%253D&Expires=1605537355) 当然这些都是可以交互的。大家可以去上面的网站访问下。 ================================================ FILE: 2020年/2020.11.16flexdashboard/test.html ================================================ 庄闪闪的成长手册

Row

Chart A

Chart E

Column

Chart B

Chart C

Chart D

Column

Chart F

================================================ FILE: 2020年/2020.11.16flexdashboard/test.rmd ================================================ --- title: "庄闪闪的成长手册" output: flexdashboard::flex_dashboard: orientation: rows vertical_layout: fill --- Row {data-width=450} ----------------------------------------------------------------------- ### Chart A ```{r} ``` ### Chart E Column {data-width=350} ----------------------------------------------------------------------- ### Chart B ```{r} ``` ### Chart C ```{r} ``` ### Chart D Column {data-width=350} ----------------------------------------------------------------------- ### Chart F ================================================ FILE: 2020年/2020.11.16flexdashboard/例子/09_rbokeh-iris-dataset/dashboard-pandoc2.0.3.html ================================================ rbokeh iris dataset

Column

Species

Column

Species (Quantile)

Petal Width

---
title: "rbokeh iris dataset"
author: "Ryan Hafen"
output: 
  flexdashboard::flex_dashboard:
    orientation: columns
    social: menu
    source_code: embed
---

```{r setup, include=FALSE}
library(rbokeh)
library(flexdashboard)
```

Column {data-width=600}
-----------------------------------------------------------------------

### Species

```{r}
figure(width = NULL, height = NULL) %>%
  ly_points(Sepal.Length, Sepal.Width, data = iris, color = Species)
# figure() %>%
#   ly_points(Sepal.Length, Sepal.Width, data = iris,
#     color = Species, glyph = Species)
```


Column {data-width=400}
-----------------------------------------------------------------------

### Species (Quantile)

```{r}
figure(width = NULL, height = NULL, legend_location = "top_left") %>%
  ly_quantile(Sepal.Length, group = Species, data = iris)
```

### Petal Width

```{r}
figure(width = NULL, height = NULL) %>%
  ly_points(Sepal.Length, Sepal.Width, data = iris,
    color = Petal.Width)
```
================================================ FILE: 2020年/2020.11.16flexdashboard/例子/09_rbokeh-iris-dataset/dashboard.Rmd ================================================ --- title: "rbokeh iris dataset" author: "Ryan Hafen" output: flexdashboard::flex_dashboard: orientation: columns social: menu source_code: embed --- ```{r setup, include=FALSE} library(rbokeh) library(flexdashboard) ``` Column {data-width=600} ----------------------------------------------------------------------- ### Species ```{r} figure(width = NULL, height = NULL) %>% ly_points(Sepal.Length, Sepal.Width, data = iris, color = Species) # figure() %>% # ly_points(Sepal.Length, Sepal.Width, data = iris, # color = Species, glyph = Species) ``` Column {data-width=400} ----------------------------------------------------------------------- ### Species (Quantile) ```{r} figure(width = NULL, height = NULL, legend_location = "top_left") %>% ly_quantile(Sepal.Length, group = Species, data = iris) ``` ### Petal Width ```{r} figure(width = NULL, height = NULL) %>% ly_points(Sepal.Length, Sepal.Width, data = iris, color = Petal.Width) ``` ================================================ FILE: 2020年/2020.11.16flexdashboard/教程.rmd ================================================ --- title: "Vignette Title" author: "Vignette Author" date: "`r Sys.Date()`" output: prettydoc::html_pretty: theme: cayman highlight: github vignette: > %\VignetteIndexEntry{Vignette Title} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- # 介绍 从CRAN安装flexdashboard软件包 ```{r} # install.packages("flexdashboard") ``` 要编写flexdashboard,您可以使用输出格式创建R Markdown文档flexdashboard::flex_dashboard。您可以使用新的R Markdown对话框在RStudio中执行此操作: ![](1.jpg) 如果不使用RStudio,则可以flexdashboard从R控制台创建一个新的R Markdown文件: ```{r eval=FALSE, include=TRUE} rmarkdown::draft("dashboard.Rmd", template = "flex_dashboard", package = "flexdashboard") ``` ## 仪表板基础 ### 组件 您可以使用flexdashboard将相关数据可视化组发布为仪表板。Flexdashboard可以是静态的(标准网页),也可以是动态的(Shiny交互式文档)。flexdashboard布局中可以包含各种各样的组件,包括: 基于htmlwidgets的交互式JavaScript数据可视化。 R图形输出,包括基础,晶格和网格图形。 表格数据(具有可选的排序,过滤和分页)。 用于突出显示重要摘要数据的值框。 用于在指定范围内的仪表上显示值的仪表。 各种文本注释。 有关每种组件类型的使用的更多详细信息,请参见仪表板组件文档。 ## 布局 ### 方向 - 按列布局 仪表板分为列和行,并使用3级降价标题(###)描绘了输出组件。默认情况下,仪表板布置在单列中,图表垂直堆叠在列中,其大小可填充可用的浏览器高度。 默认情况下,仪表板中的2级降价标题()定义列,各个图表垂直堆叠在每一列中。这是两列仪表板的定义,左侧有一个图表,右侧有两个图表: 两列,第二列包含两行 ![](3.jpg) - 按行布局 通过指定`orientation:rows`选项,您还可以选择按行而不是按列定向仪表板。例如,此布局定义了两行,其中第一行有一个图表,第二行有两个图表: ![](4.jpg) - vertical_layout: scroll 将列的图片进行滚动 - 通过data-width属性为该列提供了更大的尺寸 - orientation: rows 以行填充为默认仪表盘形式 ### 滚动布局 默认情况下,Flexdashboard图表的布局可以自动填充浏览器的高度。这对于少数垂直堆叠的图表效果很好,但是,如果您有很多图表,则可能需要滚动而不是全部放置在页面上。您可以使用vertical_layout选项控制此行为。指定fill垂直调整图表大小,以便它们完全填满页面,并scroll以自然高度布置图表,并在必要时滚动页面。 ### 标签集 如果您要在行或列中显示多个组件,则可以尝试将它们作为选项卡布局,而不是尝试同时将它们全部显示在屏幕上。当一个组件是主要组件(即,所有读者都应该看到)而其他组件提供仅某些读者可能感兴趣的次要信息时,这尤其合适。 在许多情况下,选项卡集比vertical_layout: scroll显示大量组件更好,因为它们很容易导航。 要将行或列布置为选项卡集,只需将{.tabset}属性添加到节标题即可。例如,以下代码列出了tabset中的第二列: ![](5.jpg) 行也可以作为选项卡布局,如下所示: 请注意,在此我们还应用了{.tabset-fade}在切换标签时导致淡入/淡出效果的属性。 ![](6.jpg) 注意,这里我们还应用了{.tabset-fade}选项卡时产生淡入/淡出效果。 ## 组件 ### HTML小部件 所述htmlwidgets框架提供为JavaScript数据可视化库高级的R绑定。基于htmlwidgets的图表非常适合与flexdashboard一起使用,因为它们可以动态调整自身大小,因此几乎总是完美地适合其flexdashboard容器的范围。 可用的htmlwidgets包括: Leaflet,一个用于创建支持平移和缩放的动态地图的库,带有各种注释,例如标记,多边形和弹出窗口。 dygraphs,它提供了用于绘制时间序列数据的丰富功能,并支持许多交互式功能,包括序列/点突出显示,缩放和平移。 Plotly,通过ggplotly界面,可以轻松地将ggplot2图形转换为基于Web的交互式版本。 rbokeh是Bokeh的接口,Bokeh是用于创建基于Web的绘图的强大的声明性Bokeh框架。 Highcharter,是流行的Highcharts JavaScript图形库的丰富R接口。 visNetwork,是vis.js库的网络可视化功能的接口。 CRAN上有30多个提供htmlwidgets的软件包。您可以在htmlwidgets展示柜中找到一些较流行的htmlwidget的示例用法,并浏览图库中所有可用的widget 。 您在R Markdown文档中包含htmlwidget,就像您包含R图一样。例如,以下是一个简单的仪表板定义,其中包含3个笔形时间序列图: ================================================ FILE: 2020年/2020.11.16flexdashboard/链接.txt ================================================ https://rmarkdown.rstudio.com/flexdashboard/ ================================================ FILE: 2020年/2020.11.22三维散点图/3d_scatter.html ================================================ 三维散点图

上期我们说了气泡图。如果我们将气泡图的三维数据绘制到三维坐标系中,通常称其为三维散点图,即用在三维X-Y-Z图上针对一个或多个数据序列绘出三个度量的一种图表。

有关散点图前几部分系列可见(可跳转):

R 中scatterplot3d包的scatterplot3d()函数、rgl包的plot3d()函数、plot3D包的scatter3D()函数等都可以绘制三维散点图。

下面将从两个包(scatter3D(),plot3d())入手,一步步带你完成三维散点图的绘制。本文内容丰富,希望大家都能学到自己想要的内容,学习不易,欢迎反馈建议。

library(plot3D)
library(scales)
library(RColorBrewer)

数据介绍

df<-read.csv("ThreeD_Scatter_Data.csv",header=T)
head(df)
##   mph Gas_Mileage Power Weight Engine_Displacement
## 1  23          19    69    821              3687.7
## 2  13          17    80   1287              4261.4
## 3  13          22    55   1535              1983.2
## 4  22          34    55   1037              1770.1
## 5  14          29    55   1082              1589.8
## 6  19          26    49   1285              1294.8
knitr::kable(head(iris))
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
5.1 3.5 1.4 0.2 setosa
4.9 3.0 1.4 0.2 setosa
4.7 3.2 1.3 0.2 setosa
4.6 3.1 1.5 0.2 setosa
5.0 3.6 1.4 0.2 setosa
5.4 3.9 1.7 0.4 setosa

plot3D包scatter3D()

scatter3D (x, y, z, ..., colvar = z, phi = 40, theta = 40,
           col = NULL, NAcol = "white", breaks = NULL,
           colkey = NULL, panel.first = NULL, 
           clim = NULL, clab = NULL, 
           bty = "b", CI = NULL, surf = NULL, 
           add = FALSE, plot = TRUE)
# pmar <- par(mar = c(5.1, 4.1, 4.1, 6.1))
with(iris, scatter3D(x = Sepal.Length, y = Sepal.Width, z = Petal.Length,
  pch = 21, cex = 1.5,col="black",bg="#F57446",
                   xlab = "Sepal.Length",
                   ylab = "Sepal.Width",
                   zlab = "Petal.Length", 
                   # zlim=c(40,180),
                   ticktype = "detailed",bty = "f",box = TRUE,
                   #panel.first = panelfirst,
                   theta = 60, phi = 20, d=3,
                   colkey = FALSE)#list(length = 0.5, width = 0.5, cex.clab = 0.75))
)

将Z轴变量数据“Power(KW)”映射到数据点颜色,这样可以更加清晰地观察Z 轴变量与X、Y 轴变量数据的变化关系。

我们先自己构造一个颜色映射的颜色条RdYlGn,再绘制三维散点图,然后根据映射的数值添加图例颜色条。

library(tidyverse)
iris = iris %>% mutate(quan = ntile(Petal.Width,6))
colormap <- colorRampPalette(rev(brewer.pal(11,'RdYlGn')))(6)#legend颜色配置
pmar <- par(mar = c(5.1, 4.1, 4.1, 6.1))
# 绘图
with(iris, scatter3D(x = Sepal.Length, y = Sepal.Width, z = Petal.Length,pch = 21, cex = 1.5,col="black",bg=colormap[iris$quan],
     xlab = "Sepal.Length",
     ylab = "Sepal.Width",
     zlab = "Petal.Length", 
     ticktype = "detailed",bty = "f",box = TRUE,
     theta = 60, phi = 20, d=3,
     colkey = FALSE)
)
colkey (col=colormap,clim=range(iris$quan),clab = "Petal.Width", add=TRUE, length=0.4,side = 4)

三维散点图可以展示三维数据,如果添加一维数据,则使图表展示四维数据。第1种方法就是将图4-1-14(c)的填充颜色渐变映射到第四维数据,而不是原来的第三维数据

第2种方法就是将第四维数据映射到数据点的大小上,即三维气泡图

pmar <- par(mar = c(5.1, 4.1, 4.1, 6.1))
# 绘图
with(iris, scatter3D(x = Sepal.Length, y = Sepal.Width, z = Petal.Length,pch = 21, 
                     cex = rescale(iris$quan, c(.5, 4)),col="black",bg=colormap[iris$quan],
                     xlab = "Sepal.Length",
                     ylab = "Sepal.Width",
                     zlab = "Petal.Length", 
                     ticktype = "detailed",bty = "f",box = TRUE,
                     theta = 30, phi = 15, d=2,
                     colkey = FALSE)
)
breaks =1:6
legend("right",title =  "Weight",legend=breaks,pch=21,
       pt.cex=rescale(breaks, c(.5, 4)),y.intersp=1.6,
       pt.bg = colormap[1:6],bg="white",bty="n")

library(wesanderson)
## Warning: package 'wesanderson' was built under R version 4.0.3
pmar <- par(mar = c(5.1, 4.1, 4.1, 7.1))
colors0 <-  wes_palette(n=3, name="Darjeeling1")
colors <- colors0[as.numeric(iris$Species)]
with(iris, scatter3D(x = Sepal.Length, y = Sepal.Width, z = Petal.Length, #bgvar = mag,
                   pch = 21, cex = 1.5,col="black",bg=colors,
                   xlab = "longitude", ylab = "latitude",
                   zlab = "depth, km", 
                   ticktype = "detailed",bty = "f",box = TRUE,
                   #panel.first = panelfirst,
                   theta = 140, phi = 20, d=3,
                   colkey = FALSE)#list(length = 0.5, width = 0.5, cex.clab = 0.75))
)

legend("right",title =  "Species",legend=c("setosa", "versicolor", "virginica"),pch=21,
       cex=1,y.intersp=1,pt.bg = colors0,bg="white",bty="n")

rgl包 plot3d()

rgl包是在r中构建3d图表的最佳选择,请参阅这篇介绍3d散点图使用它的文章。

plot3d(x, y, z,  
    xlab, ylab, zlab, type = "p", col,  
    size, lwd, radius,
    add = FALSE, aspect = !add, 
    xlim = NULL, ylim = NULL, zlim = NULL, 
    forceClipregion = FALSE, ...)
# library
library(rgl)

# Add a new column with color
mycolors <- c('royalblue1', 'darkcyan', 'oldlace')
iris$color <- mycolors[ as.numeric(iris$Species) ]

# Plot
plot3d( 
  x=iris$`Sepal.Length`, y=iris$`Sepal.Width`, z=iris$`Petal.Length`, 
  col = iris$color, 
  type = 's', 
  radius = .1,
  xlab="Sepal Length", ylab="Sepal Width", zlab="Petal Length")

# writeWebGL( filename="HtmlWidget/3dscatter.html" ,  width=600, height=600)

它还提供了plot3d()和play3d()函数,允许将3d图表动画化,并最终以.gif格式导出结果。下面是著名iris数据集的一个应用程序,它具有一个很好的动画3d散点图。

动态3D图

Animated 3d chart with R.

library(rgl)
library(magick)
## Warning: package 'magick' was built under R version 4.0.3
## Linking to ImageMagick 6.9.11.34
## Enabled features: cairo, freetype, fftw, ghostscript, lcms, pango, rsvg, webp
## Disabled features: fontconfig, x11
# This is ugly
colors <- c("royalblue1", "darkcyan", "oldlace")
iris$color <- colors[ as.numeric( as.factor(iris$Species) ) ]

# Static chart
# plot3d( iris[,1], iris[,2], iris[,3], col = iris$color, type = "s", radius = .2 )

# We can indicate the axis and the rotation velocity
# play3d( spin3d( axis = c(0, 0, 1), rpm = 20), duration = 50 )

# Save like gif
# movie3d(
#   movie="3dAnimatedScatterplot", 
#   spin3d( axis = c(0, 0, 1), rpm = 7),
#   duration = 10, 
#   dir = "~/Desktop",
#   type = "gif", 
#   clean = TRUE
# )
================================================ FILE: 2020年/2020.11.22三维散点图/3d_scatter.rmd ================================================ --- title: "三维散点图" author: "庄闪闪" date: "`r Sys.Date()`" output: prettydoc::html_pretty: theme: cayman highlight: github vignette: > %\VignetteIndexEntry{Vignette Title} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- 上期我们说了[气泡图](https://mp.weixin.qq.com/s?__biz=MzI1NjUwMjQxMQ==&mid=2247486060&idx=1&sn=b613c8d0239c93185641c1bb6a062f7b&chksm=ea24f588dd537c9e2d7a33dd5e9f32b34d0a72d5396cdb52211c51f3998269a4d843011abf9b&token=1457590009&lang=zh_CN#rd)。如果我们将[气泡图的三维数据绘制到三维坐标系](R语言数据可视化之美 "R语言数据可视化之美")中,通常称其为**三维散点图**,即用在三维X-Y-Z图上针对一个或多个数据序列绘出三个度量的一种图表。 有关散点图前几部分系列可见(可跳转): - [趋势显示的二维散点图](https://mp.weixin.qq.com/s?__biz=MzI1NjUwMjQxMQ==&mid=2247485142&idx=1&sn=564bffc9e7765ebae9b9b81a17a188d9&chksm=ea24f932dd5370241a05c75975ff24a34423a8f182bf6c716c8c9ed981788d0492dcb268248a&token=1544929502&lang=zh_CN&scene=21#wechat_redirect) - [分布显示的二维散点图](https://mp.weixin.qq.com/s?__biz=MzI1NjUwMjQxMQ==&mid=2247485276&idx=1&sn=f98a2aede13555fa1c372f08c3cdec44&chksm=ea24f8b8dd5371ae9e13f3df41ff73e070775eb1ab871370783bb3f396a0a9c29d42c6a89210&token=682523778&lang=zh_CN#rd) - [气泡图](https://mp.weixin.qq.com/s?__biz=MzI1NjUwMjQxMQ==&mid=2247486060&idx=1&sn=b613c8d0239c93185641c1bb6a062f7b&chksm=ea24f588dd537c9e2d7a33dd5e9f32b34d0a72d5396cdb52211c51f3998269a4d843011abf9b&token=1457590009&lang=zh_CN#rd) R 中`scatterplot3d`包的`scatterplot3d()`函数、`rgl`包的[plot3d()](http://www.rforscience.com/rpackages/visualisation/oceanview/)函数、`plot3D`包的`scatter3D()`函数等都可以绘制三维散点图。 下面将从两个包(`scatter3D()`,`plot3d()`)入手,一步步带你完成三维散点图的绘制。本文内容丰富,希望大家都能学到自己想要的内容,学习不易,欢迎反馈建议。 ```{r message=FALSE, warning=FALSE} library(plot3D) library(scales) library(RColorBrewer) ``` ## 数据介绍 ```{r} df<-read.csv("ThreeD_Scatter_Data.csv",header=T) head(df) ``` ```{r} knitr::kable(head(iris)) ``` ## plot3D包scatter3D() ``` scatter3D (x, y, z, ..., colvar = z, phi = 40, theta = 40, col = NULL, NAcol = "white", breaks = NULL, colkey = NULL, panel.first = NULL, clim = NULL, clab = NULL, bty = "b", CI = NULL, surf = NULL, add = FALSE, plot = TRUE) ``` ```{r} # pmar <- par(mar = c(5.1, 4.1, 4.1, 6.1)) with(iris, scatter3D(x = Sepal.Length, y = Sepal.Width, z = Petal.Length, pch = 21, cex = 1.5,col="black",bg="#F57446", xlab = "Sepal.Length", ylab = "Sepal.Width", zlab = "Petal.Length", # zlim=c(40,180), ticktype = "detailed",bty = "f",box = TRUE, #panel.first = panelfirst, theta = 60, phi = 20, d=3, colkey = FALSE)#list(length = 0.5, width = 0.5, cex.clab = 0.75)) ) ``` 将Z轴变量数据“Power(KW)”映射到数据点颜色,这样可以更加清晰地观察Z 轴变量与X、Y 轴变量数据的变化关系。 我们先自己构造一个颜色映射的颜色条RdYlGn,再绘制三维散点图,然后根据映射的数值添加图例颜色条。 ```{r message=FALSE, warning=FALSE} library(tidyverse) iris = iris %>% mutate(quan = ntile(Petal.Width,6)) colormap <- colorRampPalette(rev(brewer.pal(11,'RdYlGn')))(6)#legend颜色配置 pmar <- par(mar = c(5.1, 4.1, 4.1, 6.1)) # 绘图 with(iris, scatter3D(x = Sepal.Length, y = Sepal.Width, z = Petal.Length,pch = 21, cex = 1.5,col="black",bg=colormap[iris$quan], xlab = "Sepal.Length", ylab = "Sepal.Width", zlab = "Petal.Length", ticktype = "detailed",bty = "f",box = TRUE, theta = 60, phi = 20, d=3, colkey = FALSE) ) colkey (col=colormap,clim=range(iris$quan),clab = "Petal.Width", add=TRUE, length=0.4,side = 4) ``` 三维散点图可以展示三维数据,如果添加一维数据,则使图表展示四维数据。第1种方法就是将图4-1-14(c)的填充颜色渐变映射到第四维数据,而不是原来的第三维数据 第2种方法就是将第四维数据映射到数据点的大小上,即三维气泡图 ```{r message=FALSE, warning=FALSE} pmar <- par(mar = c(5.1, 4.1, 4.1, 6.1)) # 绘图 with(iris, scatter3D(x = Sepal.Length, y = Sepal.Width, z = Petal.Length,pch = 21, cex = rescale(iris$quan, c(.5, 4)),col="black",bg=colormap[iris$quan], xlab = "Sepal.Length", ylab = "Sepal.Width", zlab = "Petal.Length", ticktype = "detailed",bty = "f",box = TRUE, theta = 30, phi = 15, d=2, colkey = FALSE) ) breaks =1:6 legend("right",title = "Weight",legend=breaks,pch=21, pt.cex=rescale(breaks, c(.5, 4)),y.intersp=1.6, pt.bg = colormap[1:6],bg="white",bty="n") ``` ```{r} library(wesanderson) pmar <- par(mar = c(5.1, 4.1, 4.1, 7.1)) colors0 <- wes_palette(n=3, name="Darjeeling1") colors <- colors0[as.numeric(iris$Species)] with(iris, scatter3D(x = Sepal.Length, y = Sepal.Width, z = Petal.Length, #bgvar = mag, pch = 21, cex = 1.5,col="black",bg=colors, xlab = "longitude", ylab = "latitude", zlab = "depth, km", ticktype = "detailed",bty = "f",box = TRUE, #panel.first = panelfirst, theta = 140, phi = 20, d=3, colkey = FALSE)#list(length = 0.5, width = 0.5, cex.clab = 0.75)) ) legend("right",title = "Species",legend=c("setosa", "versicolor", "virginica"),pch=21, cex=1,y.intersp=1,pt.bg = colors0,bg="white",bty="n") ``` ## rgl包 plot3d() [rgl包](https://www.rdocumentation.org/packages/rgl/versions/0.100.54)是在r中构建3d图表的最佳选择,请参阅这篇介绍3d散点图使用它的文章。 ``` plot3d(x, y, z, xlab, ylab, zlab, type = "p", col, size, lwd, radius, add = FALSE, aspect = !add, xlim = NULL, ylim = NULL, zlim = NULL, forceClipregion = FALSE, ...) ``` ```{r webgl=TRUE, results='hide'} # library library(rgl) # Add a new column with color mycolors <- c('royalblue1', 'darkcyan', 'oldlace') iris$color <- mycolors[ as.numeric(iris$Species) ] # Plot plot3d( x=iris$`Sepal.Length`, y=iris$`Sepal.Width`, z=iris$`Petal.Length`, col = iris$color, type = 's', radius = .1, xlab="Sepal Length", ylab="Sepal Width", zlab="Petal Length") # writeWebGL( filename="HtmlWidget/3dscatter.html" , width=600, height=600) ``` 它还提供了plot3d()和play3d()函数,允许将3d图表动画化,并最终以.gif格式导出结果。下面是著名iris数据集的一个应用程序,它具有一个很好的动画3d散点图。 ## 动态3D图 [Animated 3d chart with R.](https://www.r-graph-gallery.com/3-r-animated-cube.html) ```{r } library(rgl) library(magick) # This is ugly colors <- c("royalblue1", "darkcyan", "oldlace") iris$color <- colors[ as.numeric( as.factor(iris$Species) ) ] # Static chart # plot3d( iris[,1], iris[,2], iris[,3], col = iris$color, type = "s", radius = .2 ) # We can indicate the axis and the rotation velocity # play3d( spin3d( axis = c(0, 0, 1), rpm = 20), duration = 50 ) # Save like gif # movie3d( # movie="3dAnimatedScatterplot", # spin3d( axis = c(0, 0, 1), rpm = 7), # duration = 10, # dir = "~/Desktop", # type = "gif", # clean = TRUE # ) ``` ================================================ FILE: 2020年/2020.11.22三维散点图/ThreeD_Scatter_Data.csv ================================================ mph,Gas_Mileage,Power,Weight,Engine_Displacement 23,19,69,821,3687.7 13,17,80,1287,4261.4 13,22,55,1535,1983.2 22,34,55,1037,1770.1 14,29,55,1082,1589.8 19,26,49,1285,1294.8 11,27,52,1246,2311 16,15,128,1655,6556 18,15,110,2121,5212 15,13,139,1680,6556 17,27,66,1124,2474.9 17,29,58,1187,1819.3 18,21,73,739,3687.7 10,14,161,1597,7441 20,20,71,883,1147.3 23,17,139,1675,6556 12,29,57,1036,1589.8 19,21,77,1457,3786.1 12,33,51,1005,1393.1 12,29,61,923,2212.6 13,17,124,1251,5736.5 18,21,73,1389,3802.5 17,20,79,1138,2556.8 15,22,80,1099,1983.2 19,33,52,1228,1753.7 12,19,102,1867,5212 12,19,121,1587,3786.1 16,24,69,970,1704.6 16,21,80,935,3687.7 16,30,49,902,1606.2 14,14,113,2152,5736.5 10,14,106,1417,5736.5 18,28,66,843,1901.2 14,35,38,1173,1491.5 13,19,106,1435,4998.9 16,27,61,1498,2474.9 15,24,69,1339,1852.1 13,20,74,1347,2130.7 17,26,61,987,2212.6 15,16,102,1352,4949.8 16,20,64,1979,1589.8 13,10,158,1531,5900.4 19,19,99,1505,5212 14,21,66,1432,3802.5 16,31,57,1509,1589.8 11,19,69,1387,4228.6 16,27,44,1613,1589.8 17,16,110,1487,6556 17,12,145,1426,7031.3 16,19,106,1052,4998.9 ================================================ FILE: 2020年/2020.11.22数据处理ntile()/数据处理数据按从小到大分成n类.md ================================================ ## 数据处理|数据按从小到大分成n类 最近做项目遇到了一个实际数据清洗的问题,如何将连续数据按从大到小分成n类?刚开始我是打算用tidyverse包的,但是找不到合适的函数。只能通过较为笨拙的方法进行了。 ![](https://imgkr2.cn-bj.ufileos.com/dde70a2c-d9fa-4076-8b52-ae17d0aa96b3.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=xb9feNgbDRAYJbQM8t67howdNmo%253D&Expires=1606120382) 之后通过[stackoverflow网站](https://stackoverflow.com/questions/4126326/how-to-quickly-form-groups-quartiles-deciles-etc-by-ordering-columns-in-a?noredirect=1 "How to quickly form groups ")进行查询才发现原来有这么好用的**窗口函数**。 ![](https://imgkr2.cn-bj.ufileos.com/c02dd36a-b258-4dc6-9350-3569d9980b3f.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=SAb7a4hlRpv3l43MWN6b%252Bi6ciaY%253D&Expires=1606121218) ## 较为笨拙的方法 使用Rbase包中的数据框操作进行,首先随机产生一个数据框作为模拟数据。 ```{r} temp <- data.frame(name=letters[1:12], value=rnorm(12), q=rep(NA, 12)) head(temp) # name value quartile # 1 a 2.55118169 NA # 2 b 0.79755259 NA # 3 c 0.16918905 NA # 4 d 1.73359245 NA # 5 e 0.41027113 NA # 6 f 0.73012966 NA ``` ```{r} temp.sorted <- temp[order(temp$value), ] temp.sorted$q <- rep(1:4, each=12/4) temp <- temp.sorted[order(as.numeric(rownames(temp.sorted))), ] head(temp) # name value q # 1 a 2.55118169 4 # 2 b 0.79755259 3 # 3 c 0.16918905 2 # 4 d 1.73359245 4 # 5 e 0.41027113 2 # 6 f 0.73012966 3 ``` ## 使用dplyr包中的ntile() 首先构建一个数据框,包含a,b变量。以该数据框进行演示: ```{r} foo <- data.frame(a = 1:100, b = runif(100, 50, 200), stringsAsFactors = FALSE) ``` 载入[tidyverse包](https://www.tidyverse.org/ "tidyverse包"),内部包含了[dplyr包](https://dplyr.tidyverse.org/ "dplyr包")。然后使用管道函数,利用函数`ntile()`构建新的列,列名为q。或者不用通道函数,直接加载`dplyr`包也可以。 ```{r} library(tidyverse) foo %>% mutate(q = ntile(b, 10)) # a b q #1 1 93.94754 2 #2 2 172.51323 8 #3 3 99.79261 3 #4 4 81.55288 2 #5 5 116.59942 5 #6 6 128.75947 6 ``` ================================================ FILE: 2020年/2020.11.28等高线/.Rhistory ================================================ install.packages("prettydoc") library(directlabels) library(reshape2) library(ggplot2) library(grDevices) library(RColorBrewer) library(directlabels) library(reshape2) library(ggplot2) library(grDevices) library(RColorBrewer) install.packages("reshape2") library(directlabels) library(reshape2) library(ggplot2) library(grDevices) library(RColorBrewer) library(directlabels) library(reshape2) library(ggplot2) library(grDevices) library(RColorBrewer) install.packages("Rcpp") library(directlabels) library(reshape2) library(ggplot2) library(grDevices) library(RColorBrewer) library(directlabels) library(reshape2) library(ggplot2) library(grDevices) library(RColorBrewer) install.packages("reshape2") library(directlabels) library(reshape2) library(ggplot2) library(grDevices) library(RColorBrewer) install.packages("RCPP") install.packages("Rcpp") install.packages("Rcpp") library(directlabels) library(reshape2) library(ggplot2) library(grDevices) library(RColorBrewer) library(reshape) library(reshape2) rf <- colorRampPalette(rev(brewer.pal(11,'Spectral'))) colormap <- colorRampPalette(rev(brewer.pal(11,'Spectral')))(32) # 数据 z <- as.matrix(read.table("等高线.txt",header=TRUE)) colnames(z) <- seq(1,ncol(z),by=1) #列名设置 max_z <- max(z) min_z <- min(z) breaks_lines <- seq(min(z),max(z),by=(max_z-min_z)/10) map <- melt(z) #这个函数来自reshape2(处理数据的包)介绍一下这个函数,以及相关函数 colnames(map)<-c("Var1","Var2","value") library(directlabels) library(reshape2) library(ggplot2) library(grDevices) library(RColorBrewer) ================================================ FILE: 2020年/2020.11.28等高线/等高线.html ================================================ 等高线图

等高线图

等高线图(contour map)可视化二维空间标量场的基本方法,可以将三维数据使用二维的方法可视化,同时用颜色视觉特征表示第三维数据,如地图上的等高线、天气预报中的等压线和等温线等。假设 \(f(x, y)\) 是在点 \((x, y)\) 处的数值,等值线是在二维数据场中满足 \(f(x, y)=c\) 的空间点集按一定的顺序连接而成的线。数值为c的等值线可以将二维空间标量场分为两部分:如果 函数大于c,则该点在等值线内;反之,则该点在等值线外。

library(directlabels)
library(reshape2)
library(ggplot2)
library(grDevices)
library(RColorBrewer)

数据介绍

rf <- colorRampPalette(rev(brewer.pal(11,'Spectral')))
colormap <- colorRampPalette(rev(brewer.pal(11,'Spectral')))(32)
# 数据
z <- as.matrix(read.table("等高线.txt",header=TRUE))
colnames(z) <- seq(1,ncol(z),by=1) #列名设置
max_z <- max(z)
min_z <- min(z)
breaks_lines <- seq(min(z),max(z),by=(max_z-min_z)/10)
map <- melt(z) #这个函数来自reshape2(处理数据的包)介绍一下这个函数,以及相关函数
colnames(map)<-c("Var1","Var2","value")
knitr::kable(head(z[,1:10]),caption = "转换前数据")
转换前数据
1 2 3 4 5 6 7 8 9 10
1076 1067 1060 1063 1076 1078 1073 1071 1073 1086
1083 1074 1065 1075 1091 1090 1082 1083 1087 1097
1087 1085 1079 1083 1101 1102 1094 1098 1105 1108
1087 1089 1089 1092 1106 1111 1109 1116 1118 1122
1089 1093 1095 1100 1112 1124 1129 1135 1134 1137
1094 1104 1103 1103 1117 1138 1149 1154 1155 1150
knitr::kable(head(map),caption = "转换后数据")
转换后数据
Var1 Var2 value
1 1 1076
2 1 1083
3 1 1087
4 1 1087
5 1 1089
6 1 1094

热力分布图

使用ggplot2包中的geom_tile()或者geom_raster()绘制热 力分布图。其主要区别在于geom_raster()函数中存在interpolate=TRUE/FALSE这个参数,决定是否对热力图进行平滑处理。

这里使用geom_tile()进行演示,将三维数据(x,y,z)(x,y)表示位置信息,z映射到颜色。这里的scale_fill_gradientn()将颜色填充呈n个梯度。

  • 拓展:scale_*_gradient创建一个双色梯度(低-高),scale_*_gradient2创建一个渐变的颜色梯度(低-中-高),scale_*_gradientn创建一个n色梯度。
ggplot(map,aes(x=Var1,y=Var2,z=value))+
    geom_tile(aes(fill=value))+
    scale_fill_gradientn(colours=colormap)

添加等高线

使用geom_contour()在上图基础上添加等高线,同一轮廓上的数值相同。

ggplot(map,aes(x=Var1,y=Var2,z=value))+
    geom_tile(aes(fill=value))+#根据高度填充
    scale_fill_gradientn(colours=colormap)+
    geom_contour(breaks=breaks_lines,color="black")+#
    labs(x="X-Axis",y="Y-Axis",fill="Z-Value")

设置主题

对主题进行稍微的调整。改变x轴题目(axis.title,大小为15,字体形式为常规体face="plain",颜色黑色),x轴文字(axis.text),图例标题(legend.title)图例文字,(legend.text),(图例背景legend.background),图例位置(legend.position)

  • 拓展:face还可以设置其他字体形式:plain(常规体)、bold(粗体)、italic(斜体)、bold.italic(粗斜体)
Contour <- ggplot(map,aes(x=Var1,y=Var2,z=value))+
    geom_tile(aes(fill=value))+#根据高度填充
    scale_fill_gradientn(colours=colormap)+
    geom_contour(aes(colour= ..level..),breaks=breaks_lines,color="black")+#
    labs(x="X-Axis",y="Y-Axis",fill="Z-Value")+
    theme(
        axis.title = element_text(size=15,face="plain",color="black"),
        axis.text = element_text(size=13,face="plain",color="black"),
        legend.title = element_text(size=13,face="plain",color="black"),
        legend.text = element_text(size=11,face="plain",color="black"),
        legend.background = element_blank(),
        legend.position = c(0.15,0.2)
    )
Contour

添加等高线的具体数值

在上面的图基础上,添加等高线的具体数值,从而不需要颜色映射的图例,同一轮廓上的数值相同。

  • 作用:在二维屏幕上,等高线可以有效地表达相同数值的区域,揭示走势和陡峭程度及两者之间的关系,寻找坡、峰、谷等形状。
direct.label(Contour, list("bottom.pieces", cex=0.8,                                                     fontface="plain", fontfamily="serif", colour='black'))

================================================ FILE: 2020年/2020.11.28等高线/等高线.r ================================================ # 等高线图 # 等高线图(contour map)是可视化二维空间标量场的基本方法,可以将三维数据使用二维的方 # 法可视化,同时用颜色视觉特征表示第三维数据,如地图上的等高线、天气预报中的等压线和等温 # 线等。假设f(x, y)是在点(x, y)处的数值,等值线是在二维数据场中满足f(x, y)=c 的空间点集按一定的 # 顺序连接而成的线。数值为c 的等值线可以将二维空间标量场分为两部分:如果f(x, y)c,则该点在等值线外。 # 图4-3-1(a)为热力分布图,只是将三维数据(x, y, z)中(x, y)表示位置信息,z 映射到颜色。图4-3-1(b) # 是在图4-3-1(a)的基础上添加等高线,同一轮廓上的数值相同。图4-3-1(c)是在图4-3-1(b)的基础上添 # 加等高线的具体数值,从而不需要颜色映射的图例,同一轮廓上的数值相同。在二维屏幕上,等高 # 线可以有效地表达相同数值的区域,揭示走势和陡峭程度及两者之间的关系,寻找坡、峰、谷等 # 形状。 library(directlabels) library(reshape2) library(ggplot2) library(grDevices) rf <- colorRampPalette(rev(brewer.pal(11,'Spectral'))) colormap <- colorRampPalette(rev(brewer.pal(11,'Spectral')))(32) # 数据 z <- as.matrix(read.table("等高线.txt",header=TRUE)) colnames(z) <- seq(1,ncol(z),by=1) #列名设置 head(z) dim(z) max_z <- max(z) min_z <- min(z) breaks_lines <- seq(min(z),max(z),by=(max_z-min_z)/10) map <- melt(z) #这个函数来自reshape2(处理数据的包)介绍一下这个函数,以及相关函数 dim(map) colnames(map)<-c("Var1","Var2","value") head(map) Contour <- ggplot(map,aes(x=Var1,y=Var2,z=value))+ geom_tile(aes(fill=value))+#根据高度填充 scale_fill_gradientn(colours=colormap)+ geom_contour(aes(colour= ..level..),breaks=breaks_lines,color="black")+# labs(x="X-Axis",y="Y-Axis",fill="Z-Value")+ theme( axis.title = element_text(size=15,face="plain",color="black"), axis.text = element_text(size=13,face="plain",color="black"), legend.title = element_text(size=13,face="plain",color="black"), legend.text = element_text(size=11,face="plain",color="black"), legend.background = element_blank(), legend.position = c(0.15,0.2) ) Contour ## 加维度 direct.label(Contour, list("bottom.pieces", cex=0.8, #"far.from.others.borders", fontface="plain", fontfamily="serif", colour='black')) ================================================ FILE: 2020年/2020.11.28等高线/等高线.rmd ================================================ --- title: "等高线图" author: "庄闪闪" date: "`r Sys.Date()`" output: prettydoc::html_pretty: theme: cayman highlight: github vignette: > %\VignetteIndexEntry{Vignette Title} %\VignetteEncoding{UTF-8} %\VignetteEngine{knitr::rmarkdown} editor_options: chunk_output_type: console --- # 等高线图 **等高线图(contour map)** 是[可视化二维空间标量场的基本方法](https://github.com/EasyChart/Beautiful-Visualization-with-R "R语言数据可视化之美"),可以将三维数据使用二维的方法可视化,同时用颜色视觉特征表示第三维数据,如地图上的等高线、天气预报中的等压线和等温线等。假设 $f(x, y)$ 是在点 $(x, y)$ 处的数值,等值线是在二维数据场中满足 $f(x, y)=c$ 的空间点集按一定的顺序连接而成的线。数值为c的等值线可以将二维空间标量场分为两部分:如果 函数大于c,则该点在等值线内;反之,则该点在等值线外。 ```{r message=FALSE, warning=FALSE} library(directlabels) library(reshape2) library(ggplot2) library(grDevices) library(RColorBrewer) ``` ## 数据介绍 ```{r message=FALSE, warning=FALSE} rf <- colorRampPalette(rev(brewer.pal(11,'Spectral'))) colormap <- colorRampPalette(rev(brewer.pal(11,'Spectral')))(32) # 数据 z <- as.matrix(read.table("等高线.txt",header=TRUE)) colnames(z) <- seq(1,ncol(z),by=1) #列名设置 max_z <- max(z) min_z <- min(z) breaks_lines <- seq(min(z),max(z),by=(max_z-min_z)/10) map <- melt(z) #这个函数来自reshape2(处理数据的包)介绍一下这个函数,以及相关函数 colnames(map)<-c("Var1","Var2","value") ``` ```{r} knitr::kable(head(z[,1:10]),caption = "转换前数据") ``` ```{r} knitr::kable(head(map),caption = "转换后数据") ``` ## 热力分布图 使用ggplot2包中的`geom_tile()`或者`geom_raster()`绘制热 力分布图。其主要区别在于`geom_raster()`函数中存在`interpolate=TRUE/FALSE`这个参数,决定是否对热力图进行平滑处理。 这里使用`geom_tile()`进行演示,将三维数据`(x,y,z)`中`(x,y)`表示位置信息,`z`映射到颜色。这里的`scale_fill_gradientn()`将颜色填充呈n个梯度。 - **拓展:**`scale_*_gradient`创建一个双色梯度(低-高),`scale_*_gradient2`创建一个渐变的颜色梯度(低-中-高),`scale_*_gradientn`创建一个n色梯度。 ```{r} ggplot(map,aes(x=Var1,y=Var2,z=value))+ geom_tile(aes(fill=value))+ scale_fill_gradientn(colours=colormap) ``` ## 添加等高线 使用`geom_contour()`在上图基础上添加等高线,同一轮廓上的数值相同。 ```{r} ggplot(map,aes(x=Var1,y=Var2,z=value))+ geom_tile(aes(fill=value))+#根据高度填充 scale_fill_gradientn(colours=colormap)+ geom_contour(breaks=breaks_lines,color="black")+# labs(x="X-Axis",y="Y-Axis",fill="Z-Value") ``` ## 设置主题 对主题进行稍微的调整。改变x轴题目(`axis.title`,大小为15,字体形式为常规体`face="plain"`,颜色黑色),x轴文字(`axis.text`),图例标题(`legend.title`)图例文字,(`legend.text`),(图例背景`legend.background`),图例位置(`legend.position`) - *拓展*:face还可以设置其他字体形式:plain(常规体)、bold(粗体)、italic(斜体)、bold.italic(粗斜体) ```{r} Contour <- ggplot(map,aes(x=Var1,y=Var2,z=value))+ geom_tile(aes(fill=value))+#根据高度填充 scale_fill_gradientn(colours=colormap)+ geom_contour(aes(colour= ..level..),breaks=breaks_lines,color="black")+# labs(x="X-Axis",y="Y-Axis",fill="Z-Value")+ theme( axis.title = element_text(size=15,face="plain",color="black"), axis.text = element_text(size=13,face="plain",color="black"), legend.title = element_text(size=13,face="plain",color="black"), legend.text = element_text(size=11,face="plain",color="black"), legend.background = element_blank(), legend.position = c(0.15,0.2) ) Contour ``` ## 添加等高线的具体数值 在上面的图基础上,添加等高线的具体数值,从而不需要颜色映射的图例,同一轮廓上的数值相同。 - **作用**:在二维屏幕上,等高线可以有效地表达相同数值的区域,揭示走势和陡峭程度及两者之间的关系,寻找坡、峰、谷等形状。 ```{r} direct.label(Contour, list("bottom.pieces", cex=0.8, fontface="plain", fontfamily="serif", colour='black')) ``` ================================================ FILE: 2020年/2020.11.28等高线/等高线.txt ================================================ 1063 1059 1053 1058 1056 1063 1062 1066 1077 1090 1105 1118 1124 1121 1116 1113 1110 1098 1078 1063 1052 1047 1038 1030 1019 1013 1002 996 994 986 961 939 928 920 912 907 908 911 898 872 850 841 839 838 837 838 839 840 841 840 838 838 836 835 836 840 835 836 840 841 841 842 843 835 819 825 840 840 838 836 835 836 828 812 792 780 790 811 830 840 829 815 810 821 834 835 843 855 873 882 879 875 876 881 890 895 887 878 877 864 836 811 794 786 775 763 752 745 752 756 756 754 750 746 751 758 760 761 764 765 767 771 775 778 780 780 777 770 767 776 787 794 798 802 807 814 817 817 818 819 819 815 812 809 805 802 798 795 791 788 788 790 793 789 782 783 786 787 789 790 790 794 796 795 794 796 798 798 799 798 799 801 803 803 804 804 805 808 811 810 810 810 810 811 811 809 810 813 817 828 843 855 851 830 823 829 832 838 844 847 846 1076 1067 1060 1063 1076 1078 1073 1071 1073 1086 1104 1120 1128 1128 1128 1125 1118 1104 1085 1069 1054 1050 1041 1030 1023 1018 1011 1003 997 979 945 915 895 883 875 869 871 877 873 858 849 845 844 844 843 843 844 844 843 842 843 838 832 834 837 841 839 841 845 846 846 844 840 835 820 833 841 841 846 844 842 840 825 800 787 792 808 826 839 845 833 817 809 824 839 843 850 867 880 884 881 879 885 888 895 897 895 889 880 862 831 806 787 776 761 752 751 756 759 760 759 757 752 745 755 759 760 761 765 767 769 771 775 779 783 785 785 778 773 780 783 791 794 798 809 815 818 818 819 820 820 816 812 809 805 802 797 792 790 790 791 792 794 791 784 785 787 788 790 791 791 793 793 793 796 796 797 798 800 802 803 803 804 804 806 807 807 809 809 809 810 810 811 814 816 815 817 817 810 816 830 840 837 828 825 828 831 834 836 841 844 1083 1074 1065 1075 1091 1090 1082 1083 1087 1097 1107 1125 1135 1135 1132 1128 1120 1105 1085 1074 1065 1056 1048 1032 1029 1029 1022 1014 1002 974 928 892 872 864 859 854 854 855 852 846 848 850 850 850 849 849 847 846 844 846 850 844 838 839 841 844 844 847 849 850 852 848 844 837 823 840 845 844 845 845 845 842 825 801 786 800 824 841 848 852 843 829 815 824 839 844 853 874 882 883 883 886 892 895 894 891 893 892 881 861 830 805 788 775 760 753 753 754 760 760 759 756 751 747 760 765 764 762 767 771 774 776 781 783 788 791 794 790 785 779 781 793 792 796 809 817 820 820 823 823 823 818 814 809 804 800 797 794 791 792 792 793 793 790 787 787 785 786 789 790 791 792 792 793 796 796 796 799 802 803 802 801 801 801 804 806 808 809 810 811 812 812 812 813 814 812 810 812 812 815 820 822 823 825 825 827 831 835 836 840 842 1087 1085 1079 1083 1101 1102 1094 1098 1105 1108 1115 1131 1140 1139 1130 1123 1112 1097 1084 1072 1061 1055 1047 1035 1027 1031 1026 1019 1002 965 925 896 880 869 860 851 849 854 854 854 855 857 858 857 856 854 849 851 853 854 854 854 851 846 847 851 851 849 851 854 856 854 850 841 826 843 847 845 844 847 848 839 813 797 793 809 834 849 853 857 855 834 818 827 842 850 859 875 884 883 883 889 893 891 891 893 893 891 881 862 832 803 785 771 759 754 758 761 763 763 763 761 754 759 768 771 774 777 781 785 788 792 796 797 798 799 799 797 794 782 786 794 792 798 810 819 825 825 826 826 825 822 817 811 805 801 799 798 797 793 791 792 792 788 789 789 785 786 789 790 794 794 795 797 798 799 798 798 803 805 804 804 804 804 805 806 808 811 813 815 815 816 818 819 819 818 815 815 816 817 821 823 824 826 829 829 834 838 840 843 845 1087 1089 1089 1092 1106 1111 1109 1116 1118 1122 1128 1134 1144 1142 1128 1113 1103 1090 1079 1076 1067 1056 1047 1036 1031 1036 1032 1013 979 941 908 885 872 860 852 850 853 854 851 854 859 861 865 861 858 855 853 857 860 861 860 859 855 853 853 854 854 854 858 859 860 858 850 843 832 848 849 845 849 854 853 836 805 791 795 817 844 852 856 860 856 833 822 830 844 858 866 874 882 885 886 893 893 886 890 897 896 890 879 860 832 806 790 775 763 755 760 765 764 762 763 763 760 770 776 780 789 795 802 808 812 816 822 824 825 824 818 810 802 796 793 785 795 803 808 819 826 827 828 828 828 827 821 814 810 806 803 800 799 795 795 794 792 789 788 787 789 790 790 793 797 799 798 801 802 802 800 797 802 805 806 807 807 809 809 806 808 813 815 816 816 816 819 819 819 819 817 815 815 815 818 821 825 827 829 832 834 838 839 842 843 1089 1093 1095 1100 1112 1124 1129 1135 1134 1137 1143 1137 1143 1140 1125 1109 1100 1088 1076 1074 1065 1049 1042 1043 1035 1041 1043 1017 979 945 912 887 871 860 850 848 854 855 854 857 862 865 868 864 862 861 859 855 858 862 859 856 855 854 855 859 860 860 856 856 859 858 849 845 842 852 852 850 856 862 855 834 815 801 795 821 849 857 861 858 847 837 832 830 841 856 865 869 873 881 890 895 893 890 893 898 898 892 877 857 831 814 804 786 768 759 761 764 764 764 767 769 770 778 784 791 802 810 818 825 832 838 844 845 845 841 833 824 815 808 796 782 799 804 810 819 828 829 829 829 829 826 820 812 810 808 805 803 802 800 799 798 795 791 791 793 793 793 794 795 797 798 798 800 801 801 802 803 803 801 803 805 806 810 812 808 811 812 813 814 814 815 816 816 816 816 816 815 815 815 817 820 825 829 831 835 837 839 839 841 844 1094 1104 1103 1103 1117 1138 1149 1154 1155 1150 1151 1144 1137 1131 1120 1108 1099 1092 1084 1076 1061 1049 1045 1055 1049 1050 1053 1024 984 948 912 883 865 861 858 857 859 859 859 861 867 870 868 866 865 862 858 855 859 863 862 859 857 855 856 860 863 866 863 861 861 857 852 848 854 853 857 860 862 870 851 821 801 806 819 838 856 866 865 854 843 845 842 833 835 846 857 861 863 873 888 892 892 899 901 901 899 892 875 854 833 821 819 797 775 767 762 763 764 767 771 778 782 790 798 807 819 830 840 846 855 862 867 870 871 866 856 846 834 822 805 791 793 805 810 822 831 833 834 835 834 829 824 818 815 813 811 810 807 803 800 797 794 792 790 791 791 791 795 796 796 801 802 805 807 807 807 807 807 808 808 808 808 809 809 808 809 810 813 817 819 821 822 823 823 823 822 819 818 820 824 827 830 833 835 839 842 842 843 844 847 1100 1108 1107 1111 1122 1137 1153 1164 1169 1156 1153 1147 1136 1125 1114 1102 1097 1098 1094 1084 1067 1065 1060 1065 1066 1060 1056 1028 985 943 904 876 860 858 863 866 866 865 865 866 870 873 872 869 868 865 862 861 862 867 867 864 862 859 859 862 867 869 866 865 864 859 856 851 856 860 863 867 865 867 849 817 796 803 830 849 860 869 866 858 854 860 857 852 849 847 853 862 864 868 874 887 901 909 911 911 905 897 879 854 833 824 823 804 788 775 763 764 764 767 774 786 793 805 819 831 844 856 866 874 881 887 893 901 903 897 882 867 853 837 819 799 793 807 813 823 830 835 838 839 837 833 828 824 821 818 815 812 809 807 805 802 797 793 793 793 793 795 798 798 801 805 806 807 808 808 808 808 808 808 806 804 805 809 811 811 812 814 816 818 818 819 819 820 820 820 818 815 817 821 824 827 831 834 837 839 840 842 843 845 846 1108 1117 1126 1132 1135 1135 1144 1158 1165 1155 1147 1140 1129 1119 1108 1098 1100 1099 1090 1079 1076 1079 1070 1064 1068 1058 1053 1035 995 946 901 876 864 861 867 867 868 868 868 869 871 874 876 874 873 872 869 867 864 866 868 866 866 864 864 867 871 872 869 868 865 865 860 858 861 867 872 874 870 867 844 812 799 813 839 857 866 874 870 866 865 866 865 863 860 850 854 864 865 865 869 885 902 910 911 909 907 905 887 864 842 839 831 812 790 778 770 771 775 781 790 800 810 823 840 853 866 878 887 899 908 915 920 929 930 922 903 886 869 851 832 814 798 805 817 821 829 836 840 839 838 835 830 826 823 819 816 813 811 811 809 806 800 796 794 794 795 798 799 800 802 805 809 811 810 808 809 809 809 810 812 810 809 811 814 814 815 816 816 814 815 822 823 824 825 825 824 824 825 826 827 833 837 839 841 843 845 845 846 848 849 1115 1123 1133 1142 1138 1135 1142 1149 1155 1157 1147 1131 1124 1113 1101 1097 1100 1101 1098 1097 1096 1093 1078 1066 1068 1061 1055 1044 1000 945 896 872 865 869 874 875 874 869 867 869 872 874 874 874 875 874 870 869 865 864 867 866 867 869 870 872 875 875 873 870 865 869 863 865 866 871 878 879 878 871 848 817 806 825 851 865 872 877 873 869 870 870 868 865 865 860 858 866 867 868 869 884 904 913 916 915 915 909 892 873 857 851 839 823 802 790 780 775 770 787 801 811 825 843 860 873 888 902 917 932 939 944 950 956 957 950 927 905 883 864 846 824 804 807 817 822 834 841 843 844 843 837 830 828 825 820 818 817 815 812 809 804 801 799 796 796 798 801 803 803 803 806 812 814 813 811 812 812 812 814 816 814 809 811 814 814 814 816 816 815 818 823 825 826 827 827 828 827 827 828 830 834 836 839 841 843 847 845 845 848 848 1116 1124 1129 1135 1132 1134 1144 1142 1141 1146 1143 1131 1124 1115 1105 1102 1105 1106 1107 1104 1099 1092 1078 1062 1046 1027 1027 1036 995 947 908 882 867 869 872 872 874 873 873 874 876 877 876 874 874 875 874 872 868 869 871 868 871 875 875 876 877 876 875 869 867 870 866 867 864 873 880 882 881 874 854 832 817 831 859 872 877 878 876 872 871 872 870 868 870 868 864 872 873 873 872 880 902 920 923 920 922 918 904 881 864 854 845 829 814 802 788 776 779 797 814 828 843 859 878 899 916 930 944 958 968 973 975 975 973 963 941 917 896 878 858 831 809 808 822 829 839 846 849 847 842 837 832 829 826 824 822 820 818 815 813 808 802 800 800 802 804 807 810 807 806 808 813 814 815 816 816 815 814 817 818 816 810 811 813 815 815 817 817 820 822 822 823 825 827 828 829 829 830 831 832 834 836 840 842 845 850 850 850 853 853 1107 1112 1115 1116 1117 1124 1137 1140 1135 1133 1137 1130 1120 1116 1111 1109 1113 1115 1109 1101 1093 1086 1079 1055 1024 1004 1005 1018 998 950 910 884 871 875 877 876 877 877 875 875 875 877 879 877 874 874 877 876 871 871 875 875 875 876 878 880 880 877 873 876 872 873 873 866 870 879 882 882 882 874 854 834 827 846 869 879 880 877 877 877 875 873 874 875 875 870 871 881 880 879 875 876 893 923 929 926 927 926 917 889 867 854 851 841 827 812 796 781 785 805 827 847 862 877 897 922 942 958 972 982 990 993 991 984 979 968 948 927 910 893 867 837 811 807 817 827 836 845 847 847 846 844 839 834 829 827 826 822 817 814 812 809 804 800 802 804 804 805 807 808 808 809 812 815 816 816 817 818 818 820 824 823 818 815 814 818 819 819 817 821 823 824 824 825 829 830 831 832 834 835 835 837 839 842 844 846 849 852 854 857 858 1082 1084 1084 1087 1093 1102 1118 1133 1135 1132 1131 1126 1117 1114 1113 1112 1114 1117 1109 1098 1085 1071 1061 1037 1007 991 978 994 994 950 911 885 874 878 880 880 881 878 876 876 879 881 883 880 876 875 879 879 877 875 877 879 880 881 882 883 883 881 876 878 880 879 876 872 878 887 889 889 889 880 863 848 841 854 876 887 887 883 879 879 879 881 880 878 878 876 879 886 886 885 878 874 889 918 930 931 929 929 922 897 873 863 867 863 847 830 812 790 791 816 841 863 878 894 915 938 959 975 990 1000 1002 998 992 980 973 966 958 946 929 906 874 839 816 812 822 832 841 848 849 848 846 845 840 837 834 831 829 826 820 813 810 809 806 805 805 807 805 806 810 812 810 810 815 818 819 819 820 821 821 823 824 823 818 815 815 816 817 817 820 822 825 827 828 829 831 832 833 835 836 836 839 840 841 841 842 843 844 849 851 854 856 1060 1061 1060 1062 1073 1083 1098 1118 1132 1133 1129 1126 1124 1118 1113 1109 1108 1111 1107 1100 1083 1054 1026 1009 991 973 949 970 973 939 908 887 878 878 878 881 883 879 879 880 885 886 884 880 877 877 879 879 878 877 879 883 886 887 886 885 886 884 881 884 886 882 877 875 882 888 889 889 889 879 862 853 853 863 881 897 890 887 887 886 886 886 883 882 883 884 884 887 888 886 880 878 891 921 929 928 930 935 928 903 878 884 889 883 867 853 834 799 810 836 859 877 896 912 932 951 972 987 1001 1012 1007 997 987 975 965 966 971 967 947 917 880 844 819 813 828 839 848 854 855 854 852 848 840 837 835 832 828 824 819 814 811 809 806 805 803 802 802 802 807 811 814 815 817 822 823 824 824 825 825 823 823 826 825 821 819 818 820 822 823 824 825 827 829 831 832 833 834 837 839 840 841 842 842 842 843 844 844 847 848 851 854 1043 1041 1040 1043 1056 1073 1089 1105 1119 1128 1131 1130 1128 1121 1112 1111 1112 1107 1101 1094 1076 1042 1009 990 972 951 938 953 943 917 893 884 885 880 880 882 882 880 883 885 887 887 883 880 878 878 878 878 879 880 881 885 888 889 890 890 891 888 884 892 892 885 883 883 884 887 891 893 891 884 872 865 862 864 881 898 892 891 892 892 893 891 885 886 888 889 885 888 886 881 881 881 896 928 939 935 931 936 930 912 894 902 909 903 888 868 845 815 821 846 869 893 918 942 959 968 990 1007 1012 1014 1006 995 986 977 969 976 983 983 964 927 886 849 824 819 830 844 849 855 859 859 857 849 842 838 834 829 825 820 816 814 812 808 806 805 804 803 804 805 809 813 818 818 817 822 826 828 828 828 827 824 826 828 827 824 822 822 824 825 825 826 828 829 829 831 832 833 835 837 840 840 841 841 843 845 850 849 847 846 850 857 861 1024 1028 1034 1042 1051 1057 1068 1084 1104 1123 1128 1132 1132 1128 1121 1116 1111 1103 1090 1073 1048 1019 994 972 947 930 920 924 915 900 888 886 889 887 884 880 879 882 888 890 890 889 885 884 883 883 883 882 883 882 882 885 889 891 894 894 894 890 886 895 897 889 891 890 886 887 893 895 893 892 883 873 864 862 876 894 897 895 895 894 894 892 887 886 893 894 890 890 888 884 886 884 898 924 939 938 931 939 939 923 906 915 918 915 905 884 856 835 848 865 885 909 932 955 972 987 1003 1014 1012 1003 994 984 977 975 974 978 988 993 980 938 893 855 830 825 839 850 853 856 860 857 847 842 850 843 834 830 825 820 819 816 811 809 808 808 807 807 810 811 815 818 822 821 818 820 825 829 831 831 829 827 830 831 830 828 827 826 826 825 825 827 829 829 830 832 834 834 836 839 841 841 843 844 844 846 850 852 851 851 854 858 860 1000 1009 1022 1034 1041 1042 1050 1067 1095 1113 1118 1130 1136 1135 1132 1126 1118 1106 1084 1057 1023 992 967 947 930 919 914 910 899 891 891 892 891 890 886 882 882 886 891 892 891 888 884 884 888 889 888 886 880 879 885 888 893 898 899 897 895 887 888 896 895 894 895 891 889 890 891 893 894 893 886 872 866 865 875 893 901 901 901 897 894 894 891 887 896 900 895 893 893 889 893 890 899 925 944 942 935 944 946 934 922 921 920 917 903 885 865 847 861 880 899 923 945 965 986 1001 1011 1015 1010 1002 993 988 984 980 980 978 982 993 985 947 901 861 833 826 836 850 858 860 863 858 841 850 867 856 844 837 829 825 828 823 815 811 808 808 807 807 811 813 816 820 824 826 822 821 825 828 833 833 832 831 833 835 835 833 831 830 829 828 826 827 828 830 832 833 834 836 839 841 842 845 846 847 848 849 850 852 854 855 856 856 858 975 985 998 1011 1022 1029 1039 1058 1086 1103 1115 1128 1137 1139 1139 1131 1121 1106 1079 1047 1012 980 955 934 923 914 914 907 893 888 891 891 889 889 887 884 882 886 890 891 891 888 885 885 889 892 891 887 882 881 885 889 895 900 902 901 901 895 890 896 899 893 896 899 894 892 894 900 897 897 895 881 873 871 881 897 904 905 904 901 900 898 894 890 898 902 896 897 898 894 899 898 904 933 951 950 943 948 950 944 938 929 922 913 895 880 867 858 870 891 912 935 959 980 998 1009 1010 1006 1004 1004 1000 995 995 991 988 982 984 995 991 954 909 865 837 830 840 858 865 865 866 856 842 865 879 869 853 836 831 835 834 825 822 817 807 807 810 811 813 816 819 821 826 830 827 826 828 831 836 836 831 834 836 838 838 835 834 834 833 832 829 828 829 831 833 834 835 838 841 842 843 845 848 849 849 851 852 854 858 859 859 859 862 954 961 975 992 1005 1017 1033 1056 1080 1101 1120 1128 1139 1141 1136 1128 1116 1095 1066 1033 1001 969 944 927 918 913 913 904 895 892 895 893 892 892 890 886 885 888 890 891 891 890 889 889 893 894 893 890 887 888 889 892 900 905 905 905 905 900 895 901 900 895 897 899 899 896 896 897 898 900 894 882 879 879 889 903 912 911 908 906 904 901 894 895 901 901 900 899 898 904 905 902 914 936 952 954 952 953 952 948 939 930 917 904 892 879 866 872 884 903 924 947 971 991 1005 1011 1009 1004 1005 1007 1005 1001 999 1000 998 990 993 1001 992 958 916 876 846 832 844 863 868 868 868 853 853 887 893 877 863 846 843 849 845 835 838 834 820 813 815 815 814 819 820 820 827 832 832 830 828 830 835 835 834 835 835 839 842 841 839 839 837 833 832 831 831 832 832 833 835 839 841 842 844 845 847 848 848 849 853 858 861 862 862 864 867 932 935 958 986 1004 1019 1035 1057 1081 1105 1120 1133 1145 1143 1131 1123 1109 1086 1050 1018 986 954 932 918 914 913 912 903 899 899 898 898 900 898 894 889 889 892 894 894 894 895 895 895 895 894 894 894 894 895 894 896 902 906 908 908 908 906 903 903 905 902 901 904 905 903 903 903 905 906 904 898 892 890 895 907 913 914 913 913 910 907 902 900 906 906 900 899 902 906 909 907 920 944 958 959 957 953 953 940 923 910 900 893 887 879 872 880 897 915 935 957 980 998 1008 1010 1011 1012 1011 1008 1004 1001 999 1004 1005 1000 999 1005 993 959 918 882 854 839 846 865 871 871 869 853 874 903 896 874 868 864 863 866 861 854 855 849 835 832 831 822 814 823 821 820 832 834 836 834 830 831 836 839 839 836 835 841 845 845 843 842 840 837 835 834 833 834 836 838 839 841 843 844 847 848 849 849 850 852 856 857 859 860 862 866 868 913 926 956 984 1002 1021 1038 1060 1079 1096 1114 1136 1146 1144 1131 1122 1112 1090 1047 1013 985 960 938 922 917 916 914 910 907 904 898 901 903 899 896 894 887 892 898 898 898 898 898 897 894 894 894 896 898 899 901 903 904 907 910 911 910 909 906 905 908 908 907 909 907 906 909 911 911 912 912 910 904 900 903 912 917 918 915 911 913 911 906 907 911 904 900 904 904 913 912 911 926 945 960 959 958 958 957 945 920 901 891 885 877 878 880 886 903 924 946 972 995 1007 1011 1012 1011 1012 1012 1009 1003 1000 1001 1007 1008 1007 1002 1007 999 967 923 886 860 843 844 864 874 877 870 857 890 909 893 874 872 879 883 883 880 873 876 867 850 849 849 835 821 831 830 825 839 837 836 838 833 832 837 839 838 835 833 838 846 849 848 845 842 838 837 836 833 832 837 845 843 846 849 845 849 851 851 851 853 853 857 860 861 862 864 867 871 910 929 955 981 1001 1019 1034 1056 1073 1093 1114 1134 1145 1149 1133 1114 1092 1067 1027 993 965 945 930 924 921 920 917 914 913 909 907 907 902 901 900 898 889 891 897 898 898 898 897 896 896 896 895 896 899 901 904 909 908 913 915 915 912 908 907 907 907 909 911 910 907 907 912 914 915 915 915 914 910 907 909 916 919 919 918 913 913 914 911 914 918 909 906 908 912 913 910 912 927 949 962 963 962 963 961 942 919 903 892 886 880 879 879 887 908 932 954 978 997 1010 1012 1015 1019 1017 1013 1011 1014 1006 1000 1010 1013 1009 1004 1010 1002 977 936 896 867 847 842 855 873 883 875 861 891 904 897 892 884 894 902 903 899 892 898 890 873 865 865 850 839 846 847 835 847 841 835 839 835 833 839 839 837 839 840 843 851 852 851 847 842 839 837 832 832 836 845 852 850 849 851 850 850 850 852 854 856 857 859 861 863 866 867 871 875 907 923 944 972 999 1018 1037 1059 1079 1096 1114 1132 1148 1151 1126 1101 1067 1036 1004 976 951 935 926 921 920 921 919 915 911 906 903 903 902 901 903 904 901 899 897 896 896 896 895 895 897 899 901 901 902 900 896 902 911 917 919 919 915 912 911 909 909 911 913 913 910 911 913 914 914 916 917 917 916 913 915 920 921 924 924 919 917 919 916 919 926 922 916 915 918 910 909 914 928 951 964 969 969 970 967 945 921 908 894 888 884 884 886 896 913 938 962 985 1004 1017 1021 1022 1024 1021 1019 1018 1018 1013 1010 1013 1013 1011 1010 1010 1008 988 951 907 874 854 845 854 873 885 877 865 888 901 908 909 900 914 919 920 914 914 919 907 897 894 882 863 863 865 860 849 856 844 838 842 838 837 840 841 842 843 849 853 857 856 854 849 843 842 837 826 831 845 857 862 862 860 857 859 859 853 854 857 860 862 863 862 865 870 870 875 878 901 916 938 971 998 1020 1040 1061 1083 1096 1111 1128 1151 1149 1111 1077 1038 1009 985 962 942 931 925 920 919 919 918 912 908 908 909 909 908 904 904 904 902 898 896 897 899 900 901 902 902 906 908 906 903 898 898 906 914 919 921 924 920 917 919 918 917 915 913 913 913 915 915 916 918 920 921 921 919 918 926 925 925 931 931 926 927 925 920 923 932 933 928 927 922 915 914 917 930 950 967 976 976 977 974 952 927 914 899 894 889 890 897 909 924 947 969 989 1008 1022 1031 1034 1032 1029 1028 1027 1024 1022 1018 1016 1018 1014 1017 1019 1016 993 956 919 887 864 850 853 869 887 883 865 882 898 913 932 930 923 936 944 936 932 937 920 917 914 896 882 884 883 876 866 861 849 841 844 844 840 838 842 844 841 847 857 858 858 857 852 845 845 836 829 838 857 869 874 877 876 869 867 868 855 854 859 862 864 865 865 870 873 872 875 876 903 924 955 984 1005 1025 1042 1057 1077 1093 1113 1130 1147 1137 1098 1060 1024 998 974 956 939 932 925 921 919 918 917 912 908 911 912 912 909 905 905 904 901 897 895 895 896 899 903 904 905 907 908 909 907 906 908 908 909 914 920 924 923 923 924 924 923 919 916 917 920 921 919 918 922 922 921 923 924 926 931 931 928 935 939 938 933 930 928 926 931 936 935 930 931 929 922 919 928 949 975 981 981 982 978 957 933 916 905 902 894 897 905 920 937 956 976 994 1010 1024 1036 1043 1043 1041 1038 1035 1030 1025 1023 1022 1023 1016 1019 1025 1026 1005 971 935 902 877 861 857 866 884 888 869 878 894 908 933 946 939 950 963 960 955 955 942 943 934 915 909 906 900 891 876 869 846 845 850 849 844 840 842 843 844 849 859 860 860 860 854 849 845 831 840 852 869 883 890 891 885 881 877 867 856 857 860 861 863 864 870 874 876 875 875 876 906 932 966 991 1012 1029 1045 1062 1079 1096 1122 1139 1139 1115 1091 1060 1030 999 969 952 938 930 924 921 918 917 917 915 912 912 912 910 909 907 907 906 903 900 898 898 897 900 903 903 904 905 908 909 908 907 907 906 907 912 920 926 926 926 926 924 922 920 918 920 922 922 921 921 924 924 924 925 926 930 932 932 932 937 943 942 935 934 934 933 933 936 937 935 938 933 929 927 928 945 969 983 985 983 981 970 940 916 900 907 900 903 914 929 947 965 987 1004 1017 1027 1036 1047 1051 1051 1046 1042 1036 1026 1029 1032 1027 1020 1019 1026 1035 1022 992 959 923 893 872 863 865 878 889 883 881 891 911 932 955 963 973 986 984 976 976 969 960 949 938 935 927 912 896 888 879 853 847 851 850 846 842 846 848 849 852 855 861 862 859 854 853 844 832 838 852 870 899 913 911 907 898 885 870 860 862 867 867 868 869 870 873 875 877 878 880 913 938 963 987 1006 1025 1043 1060 1076 1092 1116 1132 1107 1076 1056 1035 1011 981 955 937 925 921 922 922 921 918 916 915 914 914 914 913 912 910 910 909 905 904 902 903 904 904 905 905 906 907 910 911 909 905 904 909 913 917 920 927 931 930 929 927 924 924 921 924 925 923 926 928 929 930 930 930 931 934 938 937 936 940 945 948 941 935 937 943 941 938 940 940 941 939 932 933 932 941 967 987 989 986 983 974 948 924 909 910 910 913 929 949 967 983 998 1011 1019 1028 1038 1047 1055 1055 1050 1048 1042 1034 1037 1039 1034 1027 1026 1029 1040 1035 1012 979 943 911 887 872 870 878 887 897 888 887 914 931 953 973 988 1002 1004 995 995 989 977 968 962 953 941 920 907 902 880 852 848 850 849 846 850 854 856 855 853 858 862 863 856 858 852 847 850 862 872 881 910 931 931 922 905 883 863 861 865 868 870 871 873 874 876 880 882 882 881 917 944 964 984 999 1021 1042 1055 1071 1085 1109 1122 1094 1060 1033 1013 992 969 949 933 924 921 922 924 926 922 918 917 915 913 915 917 916 912 910 909 907 906 902 900 905 903 908 910 911 913 913 913 912 911 914 919 922 919 917 926 935 936 937 934 932 931 926 930 931 930 935 937 938 938 938 936 934 938 942 939 941 945 949 952 948 940 941 949 949 946 941 942 943 938 935 938 934 942 967 989 993 990 988 978 955 932 919 918 923 931 945 963 980 996 1009 1020 1028 1033 1035 1041 1052 1056 1055 1054 1045 1039 1045 1044 1042 1038 1044 1041 1047 1052 1033 998 962 931 903 882 874 883 887 897 897 888 903 914 933 963 987 1003 1013 1014 1010 1002 996 990 980 963 947 929 925 912 880 854 846 850 848 849 859 865 865 863 855 862 866 865 855 865 856 860 866 873 886 904 936 954 949 933 908 882 862 862 868 869 872 873 875 875 876 879 881 882 883 916 938 956 974 989 1007 1026 1040 1054 1067 1082 1086 1075 1044 1014 990 968 947 932 925 925 924 924 925 926 924 921 919 917 914 918 919 914 911 911 909 904 905 906 909 906 903 907 910 914 916 917 918 919 919 922 924 922 914 917 929 933 938 940 940 938 934 930 933 936 939 946 948 948 947 946 942 936 940 943 940 943 951 955 956 953 950 947 950 954 953 947 947 945 939 940 941 934 944 967 992 1000 996 993 984 967 946 932 927 937 947 958 976 994 1011 1025 1034 1039 1041 1041 1048 1055 1057 1057 1054 1048 1045 1054 1055 1054 1052 1050 1047 1052 1052 1039 1015 984 952 920 892 878 885 893 897 902 902 902 901 921 960 984 999 1011 1023 1026 1018 1011 1002 988 967 952 942 944 922 890 866 848 852 851 854 866 872 872 870 863 866 871 866 861 868 867 873 875 876 895 926 954 970 961 934 902 876 863 863 868 870 873 874 876 878 879 881 883 884 886 909 921 935 953 968 983 1001 1017 1030 1042 1049 1047 1051 1035 1007 980 956 936 922 919 924 924 924 924 924 924 922 922 922 920 920 919 916 915 913 910 908 906 912 915 911 905 905 909 912 914 916 917 918 919 920 921 926 926 926 921 926 938 944 946 946 942 931 935 941 944 952 955 955 955 953 949 944 940 950 948 942 953 958 960 961 961 952 952 958 958 956 954 949 945 943 946 937 945 966 994 1005 1002 999 993 981 963 944 937 949 960 968 986 1005 1025 1042 1053 1056 1053 1052 1056 1056 1055 1060 1060 1053 1051 1063 1068 1068 1065 1059 1061 1062 1059 1052 1033 1001 971 937 903 885 885 897 901 902 903 907 902 901 936 960 979 996 1013 1023 1022 1017 1004 987 967 961 966 960 935 898 867 856 852 854 862 873 876 874 875 875 874 872 866 873 868 880 880 879 889 905 935 958 976 964 929 896 873 863 864 868 870 873 876 879 881 882 885 887 887 889 904 908 915 927 941 956 976 989 1003 1015 1019 1019 1025 1022 1001 973 949 932 922 921 927 927 927 927 926 925 924 925 925 923 921 919 917 916 915 915 910 911 919 920 912 911 909 914 915 915 916 917 919 920 921 926 932 937 936 922 928 944 947 950 952 942 934 942 944 945 951 958 962 961 958 956 949 947 954 954 953 958 960 962 966 966 959 959 964 960 955 956 953 944 949 955 946 952 964 989 1005 1007 1007 1003 994 979 956 951 959 974 983 999 1016 1036 1057 1072 1076 1074 1072 1068 1062 1056 1059 1062 1057 1052 1062 1070 1072 1074 1074 1076 1071 1069 1063 1046 1016 986 955 920 894 889 897 904 903 907 910 911 912 914 935 968 987 1003 1015 1017 1018 1016 999 983 985 981 962 934 900 873 859 854 858 866 873 877 878 882 881 878 875 871 884 877 887 890 891 902 910 936 973 980 957 923 892 873 864 865 870 872 874 878 880 881 881 884 888 890 892 907 909 910 915 925 936 947 960 976 993 990 990 992 988 975 954 934 923 924 928 932 932 932 930 928 928 927 925 925 923 922 921 918 916 917 922 913 916 925 924 914 916 918 919 918 918 920 922 924 926 927 933 937 939 941 936 937 940 948 953 954 948 940 945 950 951 955 961 966 966 961 961 957 953 958 964 959 961 966 969 970 970 968 968 970 962 957 957 956 951 958 965 956 954 960 986 1008 1013 1012 1013 1004 993 977 964 972 991 1005 1018 1032 1050 1073 1087 1093 1094 1093 1082 1074 1065 1059 1063 1059 1056 1058 1065 1070 1079 1085 1084 1080 1078 1071 1056 1035 1005 975 942 909 894 898 903 906 913 915 919 925 911 922 957 974 990 1002 1006 1019 1025 1010 998 987 969 956 929 896 871 858 860 872 879 880 881 881 882 881 872 874 886 887 886 894 901 914 923 940 964 987 977 947 917 890 873 866 867 873 874 877 879 880 881 882 885 889 892 895 904 905 905 902 906 919 927 936 954 969 972 966 965 963 959 949 936 927 931 934 934 933 933 930 928 927 926 925 925 924 923 923 923 920 918 928 924 921 927 925 920 920 924 922 919 921 925 928 931 933 934 935 936 937 943 947 944 935 945 955 955 954 946 949 956 958 962 967 971 971 964 966 965 958 962 970 967 969 973 975 975 974 972 973 973 960 962 964 966 955 960 972 963 956 962 980 997 1012 1019 1019 1015 1008 994 981 990 1006 1017 1031 1051 1071 1085 1092 1097 1099 1096 1090 1081 1077 1075 1073 1064 1063 1064 1064 1069 1076 1084 1088 1089 1086 1076 1065 1048 1017 989 953 912 899 899 903 910 917 920 923 927 920 919 941 962 978 987 996 1019 1028 1019 1006 985 960 943 917 886 868 861 868 885 888 886 885 886 885 884 875 876 899 903 900 903 916 929 938 945 964 985 978 945 915 889 872 867 868 868 869 873 876 877 881 884 888 893 895 895 900 899 899 897 902 914 921 927 936 943 947 945 944 948 949 944 943 941 942 941 937 934 932 932 931 929 926 926 926 926 926 926 925 919 922 930 933 931 930 924 928 929 924 928 924 926 930 932 934 938 938 934 935 938 944 947 948 942 946 955 958 958 954 958 961 965 970 974 977 977 972 974 970 962 962 970 975 977 978 978 976 979 979 982 980 968 967 972 973 963 962 975 972 964 965 972 989 1007 1020 1027 1030 1027 1017 1009 1010 1026 1041 1049 1067 1092 1105 1098 1095 1096 1098 1094 1086 1084 1081 1076 1071 1066 1063 1070 1070 1070 1077 1086 1090 1088 1076 1069 1048 1010 978 944 912 901 905 909 914 920 923 925 930 931 922 928 954 969 977 991 1011 1023 1022 1009 988 959 929 901 877 865 862 873 890 892 890 889 887 884 882 883 890 912 916 909 914 931 945 953 953 962 976 971 944 911 883 871 870 871 871 873 875 877 880 885 887 888 894 896 893 903 902 902 902 906 909 912 916 921 927 936 950 952 955 955 953 957 954 948 941 934 938 939 934 930 927 926 929 929 926 928 930 930 927 924 930 937 939 937 933 932 936 935 932 930 933 930 934 937 939 942 941 942 944 945 949 952 954 955 951 959 964 964 965 966 971 975 977 980 981 982 980 973 966 962 967 976 982 984 982 979 983 988 990 986 976 973 978 978 969 968 979 982 973 966 971 984 1003 1017 1031 1039 1043 1040 1031 1025 1040 1056 1066 1082 1104 1120 1115 1101 1100 1099 1097 1093 1091 1086 1082 1077 1071 1073 1080 1080 1078 1077 1083 1086 1082 1071 1068 1049 1012 978 941 913 906 912 922 920 922 925 928 932 935 928 927 939 953 970 986 1001 1011 1019 1008 989 957 924 893 874 865 866 876 891 895 893 891 886 881 878 892 909 923 925 920 929 946 962 967 965 965 965 958 940 910 883 872 874 873 873 877 875 875 881 883 884 887 893 895 896 909 907 906 907 909 905 905 911 918 927 941 959 964 965 960 957 959 958 949 938 937 946 949 943 931 930 931 931 931 930 931 935 931 931 932 932 936 945 944 941 936 938 938 937 939 939 931 931 934 939 946 949 951 949 956 954 958 960 961 955 960 964 965 971 972 973 974 975 982 986 986 984 978 969 969 970 973 984 989 989 987 988 993 994 988 978 980 983 984 974 975 984 990 980 970 974 979 997 1012 1031 1046 1057 1059 1053 1049 1057 1066 1080 1098 1115 1127 1127 1112 1106 1102 1099 1096 1093 1088 1086 1081 1075 1075 1082 1088 1090 1086 1082 1080 1075 1067 1060 1042 1006 973 940 915 910 913 922 926 926 929 932 934 936 938 935 931 943 963 974 986 1002 1019 1014 989 956 924 892 872 865 868 876 894 897 896 892 890 889 888 905 922 930 938 944 945 959 974 976 969 963 954 949 937 910 889 879 879 876 881 886 875 873 878 880 885 894 899 897 898 908 905 908 913 921 920 918 927 939 949 956 963 966 966 961 954 952 955 951 939 946 955 956 952 939 935 935 935 934 932 933 937 934 932 938 939 939 946 950 949 944 942 946 947 948 947 944 940 938 943 950 952 953 952 956 959 966 965 963 966 969 968 967 976 979 978 975 983 989 994 994 990 985 979 977 983 973 982 995 996 993 999 1003 1003 998 992 992 991 989 985 981 988 993 989 981 977 977 990 1010 1033 1054 1067 1077 1079 1077 1078 1081 1091 1109 1123 1130 1132 1127 1117 1109 1102 1099 1096 1091 1089 1084 1080 1083 1090 1095 1097 1093 1087 1080 1072 1060 1053 1033 1003 968 935 918 913 917 927 930 934 933 933 938 940 942 940 931 939 957 967 983 1001 1018 1013 989 953 921 891 871 865 871 886 895 892 892 893 897 898 899 918 926 930 944 960 960 972 980 976 965 954 948 941 927 904 891 886 884 889 905 901 881 876 876 879 895 911 912 902 898 912 908 931 943 949 953 950 956 967 970 971 968 967 965 964 958 954 956 955 948 952 961 961 956 951 941 936 938 936 935 937 939 939 937 943 945 944 947 954 956 951 949 955 957 957 953 955 949 944 946 949 952 955 956 958 963 968 969 968 970 975 971 968 976 983 981 979 987 991 996 997 993 988 978 985 991 984 992 994 994 999 1003 1006 1006 999 992 1002 1002 995 989 989 993 996 993 984 980 985 994 1018 1037 1055 1071 1087 1096 1090 1093 1093 1102 1116 1125 1129 1137 1140 1135 1122 1109 1109 1105 1099 1095 1087 1087 1093 1099 1100 1098 1094 1090 1082 1072 1055 1045 1024 999 962 931 919 917 921 933 935 939 938 938 941 941 944 943 938 937 947 962 981 999 1016 1013 988 953 920 889 874 871 875 884 898 894 893 900 910 922 924 928 939 949 965 977 981 989 987 972 957 947 941 932 920 905 898 895 898 906 918 912 891 878 875 877 898 924 918 905 900 931 934 945 953 956 957 960 961 963 970 970 969 970 968 964 961 961 960 955 960 965 966 965 963 960 954 941 939 940 942 944 943 944 945 948 948 948 951 955 959 956 956 958 963 966 958 958 955 951 949 950 953 958 960 962 965 967 972 972 971 976 975 972 973 979 985 984 989 996 1001 999 994 991 982 987 998 995 995 999 1002 1005 1007 1010 1007 1003 998 1008 1005 999 997 1001 1003 1001 998 992 989 990 1003 1019 1039 1060 1078 1090 1104 1108 1105 1104 1118 1119 1128 1131 1135 1144 1148 1140 1131 1127 1121 1113 1104 1098 1092 1087 1097 1101 1098 1093 1088 1080 1071 1061 1041 1017 991 957 931 925 925 926 939 941 944 944 944 942 942 945 945 943 937 943 958 977 994 1009 1010 987 948 915 887 875 876 878 889 901 898 903 916 931 950 942 938 956 969 984 996 1003 1004 989 965 951 942 936 926 913 913 909 913 920 923 916 899 880 877 879 889 909 933 921 906 915 942 945 950 955 959 962 965 966 964 970 972 972 973 971 964 961 963 964 960 961 970 968 961 964 967 961 951 947 951 945 946 950 952 952 947 948 953 955 958 963 964 963 964 971 974 968 961 963 958 959 960 957 959 962 966 968 970 973 974 976 979 979 976 974 981 989 987 989 1000 1005 1002 996 991 987 989 1002 1002 1000 1006 1012 1014 1012 1012 1009 1006 1004 1010 1008 1004 1002 1006 1006 1005 1004 1000 997 993 1003 1022 1042 1067 1087 1094 1106 1116 1117 1115 1127 1128 1134 1137 1138 1144 1146 1144 1141 1139 1132 1128 1120 1112 1105 1094 1105 1107 1105 1101 1096 1087 1075 1065 1044 1017 991 951 927 935 933 936 943 945 950 949 948 947 946 943 945 945 941 946 953 969 984 996 1004 987 949 913 888 879 881 882 893 902 905 917 936 956 975 960 949 970 988 1000 1014 1019 1011 991 969 954 941 933 923 915 920 922 928 931 926 910 899 889 887 891 893 915 938 934 925 927 946 950 954 958 961 965 966 966 967 969 968 967 965 965 965 966 967 968 963 964 971 966 965 970 969 957 950 953 956 954 953 954 956 956 953 951 952 955 963 972 969 967 973 979 979 973 965 962 967 971 966 958 957 963 972 976 973 976 979 980 984 981 975 980 991 992 989 993 999 1006 1004 999 991 992 995 1003 1008 1009 1012 1017 1020 1019 1017 1015 1013 1012 1013 1014 1013 1009 1011 1011 1013 1012 1007 1004 999 1002 1022 1046 1073 1094 1108 1111 1120 1130 1129 1136 1140 1136 1144 1146 1147 1142 1142 1144 1144 1140 1137 1131 1121 1109 1100 1106 1115 1111 1106 1100 1091 1076 1056 1029 1001 971 944 930 934 934 935 939 945 949 951 951 952 951 946 945 945 946 944 944 960 973 985 996 988 954 913 890 882 884 884 890 905 914 931 952 979 997 980 962 980 1003 1016 1029 1025 1007 988 970 956 940 930 926 923 925 934 942 936 926 916 910 909 909 903 904 923 946 950 942 931 948 954 958 958 959 963 966 965 966 966 966 964 964 964 967 970 970 970 967 968 969 968 971 973 967 957 953 958 959 959 961 961 959 959 956 957 957 955 963 975 976 974 981 985 981 979 977 973 972 979 975 968 963 970 981 982 978 978 979 985 986 984 979 982 988 994 998 999 999 1008 1007 1004 1002 1000 1001 1008 1012 1014 1017 1020 1023 1025 1025 1024 1023 1022 1021 1021 1020 1019 1020 1020 1021 1018 1010 1008 1003 1004 1020 1049 1078 1100 1120 1118 1121 1137 1139 1142 1148 1139 1151 1151 1146 1139 1138 1141 1144 1143 1140 1134 1126 1109 1099 1108 1116 1114 1110 1102 1087 1073 1051 1021 987 949 931 942 945 939 942 946 952 957 958 957 955 953 949 951 950 945 945 948 958 971 986 991 969 934 906 888 882 885 890 898 910 924 944 964 993 1011 995 980 995 1011 1027 1037 1022 1000 982 967 955 943 933 933 934 934 944 952 944 936 932 928 930 927 916 923 937 951 952 943 928 951 953 955 955 954 958 966 966 963 962 965 966 967 967 968 967 969 971 971 971 968 972 974 973 968 963 960 961 963 963 965 964 962 963 959 957 961 964 971 978 983 984 990 994 989 987 985 980 977 982 985 983 978 980 989 986 983 984 980 989 991 986 988 990 992 999 1004 998 1001 1011 1011 1009 1006 1002 1006 1010 1015 1020 1024 1025 1027 1029 1029 1027 1025 1027 1029 1027 1025 1022 1025 1024 1020 1017 1012 1009 1006 1008 1023 1052 1082 1104 1125 1130 1127 1139 1140 1143 1151 1145 1151 1151 1146 1141 1139 1139 1140 1143 1141 1134 1128 1115 1104 1110 1114 1118 1117 1106 1088 1073 1050 1017 982 944 930 949 950 943 946 953 956 960 963 964 959 955 953 953 949 948 949 951 954 965 983 982 956 922 898 886 885 885 890 904 919 943 968 987 1008 1028 1024 1015 1021 1016 1032 1040 1020 1006 987 972 961 947 939 945 950 946 954 957 955 951 948 948 945 937 932 941 947 944 936 930 923 949 953 955 956 953 955 964 963 963 964 962 962 962 963 965 966 970 973 972 970 968 975 975 975 973 968 967 964 968 969 968 967 967 969 967 960 964 974 981 984 988 991 996 1000 999 997 993 987 985 985 990 992 990 990 994 991 987 992 989 990 992 992 990 991 999 1004 1008 1006 1004 1009 1011 1012 1011 1009 1010 1013 1019 1025 1029 1031 1032 1032 1032 1032 1031 1034 1037 1037 1037 1035 1034 1028 1025 1023 1020 1018 1014 1013 1027 1059 1085 1110 1135 1151 1148 1142 1139 1145 1151 1149 1143 1150 1151 1147 1145 1141 1136 1140 1141 1136 1131 1125 1117 1116 1116 1122 1122 1112 1092 1072 1046 1013 979 947 942 954 954 949 949 958 960 963 968 968 961 955 956 954 954 951 953 956 956 969 980 969 939 912 894 887 888 898 907 917 931 953 980 1003 1023 1042 1032 1031 1032 1028 1040 1040 1020 1004 989 978 966 949 948 958 964 959 967 967 958 959 962 953 950 948 950 948 941 933 927 925 925 946 950 952 953 954 955 958 959 961 963 963 963 964 965 969 970 971 972 972 973 974 976 978 978 975 971 972 971 970 973 974 973 974 974 973 971 971 978 986 991 995 996 999 1001 1004 1006 1001 994 991 990 992 996 998 998 996 996 996 999 1001 990 991 998 990 992 1004 1007 1011 1015 1010 1011 1015 1018 1019 1010 1014 1019 1026 1030 1035 1039 1038 1035 1034 1035 1036 1039 1040 1040 1037 1036 1037 1035 1031 1025 1022 1022 1014 1023 1037 1062 1088 1114 1137 1152 1147 1138 1141 1146 1151 1148 1146 1151 1152 1150 1148 1142 1137 1136 1138 1141 1139 1133 1131 1128 1124 1123 1122 1114 1090 1059 1031 1004 974 945 953 963 961 957 957 962 966 969 974 973 966 957 957 955 957 950 952 963 965 975 979 959 927 905 894 890 891 909 922 932 950 968 997 1022 1045 1059 1046 1043 1039 1038 1046 1040 1021 1005 991 979 965 953 958 973 982 975 978 976 965 965 965 957 961 958 952 947 942 937 932 930 932 951 954 956 956 958 960 962 959 959 963 965 966 966 966 968 971 971 971 972 975 977 978 977 976 973 969 973 976 976 976 972 972 977 973 974 979 983 988 995 1000 1005 1003 1004 1006 1006 1008 1005 996 995 997 997 1001 1004 1004 1000 1000 1004 1006 1008 995 994 1003 997 998 1008 1010 1013 1017 1016 1018 1021 1025 1025 1016 1019 1024 1030 1035 1040 1045 1042 1039 1038 1040 1041 1044 1044 1044 1043 1043 1044 1042 1035 1029 1025 1025 1017 1022 1043 1072 1102 1127 1148 1158 1149 1142 1140 1150 1156 1154 1150 1150 1150 1154 1155 1151 1147 1144 1142 1144 1147 1146 1143 1139 1132 1127 1121 1108 1083 1049 1015 990 968 946 960 969 966 966 962 966 971 973 982 984 974 962 958 958 954 949 952 971 974 976 978 955 925 901 895 894 899 919 934 946 966 990 1015 1041 1064 1068 1054 1046 1042 1043 1049 1040 1021 1004 990 976 970 968 968 984 991 984 988 982 980 975 965 968 965 955 946 943 941 938 935 934 933 953 955 957 957 958 960 961 961 960 961 965 968 968 969 971 971 972 974 975 976 977 977 977 977 976 975 975 973 974 977 976 977 979 979 982 985 988 991 998 1004 1008 1007 1008 1009 1009 1008 1008 1005 1003 1005 1002 1006 1009 1009 1008 1005 1007 1013 1014 1008 1000 1005 1009 1006 1011 1014 1015 1017 1022 1023 1026 1029 1030 1028 1029 1030 1035 1039 1044 1047 1045 1044 1043 1046 1049 1050 1047 1047 1049 1051 1052 1050 1042 1035 1031 1026 1022 1029 1052 1079 1108 1132 1153 1156 1147 1146 1145 1152 1159 1159 1154 1153 1152 1152 1154 1155 1151 1147 1149 1150 1152 1152 1150 1148 1141 1130 1122 1107 1080 1057 1028 997 974 952 970 970 974 973 969 971 978 980 988 990 980 965 966 963 957 954 961 978 980 981 975 949 916 898 898 901 918 932 946 959 979 1010 1032 1054 1072 1069 1052 1045 1044 1046 1046 1036 1019 1000 986 975 979 984 978 981 989 986 997 990 992 981 973 970 957 947 943 941 939 938 937 936 934 952 953 954 956 957 958 960 962 962 962 967 971 972 973 973 973 974 976 977 977 977 977 979 980 977 975 978 980 980 981 980 981 981 982 986 990 994 997 1002 1008 1009 1008 1008 1006 1011 1012 1012 1013 1011 1008 1007 1012 1017 1016 1013 1009 1007 1018 1022 1016 1008 1006 1010 1010 1013 1018 1020 1024 1026 1024 1028 1033 1036 1036 1037 1040 1043 1045 1047 1049 1049 1049 1050 1054 1057 1057 1052 1048 1049 1055 1057 1055 1050 1044 1040 1032 1026 1039 1060 1081 1107 1131 1157 1156 1149 1150 1148 1149 1159 1161 1158 1157 1154 1153 1156 1157 1152 1150 1151 1150 1150 1149 1149 1146 1139 1130 1118 1106 1092 1069 1035 998 973 951 973 976 979 981 974 976 983 982 993 994 982 967 972 966 959 956 968 983 986 978 963 936 908 905 914 910 926 941 954 976 999 1023 1047 1061 1073 1070 1051 1046 1046 1045 1038 1027 1017 1001 987 983 991 992 984 977 989 993 1006 1005 998 984 985 967 949 944 944 942 940 939 939 939 937 953 954 956 957 958 959 962 964 963 966 970 973 975 975 976 977 977 978 978 978 979 980 982 982 979 976 981 986 986 985 984 986 986 988 991 994 997 1002 1006 1010 1011 1010 1010 1009 1014 1015 1015 1016 1016 1014 1014 1017 1022 1023 1022 1018 1016 1018 1024 1024 1016 1011 1012 1018 1020 1022 1024 1026 1026 1026 1031 1037 1038 1036 1038 1043 1047 1051 1054 1056 1056 1057 1060 1064 1066 1068 1068 1063 1058 1062 1061 1057 1056 1053 1047 1042 1035 1046 1066 1087 1113 1139 1163 1162 1156 1154 1150 1152 1162 1162 1161 1160 1159 1159 1162 1161 1157 1154 1151 1151 1149 1147 1146 1142 1134 1128 1123 1115 1104 1077 1043 1008 974 959 977 982 985 984 975 978 988 986 1000 999 987 976 982 972 960 963 976 989 987 971 949 926 912 923 934 925 932 946 961 986 1006 1024 1038 1051 1066 1064 1046 1045 1046 1044 1034 1020 1013 1002 996 1002 1002 995 988 986 999 1005 1013 1015 1002 995 990 965 950 946 946 944 943 943 943 941 939 954 954 956 957 958 959 961 964 964 967 971 973 974 976 979 980 981 981 981 982 982 982 983 982 982 981 982 985 987 988 989 990 991 994 997 999 1002 1007 1010 1009 1011 1014 1014 1013 1014 1014 1019 1020 1020 1020 1020 1021 1024 1025 1024 1024 1018 1014 1024 1031 1025 1014 1014 1020 1023 1028 1030 1027 1027 1031 1036 1041 1042 1041 1042 1044 1047 1052 1056 1058 1063 1067 1066 1067 1073 1077 1074 1065 1066 1070 1068 1063 1060 1054 1041 1035 1053 1069 1086 1104 1128 1153 1168 1163 1156 1157 1161 1167 1169 1163 1159 1161 1165 1166 1165 1164 1162 1156 1151 1154 1150 1147 1145 1141 1135 1133 1131 1123 1107 1080 1047 1014 981 965 980 985 990 989 981 982 990 992 997 999 993 986 988 974 963 967 984 993 981 963 943 926 918 927 940 937 934 945 964 981 1000 1018 1034 1050 1066 1063 1050 1047 1047 1044 1033 1022 1024 1014 1007 1017 1006 997 991 988 996 1005 1010 1014 1009 1002 985 964 951 948 947 945 945 945 945 944 941 954 955 957 957 959 960 962 964 966 969 971 974 976 977 977 979 979 981 982 982 982 985 985 985 982 980 982 984 988 993 993 989 991 994 1000 1003 1008 1012 1013 1009 1011 1017 1017 1017 1015 1016 1021 1023 1024 1026 1026 1027 1028 1029 1029 1029 1021 1016 1024 1033 1031 1020 1018 1019 1024 1030 1034 1032 1032 1032 1036 1043 1045 1045 1048 1052 1054 1058 1061 1063 1068 1070 1070 1072 1077 1083 1083 1076 1076 1081 1078 1072 1066 1057 1047 1044 1067 1082 1099 1117 1145 1168 1174 1172 1164 1163 1168 1166 1173 1168 1164 1163 1163 1162 1162 1161 1158 1156 1153 1151 1149 1147 1144 1142 1144 1144 1132 1120 1105 1083 1046 1012 986 963 982 990 995 996 991 987 992 996 992 998 1001 992 986 978 974 975 992 998 981 964 944 935 935 934 944 943 937 947 961 979 999 1017 1032 1044 1056 1057 1054 1047 1043 1040 1029 1028 1031 1020 1019 1024 1008 996 989 993 1002 1006 1011 1012 1010 1001 982 960 954 954 953 951 950 949 949 948 943 955 957 957 958 960 962 963 964 967 969 970 974 977 979 980 981 982 984 985 985 986 986 986 986 985 987 985 982 986 991 992 992 993 995 998 1001 1009 1013 1016 1016 1016 1018 1021 1024 1025 1024 1019 1019 1026 1031 1032 1031 1033 1034 1037 1040 1033 1025 1028 1035 1033 1024 1021 1021 1026 1030 1034 1039 1042 1036 1038 1045 1048 1049 1052 1058 1062 1065 1068 1071 1075 1075 1073 1076 1081 1087 1089 1085 1087 1090 1088 1083 1083 1073 1068 1071 1087 1101 1117 1135 1157 1175 1177 1169 1166 1171 1170 1168 1173 1175 1170 1166 1164 1163 1163 1162 1161 1160 1154 1149 1153 1150 1149 1153 1157 1149 1135 1125 1108 1085 1058 1023 988 967 987 1000 1001 1000 996 991 999 999 998 1000 1005 997 984 990 992 990 1002 1004 989 968 944 934 946 947 949 945 942 946 961 981 1002 1019 1031 1039 1046 1053 1055 1048 1043 1038 1032 1035 1041 1032 1031 1029 1015 1002 992 995 1009 1006 1004 1000 998 992 979 959 954 954 954 953 953 953 953 954 952 954 955 955 956 958 959 962 966 968 969 971 975 979 981 984 985 984 982 986 987 987 986 985 985 983 983 980 982 988 991 993 994 989 996 1003 1007 1012 1019 1026 1024 1022 1024 1026 1030 1033 1031 1027 1028 1030 1032 1033 1037 1041 1034 1039 1046 1040 1029 1036 1042 1037 1024 1023 1028 1031 1034 1037 1043 1049 1043 1044 1048 1050 1054 1056 1060 1065 1069 1073 1077 1082 1082 1078 1079 1085 1091 1094 1092 1097 1098 1097 1095 1101 1100 1099 1105 1112 1121 1131 1153 1169 1179 1176 1167 1169 1173 1168 1168 1174 1178 1175 1171 1167 1163 1162 1160 1158 1156 1152 1148 1149 1148 1153 1156 1156 1149 1137 1128 1113 1089 1061 1030 1003 975 978 1005 1004 1003 1002 996 999 1006 1004 1006 1008 1006 1000 1005 1007 1000 1009 1005 990 966 948 945 957 954 950 948 946 944 960 980 998 1015 1028 1037 1045 1052 1053 1050 1044 1041 1037 1038 1049 1046 1040 1033 1023 1010 999 997 1010 1005 996 987 980 981 971 962 959 957 956 956 955 954 955 954 956 951 950 951 953 955 958 961 965 968 970 973 976 978 982 985 986 984 982 986 988 989 988 987 988 987 987 986 989 993 993 996 1000 999 1005 1009 1008 1013 1022 1031 1032 1032 1032 1029 1032 1036 1037 1036 1034 1032 1037 1040 1042 1045 1044 1045 1042 1042 1040 1036 1044 1045 1039 1035 1033 1032 1036 1040 1044 1048 1046 1046 1053 1056 1058 1061 1064 1068 1072 1076 1081 1085 1087 1088 1089 1092 1097 1100 1100 1103 1107 1108 1108 1114 1127 1130 1131 1135 1137 1144 1166 1179 1181 1173 1169 1173 1171 1168 1168 1172 1178 1178 1173 1166 1163 1162 1162 1160 1162 1161 1157 1149 1150 1158 1160 1151 1141 1132 1120 1108 1087 1066 1042 1019 992 976 1001 1010 1011 1010 1003 1006 1010 1010 1010 1011 1017 1018 1020 1023 1020 1012 1001 984 956 963 971 973 969 957 953 951 948 950 973 993 1007 1020 1029 1037 1046 1049 1048 1045 1043 1040 1039 1049 1051 1045 1035 1025 1015 1005 1003 1009 1005 993 982 969 971 964 964 965 963 963 960 959 958 957 954 955 943 943 943 948 953 958 961 965 968 973 977 976 973 979 982 983 984 985 986 987 988 988 989 990 990 991 991 993 995 996 998 1004 1007 1008 1010 1011 1018 1029 1035 1036 1035 1033 1033 1037 1040 1041 1042 1042 1040 1043 1044 1045 1046 1048 1050 1049 1045 1042 1042 1049 1051 1047 1041 1037 1033 1039 1044 1047 1045 1046 1055 1059 1060 1062 1067 1071 1074 1079 1084 1088 1091 1095 1097 1098 1102 1104 1108 1110 1110 1115 1115 1118 1124 1139 1150 1157 1159 1159 1166 1176 1180 1179 1171 1170 1177 1171 1171 1169 1172 1179 1179 1174 1166 1164 1164 1164 1166 1168 1166 1161 1153 1151 1157 1158 1145 1135 1127 1116 1104 1089 1074 1055 1032 1007 991 994 1007 1013 1013 1006 1006 1012 1014 1014 1014 1018 1026 1031 1027 1018 1001 988 975 962 971 975 977 974 964 956 953 954 952 969 998 1007 1015 1026 1034 1043 1048 1049 1048 1045 1044 1048 1054 1054 1048 1041 1031 1022 1014 1009 1013 1008 993 983 973 967 964 964 967 969 969 964 962 961 960 958 955 928 930 931 936 943 952 960 967 970 975 980 977 972 978 982 983 984 985 985 985 986 987 990 991 991 991 992 994 997 999 999 1005 1008 1006 1011 1015 1023 1033 1038 1039 1037 1033 1037 1042 1044 1045 1047 1049 1049 1050 1051 1051 1051 1053 1056 1057 1052 1045 1049 1054 1055 1056 1051 1047 1045 1045 1048 1054 1054 1055 1056 1054 1060 1065 1071 1075 1081 1086 1093 1099 1101 1103 1103 1105 1111 1113 1115 1116 1118 1119 1121 1123 1125 1131 1159 1184 1193 1190 1188 1185 1183 1180 1176 1172 1181 1178 1173 1171 1173 1181 1183 1179 1175 1169 1164 1161 1168 1168 1163 1159 1155 1149 1153 1149 1137 1132 1126 1116 1103 1091 1081 1065 1043 1024 1010 995 1006 1015 1013 1012 1012 1017 1017 1017 1015 1017 1025 1028 1022 1011 992 984 981 977 978 979 981 980 968 958 955 957 953 966 1001 1015 1022 1029 1034 1040 1045 1050 1052 1050 1049 1049 1053 1053 1049 1045 1040 1031 1021 1014 1015 1012 999 986 974 973 972 972 972 970 969 967 965 962 958 959 960 926 927 930 934 939 945 952 960 968 973 980 982 981 982 983 985 988 988 988 989 989 990 993 994 995 998 1001 1002 1004 1005 1006 1009 1010 1012 1015 1016 1023 1034 1039 1041 1040 1037 1041 1045 1045 1045 1051 1054 1055 1056 1057 1057 1058 1061 1062 1062 1058 1051 1055 1059 1061 1066 1064 1059 1055 1047 1047 1057 1062 1062 1057 1053 1064 1070 1075 1080 1086 1090 1097 1104 1107 1104 1106 1112 1117 1119 1119 1120 1120 1122 1125 1131 1132 1129 1149 1177 1200 1209 1200 1189 1183 1178 1172 1170 1176 1179 1174 1173 1175 1180 1184 1186 1181 1172 1159 1159 1167 1169 1168 1165 1159 1150 1151 1143 1131 1127 1122 1112 1098 1085 1076 1068 1050 1036 1022 1004 1013 1021 1015 1019 1023 1023 1022 1020 1018 1019 1024 1022 1012 1002 986 987 990 988 987 985 985 982 969 959 959 957 951 958 994 1020 1034 1038 1038 1041 1047 1053 1054 1052 1051 1050 1051 1051 1051 1051 1044 1036 1028 1021 1020 1017 997 983 973 970 973 974 975 972 970 969 968 966 963 960 960 926 927 929 933 935 939 943 950 959 970 980 986 984 983 985 986 987 986 988 989 989 990 992 993 994 998 1002 1005 1008 1011 1014 1020 1019 1020 1026 1022 1026 1038 1042 1042 1040 1046 1049 1049 1044 1045 1052 1058 1060 1061 1061 1062 1063 1067 1068 1068 1063 1059 1061 1065 1069 1074 1073 1069 1064 1056 1055 1059 1065 1065 1060 1056 1064 1072 1078 1084 1090 1095 1101 1105 1110 1109 1112 1117 1120 1123 1123 1125 1126 1128 1133 1138 1139 1135 1140 1162 1193 1218 1214 1200 1190 1183 1177 1172 1173 1179 1180 1176 1173 1180 1189 1190 1183 1177 1168 1163 1158 1163 1162 1157 1154 1147 1142 1136 1127 1121 1114 1102 1086 1074 1065 1057 1041 1027 1020 1012 1018 1024 1021 1016 1023 1025 1025 1026 1026 1026 1023 1015 1002 995 987 994 996 996 995 992 986 978 973 968 965 956 949 951 981 1017 1036 1042 1043 1045 1049 1051 1051 1050 1050 1050 1049 1048 1050 1050 1045 1039 1032 1025 1025 1016 1004 995 978 974 977 977 977 975 973 972 970 967 962 964 969 926 929 931 934 936 940 943 948 953 960 977 990 989 989 990 990 990 991 993 993 994 995 999 1001 1003 1005 1009 1011 1013 1018 1020 1025 1029 1030 1030 1034 1041 1043 1045 1051 1052 1055 1055 1056 1056 1057 1059 1062 1066 1069 1070 1070 1071 1072 1073 1073 1069 1068 1067 1071 1076 1077 1078 1077 1077 1074 1070 1065 1068 1068 1063 1059 1063 1074 1080 1087 1095 1104 1107 1108 1114 1117 1120 1121 1122 1126 1128 1130 1133 1135 1140 1145 1146 1143 1142 1161 1186 1213 1223 1210 1195 1184 1178 1173 1174 1184 1186 1183 1186 1190 1194 1193 1189 1183 1173 1162 1155 1160 1157 1151 1148 1142 1133 1124 1116 1109 1100 1088 1074 1062 1054 1041 1017 1018 1023 1021 1021 1021 1016 1024 1030 1030 1031 1031 1030 1028 1014 997 1000 1003 998 1006 1006 1006 1003 999 990 978 983 984 972 957 950 950 972 1011 1032 1042 1046 1048 1049 1048 1048 1048 1050 1050 1049 1047 1047 1047 1045 1043 1039 1033 1036 1024 1016 1007 988 980 977 980 981 979 976 974 973 971 966 966 968 926 928 932 934 938 942 945 948 950 953 970 988 993 993 991 990 992 994 995 997 999 1001 1004 1007 1010 1010 1010 1012 1017 1023 1026 1029 1033 1034 1034 1039 1043 1045 1048 1054 1057 1058 1058 1059 1062 1063 1064 1066 1069 1071 1071 1074 1075 1072 1068 1069 1073 1071 1070 1078 1080 1077 1079 1076 1079 1075 1072 1071 1070 1072 1067 1063 1071 1083 1088 1096 1105 1112 1116 1117 1120 1122 1123 1125 1126 1129 1131 1133 1139 1141 1146 1151 1151 1148 1147 1164 1184 1208 1227 1220 1203 1188 1178 1174 1178 1184 1186 1190 1196 1201 1202 1197 1193 1188 1178 1166 1159 1157 1148 1139 1137 1131 1121 1111 1102 1095 1085 1073 1063 1057 1048 1037 1018 1028 1034 1029 1031 1031 1027 1029 1033 1036 1037 1037 1036 1030 1015 1011 1010 1008 1009 1017 1020 1015 1007 998 992 997 993 985 976 964 954 950 971 1011 1033 1042 1044 1046 1049 1050 1050 1051 1053 1053 1051 1048 1046 1045 1044 1044 1047 1046 1050 1040 1030 1015 998 985 979 984 986 983 979 977 975 971 971 972 973 924 926 930 933 936 940 943 946 948 952 961 974 983 986 986 988 991 995 996 1000 1004 1007 1009 1011 1015 1017 1016 1019 1024 1030 1033 1035 1038 1040 1041 1044 1049 1054 1056 1057 1060 1060 1060 1063 1065 1067 1068 1071 1072 1071 1075 1079 1079 1078 1073 1074 1079 1079 1078 1077 1080 1083 1085 1085 1086 1084 1080 1084 1085 1085 1084 1079 1075 1097 1109 1109 1118 1123 1124 1124 1126 1126 1127 1129 1127 1132 1136 1140 1147 1148 1149 1152 1153 1151 1148 1160 1182 1210 1231 1234 1220 1204 1188 1178 1184 1183 1186 1193 1198 1210 1212 1200 1191 1185 1177 1168 1159 1148 1137 1129 1123 1113 1103 1092 1081 1071 1064 1058 1056 1055 1046 1035 1038 1046 1046 1043 1040 1040 1037 1033 1037 1039 1041 1041 1038 1033 1029 1017 1004 1007 1018 1025 1024 1017 1006 1001 1009 1015 1012 1003 989 977 960 958 975 1008 1027 1036 1037 1043 1049 1049 1049 1049 1049 1049 1049 1047 1046 1042 1040 1042 1048 1054 1055 1052 1042 1027 1004 989 989 989 988 985 982 980 975 966 971 984 987 926 930 935 938 941 944 946 948 949 951 954 957 960 970 982 988 991 996 998 1003 1008 1012 1013 1016 1020 1025 1026 1031 1034 1036 1037 1039 1043 1045 1047 1050 1056 1060 1061 1063 1063 1063 1064 1068 1070 1072 1075 1077 1075 1074 1077 1078 1077 1077 1079 1079 1078 1080 1081 1079 1083 1086 1089 1090 1086 1083 1083 1084 1084 1088 1091 1083 1089 1108 1122 1120 1123 1126 1126 1127 1127 1128 1128 1130 1131 1136 1140 1146 1153 1152 1150 1154 1155 1150 1152 1168 1187 1213 1236 1239 1231 1216 1199 1184 1191 1192 1195 1196 1201 1215 1215 1202 1185 1179 1171 1160 1151 1139 1132 1122 1110 1097 1086 1075 1063 1056 1050 1052 1056 1058 1046 1040 1057 1056 1050 1053 1046 1043 1044 1039 1041 1045 1044 1042 1042 1042 1033 1016 1003 1005 1022 1032 1030 1021 1002 1004 1020 1021 1022 1023 1019 1010 1000 997 997 1016 1019 1023 1035 1041 1046 1049 1051 1051 1051 1051 1051 1051 1048 1043 1039 1037 1047 1049 1050 1050 1041 1030 1010 996 993 990 989 986 982 984 979 971 974 993 995 928 929 931 934 935 937 939 942 945 948 951 954 958 965 971 974 978 985 990 997 1004 1008 1012 1017 1022 1023 1026 1033 1037 1038 1039 1041 1043 1046 1050 1053 1056 1059 1062 1065 1066 1068 1070 1074 1076 1079 1082 1083 1079 1080 1080 1078 1077 1077 1082 1082 1080 1083 1084 1085 1088 1087 1090 1093 1089 1087 1088 1088 1088 1093 1096 1095 1103 1116 1129 1129 1129 1132 1133 1131 1133 1134 1134 1135 1135 1140 1146 1151 1157 1158 1157 1159 1160 1158 1155 1171 1197 1224 1237 1238 1237 1224 1210 1195 1189 1195 1201 1203 1199 1207 1206 1194 1186 1178 1169 1158 1147 1135 1124 1112 1100 1088 1078 1070 1065 1059 1063 1066 1066 1061 1049 1056 1067 1057 1050 1054 1049 1045 1048 1044 1045 1051 1047 1048 1044 1042 1028 1023 1015 1012 1027 1035 1032 1020 1012 1013 1023 1027 1031 1036 1035 1026 1016 1015 1017 1025 1016 1019 1034 1044 1049 1051 1052 1052 1051 1050 1049 1049 1048 1046 1038 1030 1035 1040 1048 1043 1028 1027 1020 1008 998 994 993 990 996 999 993 988 994 1003 998 932 934 935 938 939 939 941 945 948 953 956 959 964 969 972 976 978 983 989 996 1002 1011 1017 1023 1025 1024 1030 1039 1043 1047 1050 1050 1049 1054 1057 1058 1060 1061 1064 1068 1070 1072 1075 1080 1084 1086 1087 1087 1086 1086 1086 1085 1085 1087 1087 1089 1090 1090 1090 1091 1090 1087 1091 1095 1095 1094 1096 1096 1095 1099 1102 1111 1116 1124 1133 1131 1135 1137 1136 1136 1137 1137 1137 1139 1140 1145 1152 1154 1160 1162 1164 1167 1167 1164 1162 1181 1210 1234 1238 1237 1242 1236 1223 1206 1200 1201 1199 1204 1206 1208 1201 1188 1180 1172 1161 1153 1141 1128 1115 1103 1092 1082 1073 1069 1073 1071 1072 1071 1068 1055 1056 1066 1067 1061 1059 1059 1055 1054 1049 1043 1052 1053 1052 1056 1035 1029 1033 1042 1028 1027 1033 1034 1029 1013 1028 1030 1026 1033 1041 1044 1038 1029 1024 1026 1030 1032 1017 1011 1030 1043 1048 1050 1052 1052 1052 1051 1050 1049 1049 1047 1039 1029 1024 1023 1038 1040 1023 1018 1013 1010 1000 999 1004 1003 1002 1009 1012 1009 1009 1007 998 933 935 936 939 941 941 941 944 946 950 954 957 961 965 970 973 979 980 981 992 1000 1005 1009 1013 1018 1023 1028 1034 1039 1043 1047 1048 1050 1052 1054 1058 1062 1066 1068 1070 1074 1078 1083 1086 1089 1092 1093 1090 1086 1087 1088 1088 1092 1097 1098 1098 1096 1096 1096 1096 1089 1090 1098 1100 1099 1096 1100 1100 1099 1103 1106 1118 1126 1135 1139 1133 1138 1139 1138 1139 1139 1139 1141 1143 1145 1149 1157 1161 1166 1165 1169 1173 1173 1170 1173 1195 1222 1242 1243 1238 1241 1243 1229 1215 1211 1207 1203 1201 1209 1215 1205 1191 1180 1170 1159 1149 1137 1124 1108 1097 1089 1081 1073 1074 1076 1075 1077 1078 1075 1069 1065 1068 1070 1064 1067 1063 1057 1060 1056 1048 1054 1061 1063 1050 1032 1032 1048 1046 1031 1034 1038 1038 1032 1015 1031 1044 1040 1036 1046 1050 1045 1037 1049 1051 1044 1039 1017 1000 1026 1038 1044 1048 1053 1056 1055 1055 1054 1050 1047 1044 1036 1032 1027 1021 1025 1029 1018 1011 1004 1006 1001 1001 1011 1011 1006 1015 1023 1021 1015 1005 997 934 935 937 940 942 943 944 945 948 950 953 957 962 966 970 974 981 984 984 993 999 1003 1007 1011 1017 1025 1031 1036 1042 1048 1053 1054 1056 1056 1058 1061 1065 1070 1073 1073 1075 1078 1085 1089 1091 1093 1094 1094 1093 1094 1093 1091 1095 1097 1101 1103 1104 1104 1103 1104 1102 1104 1109 1110 1108 1106 1107 1111 1111 1113 1114 1119 1131 1144 1147 1142 1139 1145 1146 1142 1143 1146 1149 1151 1151 1154 1164 1172 1174 1172 1174 1175 1176 1181 1190 1212 1234 1248 1246 1241 1239 1245 1234 1224 1217 1211 1206 1201 1210 1219 1210 1193 1176 1164 1153 1143 1132 1115 1098 1090 1088 1086 1081 1081 1079 1077 1078 1077 1072 1066 1068 1071 1072 1069 1069 1066 1064 1062 1055 1055 1056 1065 1055 1050 1040 1051 1045 1035 1040 1041 1043 1045 1035 1027 1040 1046 1050 1047 1054 1055 1049 1041 1054 1059 1059 1048 1020 1012 1028 1035 1039 1046 1053 1059 1058 1056 1055 1051 1045 1042 1034 1038 1039 1033 1020 1017 1016 1012 1002 1004 1006 1003 1012 1014 1014 1017 1022 1022 1017 1006 997 939 940 942 944 946 948 951 953 955 957 959 962 966 971 974 980 985 991 994 998 1003 1006 1011 1017 1024 1030 1037 1041 1044 1049 1054 1056 1057 1058 1061 1064 1067 1070 1073 1076 1078 1081 1086 1090 1094 1096 1097 1095 1093 1095 1097 1100 1100 1098 1101 1106 1108 1110 1104 1103 1106 1109 1115 1113 1109 1110 1115 1118 1112 1121 1121 1121 1134 1148 1148 1144 1142 1150 1149 1145 1147 1151 1155 1161 1157 1165 1176 1182 1183 1185 1183 1179 1182 1195 1216 1231 1243 1248 1244 1241 1245 1249 1241 1231 1224 1218 1212 1209 1213 1218 1210 1192 1172 1157 1144 1133 1120 1103 1090 1088 1090 1089 1087 1087 1084 1081 1081 1079 1075 1071 1073 1077 1078 1075 1071 1069 1068 1064 1058 1059 1058 1067 1058 1059 1053 1060 1047 1045 1048 1042 1044 1048 1041 1029 1045 1053 1052 1046 1056 1068 1072 1065 1069 1068 1060 1050 1035 1029 1027 1027 1029 1042 1054 1059 1061 1057 1055 1051 1048 1048 1046 1043 1039 1034 1025 1024 1022 1016 1005 1006 1012 1010 1014 1017 1018 1017 1015 1019 1018 1009 999 935 935 938 940 941 943 946 950 952 957 958 960 963 969 974 981 988 995 998 1003 1009 1010 1012 1021 1030 1037 1041 1043 1045 1046 1050 1052 1055 1059 1063 1067 1069 1071 1074 1077 1080 1083 1085 1087 1092 1096 1097 1095 1094 1099 1102 1106 1105 1104 1105 1110 1115 1117 1114 1114 1116 1117 1121 1119 1120 1122 1124 1126 1125 1131 1129 1130 1137 1147 1151 1148 1147 1153 1158 1156 1154 1155 1163 1173 1177 1181 1190 1200 1200 1197 1197 1197 1200 1210 1229 1243 1254 1253 1247 1242 1251 1254 1247 1241 1234 1229 1224 1220 1215 1212 1205 1189 1168 1149 1131 1116 1107 1100 1095 1092 1095 1095 1092 1091 1089 1086 1086 1086 1086 1085 1084 1083 1082 1077 1075 1074 1070 1067 1067 1063 1066 1069 1065 1067 1066 1062 1060 1064 1056 1045 1049 1049 1043 1045 1052 1057 1058 1058 1068 1077 1080 1075 1074 1075 1061 1057 1055 1052 1048 1047 1039 1040 1051 1056 1062 1061 1058 1052 1052 1053 1046 1038 1033 1033 1028 1025 1013 1008 1015 1016 1017 1017 1020 1020 1018 1021 1020 1020 1017 1008 1000 949 949 948 947 947 948 952 954 955 959 962 966 969 973 977 984 991 999 1006 1012 1015 1017 1019 1023 1031 1036 1041 1046 1050 1052 1052 1054 1059 1064 1068 1071 1073 1075 1077 1079 1081 1083 1085 1087 1090 1094 1097 1098 1099 1104 1109 1111 1111 1109 1109 1114 1120 1122 1125 1126 1125 1121 1122 1125 1130 1129 1126 1130 1135 1137 1136 1137 1144 1153 1157 1152 1152 1155 1158 1160 1160 1163 1171 1180 1185 1190 1196 1205 1208 1206 1206 1206 1214 1227 1238 1250 1258 1257 1249 1243 1250 1257 1254 1246 1236 1226 1220 1213 1204 1199 1192 1176 1157 1137 1115 1101 1099 1103 1101 1097 1097 1097 1096 1095 1095 1093 1092 1094 1097 1098 1095 1092 1087 1078 1078 1078 1072 1070 1074 1070 1078 1077 1075 1073 1077 1066 1076 1076 1061 1047 1056 1058 1052 1056 1052 1059 1062 1071 1081 1085 1086 1079 1075 1079 1063 1065 1069 1069 1065 1060 1050 1042 1044 1057 1063 1064 1062 1056 1055 1055 1049 1042 1034 1036 1034 1025 1011 1013 1024 1025 1024 1022 1023 1023 1022 1020 1020 1019 1017 1013 1008 944 944 940 941 941 944 946 947 947 949 956 960 963 970 978 985 992 1002 1011 1019 1019 1017 1021 1025 1030 1036 1042 1046 1050 1051 1052 1055 1060 1064 1067 1071 1074 1077 1079 1083 1083 1083 1088 1094 1098 1101 1102 1103 1105 1107 1114 1116 1116 1112 1112 1118 1121 1124 1128 1131 1131 1126 1127 1129 1138 1134 1129 1133 1139 1140 1141 1142 1151 1159 1162 1158 1158 1159 1162 1164 1164 1171 1178 1187 1195 1200 1206 1210 1215 1214 1215 1216 1223 1233 1243 1249 1261 1266 1259 1252 1251 1257 1257 1248 1239 1229 1224 1217 1208 1195 1181 1164 1144 1123 1104 1096 1101 1105 1104 1104 1104 1105 1103 1099 1103 1109 1107 1103 1108 1113 1107 1107 1100 1086 1083 1081 1076 1077 1076 1074 1081 1095 1091 1084 1084 1075 1084 1079 1064 1052 1064 1075 1070 1055 1054 1063 1065 1076 1087 1091 1089 1082 1079 1080 1072 1074 1077 1077 1073 1068 1059 1049 1048 1059 1062 1063 1062 1060 1060 1056 1046 1044 1040 1038 1035 1022 1020 1025 1029 1030 1029 1027 1027 1026 1025 1024 1023 1021 1016 1010 1010 932 942 944 943 943 947 951 952 955 959 965 970 974 980 985 989 995 1005 1013 1021 1023 1025 1030 1033 1038 1044 1052 1056 1059 1061 1062 1063 1065 1068 1071 1075 1077 1079 1084 1087 1087 1089 1092 1097 1103 1107 1107 1110 1112 1112 1116 1118 1120 1120 1121 1122 1127 1131 1131 1133 1139 1141 1138 1134 1144 1143 1141 1142 1144 1144 1147 1146 1154 1161 1164 1165 1164 1164 1171 1172 1169 1177 1181 1192 1203 1210 1215 1219 1223 1226 1227 1224 1227 1235 1250 1252 1261 1271 1270 1262 1255 1256 1254 1242 1233 1227 1224 1217 1205 1189 1171 1153 1131 1110 1098 1100 1107 1110 1107 1105 1106 1107 1109 1110 1115 1118 1117 1117 1117 1117 1115 1114 1107 1096 1088 1086 1083 1082 1080 1081 1094 1105 1099 1096 1082 1084 1089 1080 1063 1069 1080 1086 1079 1061 1070 1069 1071 1081 1092 1096 1089 1086 1088 1083 1083 1088 1086 1082 1081 1080 1072 1063 1063 1061 1058 1062 1062 1064 1062 1056 1043 1047 1048 1041 1032 1020 1029 1034 1035 1034 1032 1031 1029 1028 1028 1027 1029 1026 1020 1013 1011 932 948 954 953 953 956 959 964 966 970 976 977 982 987 990 992 998 1007 1014 1019 1024 1031 1035 1041 1045 1052 1060 1066 1067 1064 1063 1064 1067 1070 1072 1074 1077 1081 1086 1089 1092 1094 1098 1103 1108 1111 1112 1114 1116 1116 1117 1118 1121 1123 1124 1130 1135 1134 1133 1134 1138 1143 1140 1147 1147 1146 1152 1153 1151 1149 1155 1152 1161 1164 1169 1172 1168 1168 1175 1179 1178 1183 1187 1194 1205 1214 1220 1228 1237 1244 1243 1232 1232 1239 1254 1261 1263 1269 1273 1269 1259 1254 1251 1241 1230 1226 1222 1214 1197 1180 1160 1140 1120 1105 1102 1108 1110 1111 1111 1107 1106 1106 1108 1117 1123 1124 1125 1127 1124 1118 1120 1122 1117 1104 1091 1092 1090 1082 1087 1090 1105 1117 1107 1100 1090 1097 1099 1092 1093 1087 1090 1090 1084 1075 1068 1066 1083 1100 1108 1107 1102 1099 1097 1093 1093 1101 1098 1094 1094 1097 1096 1090 1077 1064 1056 1066 1068 1067 1059 1056 1048 1053 1051 1044 1033 1025 1035 1039 1040 1038 1035 1033 1032 1032 1031 1029 1030 1026 1021 1019 1016 944 950 950 952 957 959 962 969 971 972 979 977 983 987 993 998 1004 1010 1019 1023 1027 1035 1038 1045 1050 1055 1060 1068 1070 1068 1067 1069 1072 1076 1078 1079 1082 1085 1089 1094 1097 1098 1104 1108 1112 1115 1116 1118 1119 1119 1119 1123 1126 1127 1128 1131 1135 1137 1138 1138 1140 1143 1145 1147 1152 1158 1159 1158 1162 1162 1164 1160 1166 1164 1175 1178 1178 1179 1181 1186 1186 1192 1197 1201 1209 1215 1228 1245 1260 1266 1264 1256 1246 1239 1248 1266 1268 1268 1270 1272 1264 1253 1247 1244 1233 1227 1219 1204 1182 1159 1139 1126 1118 1112 1107 1110 1112 1114 1116 1114 1110 1109 1111 1121 1127 1130 1130 1130 1129 1125 1126 1125 1120 1108 1098 1092 1097 1097 1098 1103 1115 1121 1111 1107 1109 1107 1100 1105 1114 1103 1100 1093 1090 1091 1077 1079 1101 1116 1116 1116 1113 1109 1096 1102 1112 1118 1115 1119 1125 1125 1124 1113 1094 1070 1061 1070 1073 1070 1056 1059 1057 1055 1049 1043 1041 1037 1043 1043 1042 1040 1038 1036 1039 1038 1035 1029 1027 1021 1017 1020 1020 950 951 953 956 959 964 970 976 982 987 990 991 991 992 999 1007 1012 1016 1025 1033 1037 1043 1045 1050 1054 1057 1061 1066 1071 1074 1075 1076 1079 1081 1084 1086 1089 1090 1093 1097 1100 1101 1106 1111 1115 1120 1121 1121 1121 1121 1122 1130 1136 1136 1135 1134 1139 1143 1141 1142 1144 1148 1150 1148 1158 1165 1165 1165 1170 1169 1166 1165 1170 1172 1181 1184 1182 1183 1186 1189 1191 1193 1199 1207 1214 1225 1244 1262 1274 1281 1282 1273 1263 1247 1247 1264 1276 1275 1270 1272 1265 1256 1245 1239 1232 1225 1212 1191 1166 1142 1126 1121 1125 1121 1117 1116 1120 1123 1121 1123 1120 1118 1119 1124 1130 1134 1135 1134 1136 1134 1131 1126 1121 1110 1103 1094 1106 1116 1114 1120 1126 1124 1114 1115 1123 1114 1103 1115 1124 1118 1111 1101 1099 1105 1105 1110 1121 1126 1121 1119 1120 1118 1111 1126 1136 1140 1139 1138 1137 1133 1132 1128 1109 1088 1072 1070 1071 1069 1058 1060 1059 1055 1048 1047 1050 1046 1051 1049 1047 1045 1041 1041 1044 1043 1036 1031 1030 1026 1019 1018 1017 951 954 956 955 961 968 975 979 983 987 992 993 992 994 1000 1005 1011 1020 1026 1035 1043 1050 1055 1057 1060 1061 1066 1070 1074 1077 1078 1079 1080 1082 1086 1088 1090 1094 1097 1100 1103 1105 1109 1114 1119 1126 1126 1125 1125 1126 1128 1136 1142 1143 1143 1143 1146 1149 1146 1146 1149 1151 1157 1156 1162 1172 1173 1174 1176 1176 1174 1173 1174 1179 1181 1188 1189 1188 1194 1200 1201 1202 1206 1209 1219 1239 1263 1282 1295 1301 1297 1288 1280 1270 1261 1267 1279 1277 1273 1270 1264 1254 1243 1238 1230 1221 1205 1181 1159 1141 1130 1128 1134 1131 1127 1122 1129 1128 1124 1129 1129 1125 1122 1129 1135 1136 1141 1143 1143 1139 1135 1129 1123 1114 1105 1104 1118 1127 1131 1136 1135 1130 1116 1122 1129 1118 1111 1123 1130 1130 1123 1108 1100 1112 1123 1128 1130 1131 1127 1125 1125 1122 1126 1140 1149 1150 1149 1141 1135 1132 1131 1131 1117 1097 1074 1075 1068 1066 1065 1065 1060 1052 1054 1054 1052 1052 1053 1048 1045 1048 1048 1047 1047 1043 1037 1038 1033 1030 1029 1028 1026 955 958 964 969 974 978 985 989 994 1000 1004 1004 1004 1006 1010 1011 1016 1023 1028 1038 1050 1061 1066 1069 1070 1067 1064 1071 1075 1078 1079 1080 1082 1085 1088 1090 1093 1098 1102 1105 1108 1111 1118 1120 1125 1129 1132 1132 1132 1134 1138 1142 1143 1144 1149 1151 1153 1152 1153 1152 1152 1155 1167 1169 1168 1179 1182 1184 1185 1183 1180 1181 1184 1186 1185 1192 1198 1198 1204 1211 1213 1214 1214 1219 1234 1254 1278 1299 1313 1315 1309 1303 1295 1283 1264 1269 1283 1282 1279 1275 1269 1260 1246 1236 1225 1210 1192 1171 1154 1147 1148 1146 1142 1142 1136 1130 1126 1127 1127 1127 1125 1125 1130 1141 1140 1137 1144 1145 1146 1144 1138 1128 1121 1118 1106 1114 1129 1137 1143 1146 1143 1131 1114 1128 1131 1121 1117 1131 1135 1135 1133 1112 1101 1110 1123 1130 1133 1137 1136 1132 1128 1125 1137 1145 1150 1149 1145 1137 1134 1136 1137 1132 1122 1104 1081 1078 1069 1068 1070 1069 1063 1056 1062 1058 1054 1058 1056 1052 1049 1051 1050 1049 1047 1043 1039 1043 1037 1033 1035 1036 1034 954 960 970 978 983 986 989 992 999 1003 1006 1006 1007 1009 1013 1019 1023 1030 1035 1046 1057 1067 1073 1076 1072 1066 1072 1076 1078 1080 1082 1084 1086 1089 1093 1095 1097 1101 1105 1108 1111 1117 1122 1125 1128 1132 1138 1135 1134 1141 1145 1147 1143 1147 1152 1155 1158 1154 1157 1153 1152 1163 1175 1179 1183 1188 1189 1191 1193 1190 1184 1185 1195 1197 1198 1198 1205 1209 1215 1220 1222 1224 1222 1228 1245 1268 1292 1313 1323 1322 1318 1313 1307 1293 1275 1272 1285 1287 1285 1280 1273 1261 1242 1229 1217 1201 1182 1162 1151 1150 1158 1160 1159 1160 1154 1144 1135 1138 1136 1133 1130 1130 1142 1152 1151 1144 1144 1152 1154 1149 1140 1132 1124 1119 1110 1106 1134 1147 1152 1155 1148 1134 1122 1133 1137 1124 1120 1136 1138 1138 1141 1128 1116 1110 1128 1138 1142 1143 1142 1137 1133 1135 1147 1151 1152 1148 1141 1137 1140 1145 1145 1137 1127 1110 1088 1079 1075 1075 1073 1070 1069 1066 1066 1062 1060 1062 1059 1056 1056 1055 1053 1050 1048 1047 1043 1040 1040 1038 1038 1039 1037 955 964 975 983 988 991 993 996 1003 1006 1008 1011 1013 1016 1021 1027 1033 1041 1047 1054 1065 1074 1081 1083 1079 1071 1075 1079 1081 1083 1088 1092 1093 1096 1098 1101 1105 1107 1109 1114 1116 1119 1123 1128 1132 1138 1142 1141 1142 1146 1148 1150 1150 1153 1157 1162 1163 1163 1165 1168 1173 1177 1183 1190 1194 1199 1197 1194 1196 1196 1194 1195 1201 1203 1206 1207 1206 1219 1225 1228 1229 1230 1230 1231 1245 1275 1303 1322 1327 1326 1321 1320 1317 1306 1290 1278 1288 1292 1289 1282 1274 1257 1238 1224 1211 1194 1175 1161 1160 1160 1171 1175 1176 1175 1169 1158 1146 1142 1137 1130 1131 1139 1149 1158 1159 1150 1150 1156 1154 1154 1144 1126 1118 1125 1121 1111 1133 1153 1154 1160 1148 1139 1140 1141 1139 1124 1120 1138 1142 1142 1143 1131 1118 1126 1135 1141 1146 1143 1144 1144 1138 1147 1156 1157 1155 1149 1144 1142 1145 1147 1145 1139 1125 1107 1087 1083 1082 1081 1075 1070 1074 1072 1067 1066 1066 1065 1062 1060 1059 1059 1057 1054 1049 1053 1049 1037 1042 1045 1042 1039 1036 966 970 979 988 993 996 1001 1006 1008 1012 1016 1020 1023 1027 1032 1035 1044 1051 1057 1062 1073 1083 1087 1087 1080 1076 1076 1080 1082 1086 1090 1094 1096 1099 1100 1104 1108 1109 1111 1116 1119 1120 1126 1133 1137 1141 1146 1147 1148 1151 1153 1154 1155 1158 1163 1168 1170 1172 1170 1174 1181 1188 1193 1193 1201 1206 1200 1193 1201 1198 1194 1197 1206 1210 1214 1212 1214 1222 1230 1236 1236 1236 1237 1240 1253 1274 1301 1325 1330 1327 1322 1327 1324 1313 1294 1285 1293 1297 1294 1287 1274 1255 1237 1223 1206 1187 1171 1161 1169 1177 1180 1187 1189 1186 1182 1173 1161 1150 1141 1132 1133 1143 1153 1163 1169 1164 1160 1157 1156 1157 1149 1133 1126 1139 1137 1129 1136 1157 1161 1162 1150 1147 1153 1150 1143 1126 1120 1140 1147 1150 1148 1137 1127 1138 1144 1148 1150 1149 1150 1149 1145 1159 1165 1165 1158 1153 1151 1151 1150 1147 1145 1135 1120 1104 1091 1087 1085 1081 1076 1073 1074 1075 1070 1066 1069 1071 1067 1062 1061 1060 1058 1056 1051 1056 1050 1043 1045 1050 1046 1041 1039 963 970 978 987 989 991 1000 1008 1006 1008 1016 1017 1024 1030 1035 1039 1052 1060 1064 1071 1080 1087 1088 1086 1078 1078 1080 1084 1086 1087 1091 1095 1097 1102 1103 1106 1110 1112 1114 1119 1123 1125 1131 1135 1140 1143 1147 1150 1152 1154 1157 1157 1161 1164 1168 1173 1178 1182 1181 1181 1182 1190 1198 1201 1206 1211 1212 1207 1208 1210 1210 1209 1210 1211 1218 1221 1221 1224 1231 1238 1241 1244 1245 1247 1254 1270 1298 1329 1340 1340 1336 1335 1334 1326 1310 1297 1293 1302 1299 1290 1274 1251 1232 1215 1198 1183 1172 1161 1173 1189 1181 1192 1199 1199 1197 1187 1176 1161 1150 1144 1141 1147 1159 1166 1178 1182 1173 1161 1163 1160 1160 1151 1142 1154 1151 1145 1144 1162 1162 1164 1158 1154 1157 1154 1139 1122 1131 1147 1151 1156 1154 1142 1135 1145 1153 1152 1152 1156 1158 1150 1157 1167 1169 1166 1162 1159 1158 1158 1155 1149 1141 1127 1107 1094 1090 1089 1087 1082 1080 1080 1079 1077 1076 1074 1075 1074 1069 1066 1066 1065 1060 1060 1059 1053 1049 1049 1051 1050 1049 1048 1047 972 972 977 988 992 998 1005 1010 1013 1017 1027 1030 1034 1040 1043 1048 1058 1066 1073 1080 1085 1091 1093 1093 1091 1086 1086 1092 1093 1089 1094 1100 1103 1105 1107 1111 1115 1120 1123 1124 1127 1131 1134 1136 1142 1147 1149 1155 1157 1159 1161 1162 1166 1169 1170 1175 1181 1184 1186 1183 1182 1191 1201 1207 1211 1217 1221 1216 1213 1219 1223 1220 1212 1217 1228 1231 1227 1234 1239 1245 1249 1256 1258 1256 1263 1280 1310 1336 1348 1355 1358 1358 1354 1340 1324 1304 1296 1304 1304 1292 1270 1248 1231 1212 1193 1180 1183 1188 1188 1195 1203 1219 1224 1221 1210 1198 1187 1172 1157 1150 1150 1157 1164 1169 1180 1186 1184 1169 1165 1166 1171 1162 1155 1167 1163 1155 1153 1170 1160 1164 1164 1157 1158 1153 1133 1121 1141 1155 1160 1163 1161 1152 1142 1147 1160 1160 1162 1168 1171 1162 1164 1163 1165 1167 1165 1163 1161 1160 1157 1151 1140 1125 1107 1093 1095 1097 1092 1089 1088 1087 1083 1080 1076 1077 1079 1078 1072 1070 1068 1066 1063 1062 1057 1052 1052 1053 1053 1050 1050 1049 1048 978 978 979 987 992 999 1001 1005 1009 1019 1029 1035 1040 1046 1051 1057 1062 1068 1077 1085 1090 1097 1098 1096 1093 1088 1096 1101 1096 1091 1098 1103 1105 1107 1111 1116 1118 1123 1126 1127 1129 1135 1139 1143 1147 1152 1156 1161 1164 1167 1168 1169 1171 1172 1174 1176 1179 1182 1186 1183 1185 1193 1200 1207 1214 1222 1225 1221 1220 1224 1229 1228 1222 1227 1238 1242 1237 1243 1250 1255 1257 1263 1265 1264 1269 1289 1319 1345 1362 1375 1379 1376 1370 1351 1328 1308 1298 1308 1309 1295 1272 1251 1231 1212 1190 1185 1197 1213 1216 1202 1211 1233 1245 1245 1234 1219 1201 1184 1169 1158 1156 1157 1159 1172 1180 1184 1190 1179 1167 1171 1173 1170 1172 1185 1180 1169 1164 1173 1164 1163 1159 1160 1162 1153 1146 1142 1145 1164 1171 1171 1171 1166 1151 1147 1167 1176 1181 1184 1185 1179 1167 1158 1163 1170 1170 1168 1166 1165 1161 1150 1132 1117 1108 1100 1102 1105 1098 1095 1094 1093 1089 1086 1081 1082 1083 1080 1076 1072 1070 1068 1066 1063 1059 1056 1058 1058 1057 1054 1055 1054 1052 982 986 987 990 991 997 1001 1006 1011 1020 1031 1037 1043 1051 1058 1066 1073 1077 1084 1093 1099 1105 1108 1106 1106 1105 1108 1104 1098 1101 1102 1106 1111 1115 1118 1122 1124 1128 1131 1134 1137 1140 1143 1145 1146 1152 1159 1162 1169 1173 1173 1174 1176 1177 1179 1183 1187 1189 1192 1193 1193 1194 1201 1209 1219 1227 1229 1230 1231 1229 1234 1237 1240 1239 1244 1251 1247 1250 1259 1262 1266 1268 1268 1269 1274 1293 1322 1352 1373 1387 1387 1380 1374 1358 1331 1309 1302 1311 1317 1304 1281 1257 1234 1210 1193 1198 1216 1230 1237 1221 1229 1248 1255 1250 1238 1223 1207 1194 1180 1169 1163 1164 1167 1176 1185 1190 1194 1189 1180 1176 1175 1180 1195 1202 1195 1182 1180 1174 1173 1167 1158 1166 1162 1155 1167 1168 1164 1175 1182 1179 1180 1179 1163 1152 1177 1192 1196 1196 1196 1189 1176 1167 1170 1173 1175 1175 1174 1171 1163 1146 1121 1105 1106 1107 1108 1107 1100 1097 1098 1098 1096 1091 1087 1086 1086 1083 1080 1076 1073 1071 1068 1063 1061 1061 1063 1063 1062 1061 1061 1058 1056 987 993 994 993 994 1000 1006 1011 1016 1020 1031 1038 1043 1046 1057 1068 1079 1083 1090 1098 1105 1110 1116 1118 1118 1116 1112 1103 1097 1102 1107 1112 1117 1119 1125 1130 1131 1132 1137 1139 1140 1142 1145 1147 1149 1155 1164 1166 1170 1173 1175 1175 1177 1180 1183 1186 1190 1192 1194 1197 1199 1197 1206 1214 1225 1233 1230 1234 1237 1233 1237 1244 1252 1253 1253 1258 1251 1258 1265 1268 1275 1278 1275 1275 1283 1296 1323 1356 1379 1389 1386 1381 1376 1365 1339 1315 1308 1316 1324 1314 1289 1264 1238 1214 1200 1213 1231 1249 1259 1250 1255 1267 1274 1264 1247 1230 1214 1199 1186 1175 1168 1168 1172 1173 1186 1195 1198 1197 1191 1183 1176 1182 1203 1212 1208 1194 1183 1175 1179 1175 1167 1166 1168 1171 1189 1191 1189 1191 1196 1194 1193 1193 1179 1161 1179 1198 1204 1205 1204 1201 1196 1183 1173 1170 1177 1178 1175 1167 1154 1133 1119 1109 1112 1113 1110 1105 1101 1101 1102 1103 1098 1093 1090 1089 1088 1087 1084 1081 1077 1075 1069 1066 1065 1066 1067 1067 1066 1065 1064 1060 1058 990 996 993 995 1000 1003 1007 1012 1016 1019 1030 1040 1044 1043 1056 1070 1080 1086 1094 1102 1110 1116 1122 1127 1127 1124 1118 1112 1106 1107 1115 1120 1123 1126 1130 1137 1138 1138 1144 1146 1147 1148 1151 1153 1158 1165 1173 1174 1176 1175 1180 1185 1189 1190 1193 1197 1200 1202 1203 1206 1213 1218 1218 1222 1230 1234 1235 1240 1246 1246 1244 1247 1259 1262 1266 1268 1266 1265 1270 1277 1281 1287 1287 1287 1287 1297 1324 1363 1387 1393 1395 1392 1382 1369 1349 1332 1316 1321 1325 1318 1297 1272 1243 1220 1207 1221 1244 1266 1278 1274 1273 1284 1295 1287 1264 1241 1224 1207 1192 1180 1177 1175 1175 1174 1191 1202 1204 1197 1199 1189 1182 1191 1205 1214 1214 1202 1181 1184 1187 1187 1183 1176 1186 1197 1206 1206 1202 1205 1206 1202 1200 1200 1187 1166 1185 1201 1210 1209 1210 1212 1207 1189 1174 1178 1178 1179 1176 1172 1148 1123 1117 1117 1118 1118 1113 1107 1106 1105 1104 1102 1097 1094 1093 1091 1090 1087 1084 1082 1079 1077 1072 1070 1071 1071 1070 1069 1068 1064 1063 1061 1059 992 993 998 1001 1000 998 1007 1011 1015 1022 1034 1046 1053 1060 1070 1082 1087 1092 1099 1109 1119 1125 1130 1135 1138 1134 1128 1125 1123 1122 1124 1128 1131 1134 1138 1146 1149 1149 1150 1151 1151 1154 1158 1160 1166 1172 1180 1180 1179 1179 1187 1193 1196 1194 1198 1204 1207 1210 1208 1210 1222 1225 1222 1226 1234 1238 1241 1247 1251 1257 1253 1253 1264 1269 1273 1276 1277 1272 1282 1284 1287 1296 1295 1289 1293 1308 1334 1365 1385 1397 1403 1401 1392 1380 1366 1352 1336 1328 1330 1327 1308 1283 1250 1222 1224 1248 1265 1274 1284 1284 1279 1293 1303 1301 1278 1250 1232 1214 1198 1182 1187 1187 1181 1179 1199 1210 1211 1199 1206 1203 1196 1202 1210 1212 1215 1210 1190 1190 1195 1200 1194 1195 1212 1221 1217 1218 1218 1221 1215 1207 1207 1208 1194 1173 1188 1208 1220 1221 1218 1217 1212 1196 1182 1184 1187 1184 1180 1171 1151 1130 1120 1120 1119 1119 1114 1108 1108 1106 1103 1103 1100 1097 1094 1093 1092 1088 1085 1084 1080 1077 1074 1075 1076 1075 1071 1070 1070 1067 1065 1062 1059 998 997 996 994 989 991 1000 1005 1012 1020 1030 1042 1053 1062 1073 1080 1090 1099 1105 1116 1124 1129 1135 1140 1141 1139 1131 1128 1130 1131 1133 1137 1139 1141 1150 1158 1160 1159 1156 1155 1154 1156 1162 1165 1171 1179 1187 1186 1182 1184 1192 1195 1199 1199 1203 1210 1213 1217 1216 1215 1223 1227 1229 1234 1240 1245 1251 1256 1260 1267 1263 1261 1271 1276 1279 1283 1285 1282 1291 1294 1296 1302 1302 1300 1301 1314 1340 1369 1392 1403 1405 1407 1403 1393 1379 1368 1354 1336 1327 1327 1312 1292 1271 1249 1247 1250 1271 1286 1297 1306 1301 1307 1322 1315 1291 1266 1247 1227 1206 1187 1191 1197 1187 1180 1199 1215 1217 1210 1211 1222 1214 1207 1216 1213 1219 1222 1210 1197 1205 1208 1203 1216 1235 1234 1224 1228 1231 1232 1224 1219 1219 1217 1199 1179 1189 1213 1227 1229 1226 1222 1214 1196 1187 1188 1193 1192 1187 1170 1160 1146 1143 1140 1135 1131 1118 1107 1110 1115 1120 1120 1117 1107 1100 1097 1094 1093 1091 1090 1084 1079 1079 1081 1080 1078 1075 1074 1072 1070 1067 1066 1063 1005 1003 998 998 999 998 999 1006 1015 1026 1038 1050 1061 1070 1076 1078 1091 1102 1112 1122 1124 1130 1139 1143 1144 1143 1142 1139 1138 1139 1143 1147 1149 1152 1162 1168 1168 1168 1168 1165 1162 1163 1163 1168 1181 1193 1197 1195 1192 1191 1197 1197 1202 1211 1213 1218 1221 1225 1228 1224 1225 1235 1242 1246 1249 1255 1260 1264 1271 1277 1274 1271 1279 1282 1286 1291 1292 1290 1300 1309 1311 1307 1310 1311 1308 1325 1353 1378 1400 1407 1407 1410 1410 1407 1393 1384 1371 1353 1339 1336 1323 1304 1293 1282 1274 1263 1279 1292 1304 1317 1309 1313 1332 1318 1290 1270 1250 1236 1210 1189 1198 1205 1195 1188 1201 1219 1224 1216 1217 1231 1223 1218 1219 1218 1222 1230 1231 1226 1224 1214 1222 1240 1248 1240 1235 1235 1233 1238 1236 1237 1233 1223 1205 1190 1193 1214 1230 1233 1231 1226 1214 1196 1192 1196 1196 1194 1187 1170 1169 1162 1161 1158 1152 1144 1128 1113 1113 1126 1136 1134 1127 1117 1106 1100 1097 1097 1096 1093 1087 1085 1086 1088 1086 1081 1080 1079 1077 1075 1073 1070 1067 1008 1006 999 1000 1001 997 1001 1008 1017 1027 1037 1048 1057 1066 1074 1078 1090 1106 1117 1126 1129 1135 1142 1147 1145 1141 1142 1146 1150 1153 1151 1149 1156 1161 1167 1173 1173 1171 1170 1167 1166 1170 1170 1173 1183 1194 1196 1194 1194 1195 1202 1202 1204 1216 1219 1223 1226 1232 1234 1229 1234 1244 1250 1258 1259 1263 1261 1268 1278 1287 1285 1281 1286 1286 1293 1300 1299 1298 1309 1324 1326 1320 1323 1326 1323 1339 1367 1389 1406 1414 1412 1411 1417 1419 1408 1396 1387 1370 1353 1345 1334 1319 1311 1305 1296 1279 1278 1297 1314 1322 1315 1332 1346 1333 1307 1286 1266 1249 1224 1202 1200 1208 1205 1199 1198 1222 1231 1229 1225 1235 1233 1223 1226 1229 1231 1239 1243 1239 1236 1231 1233 1251 1258 1252 1247 1250 1243 1249 1256 1253 1242 1233 1222 1209 1204 1221 1236 1238 1234 1225 1214 1204 1201 1205 1200 1188 1177 1173 1178 1178 1172 1166 1159 1148 1140 1134 1127 1135 1143 1139 1133 1126 1113 1104 1102 1102 1098 1094 1092 1092 1093 1093 1091 1087 1084 1082 1080 1079 1077 1074 1071 1010 1009 1005 1004 1001 997 1004 1007 1016 1025 1034 1045 1053 1064 1075 1084 1096 1108 1120 1129 1136 1143 1143 1151 1151 1149 1148 1151 1158 1165 1165 1163 1164 1163 1168 1174 1179 1180 1180 1178 1174 1176 1184 1185 1187 1200 1205 1205 1205 1206 1210 1210 1210 1217 1225 1229 1235 1239 1243 1239 1237 1247 1257 1266 1269 1270 1273 1277 1282 1295 1296 1292 1291 1295 1303 1308 1309 1306 1319 1334 1339 1339 1341 1346 1347 1352 1378 1401 1412 1423 1416 1412 1422 1427 1423 1407 1401 1383 1364 1350 1346 1340 1335 1327 1317 1296 1282 1305 1327 1332 1320 1337 1350 1341 1319 1294 1283 1262 1232 1204 1201 1212 1214 1212 1205 1223 1238 1237 1230 1245 1242 1226 1234 1236 1237 1243 1246 1244 1240 1235 1244 1262 1264 1261 1257 1250 1244 1255 1265 1260 1251 1233 1225 1214 1229 1246 1250 1246 1235 1217 1210 1213 1210 1208 1200 1184 1175 1189 1196 1197 1191 1175 1159 1144 1147 1156 1146 1143 1147 1146 1143 1139 1122 1110 1107 1106 1101 1097 1099 1100 1098 1094 1093 1091 1088 1085 1083 1081 1078 1076 1073 1017 1016 1015 1013 1012 1011 1009 1006 1016 1026 1036 1046 1056 1066 1076 1086 1098 1107 1119 1130 1141 1147 1146 1153 1157 1158 1159 1162 1167 1174 1178 1178 1170 1167 1173 1180 1186 1190 1190 1188 1186 1187 1196 1192 1192 1204 1209 1211 1211 1215 1217 1215 1216 1224 1231 1237 1244 1247 1244 1247 1243 1254 1265 1275 1280 1279 1279 1282 1290 1305 1307 1305 1303 1308 1313 1320 1317 1308 1325 1338 1345 1348 1355 1365 1362 1368 1398 1414 1423 1425 1412 1414 1421 1429 1432 1421 1412 1393 1375 1362 1365 1371 1364 1351 1334 1311 1297 1311 1334 1343 1331 1332 1347 1343 1327 1305 1297 1276 1245 1214 1207 1214 1222 1227 1226 1231 1241 1246 1237 1250 1255 1237 1237 1237 1240 1245 1248 1247 1244 1241 1261 1273 1266 1267 1268 1258 1252 1263 1267 1263 1253 1236 1227 1223 1250 1264 1262 1254 1241 1220 1214 1221 1219 1208 1197 1184 1187 1201 1205 1204 1195 1177 1154 1140 1147 1156 1154 1151 1160 1157 1151 1150 1134 1120 1108 1103 1100 1102 1105 1105 1101 1095 1093 1092 1090 1088 1085 1083 1078 1076 1074 1017 1016 1012 1007 1004 1014 1011 1008 1016 1023 1033 1044 1053 1060 1069 1078 1091 1105 1118 1131 1143 1150 1155 1157 1162 1165 1169 1175 1180 1183 1187 1186 1178 1180 1184 1189 1192 1196 1197 1197 1200 1202 1207 1203 1205 1211 1213 1218 1220 1224 1226 1222 1222 1233 1239 1245 1253 1255 1251 1253 1260 1268 1270 1284 1291 1293 1294 1293 1297 1312 1321 1321 1320 1317 1323 1333 1330 1319 1328 1343 1352 1359 1362 1375 1381 1384 1403 1428 1438 1428 1414 1410 1422 1428 1434 1436 1422 1402 1386 1384 1391 1397 1383 1362 1342 1321 1307 1313 1336 1347 1346 1338 1348 1351 1341 1325 1308 1291 1267 1238 1218 1218 1234 1245 1252 1244 1244 1254 1245 1249 1263 1251 1241 1240 1244 1249 1248 1245 1248 1256 1275 1273 1268 1276 1276 1266 1270 1276 1266 1260 1249 1238 1234 1241 1262 1268 1266 1256 1238 1220 1221 1222 1215 1212 1209 1206 1210 1215 1215 1211 1195 1168 1151 1154 1160 1158 1161 1171 1182 1177 1173 1166 1148 1130 1111 1102 1103 1109 1113 1111 1105 1100 1095 1094 1092 1090 1087 1086 1083 1081 1079 1026 1025 1021 1016 1011 1018 1021 1015 1019 1030 1043 1054 1059 1069 1079 1088 1102 1114 1129 1141 1152 1163 1167 1164 1172 1175 1180 1186 1190 1191 1191 1192 1193 1194 1195 1195 1195 1200 1205 1209 1212 1214 1216 1219 1221 1220 1220 1226 1231 1234 1233 1230 1229 1239 1246 1253 1263 1264 1262 1264 1273 1277 1278 1291 1299 1305 1309 1306 1304 1317 1327 1333 1334 1325 1333 1340 1338 1329 1335 1348 1356 1363 1366 1379 1388 1397 1413 1435 1444 1428 1414 1417 1429 1434 1437 1441 1430 1412 1408 1415 1422 1417 1392 1376 1359 1331 1322 1330 1345 1354 1344 1348 1354 1356 1346 1322 1306 1298 1278 1250 1228 1234 1252 1268 1269 1258 1253 1258 1247 1250 1264 1260 1248 1245 1249 1255 1248 1243 1255 1273 1282 1272 1274 1286 1281 1274 1289 1289 1270 1261 1249 1241 1244 1258 1269 1266 1265 1254 1236 1232 1234 1227 1222 1230 1231 1229 1228 1231 1230 1221 1203 1176 1161 1173 1178 1175 1174 1190 1201 1197 1191 1184 1171 1149 1125 1111 1111 1119 1125 1125 1123 1114 1105 1099 1096 1095 1093 1089 1085 1082 1080 1028 1023 1017 1017 1021 1028 1039 1041 1046 1046 1043 1053 1066 1077 1084 1089 1102 1117 1132 1142 1153 1164 1172 1173 1172 1177 1188 1193 1193 1191 1193 1196 1198 1199 1199 1199 1201 1204 1209 1216 1222 1222 1223 1227 1230 1227 1228 1231 1237 1243 1242 1237 1239 1244 1249 1258 1271 1273 1274 1279 1281 1284 1292 1300 1307 1315 1320 1318 1316 1320 1326 1337 1342 1337 1338 1345 1346 1337 1344 1353 1360 1371 1376 1386 1394 1408 1423 1443 1450 1439 1424 1425 1435 1441 1440 1446 1439 1429 1422 1432 1438 1428 1403 1385 1368 1343 1332 1334 1342 1356 1349 1354 1359 1359 1353 1338 1325 1311 1297 1280 1252 1241 1265 1287 1290 1276 1258 1263 1255 1254 1271 1266 1254 1252 1253 1262 1258 1252 1267 1289 1293 1282 1288 1294 1286 1288 1301 1297 1279 1265 1256 1247 1252 1267 1271 1267 1265 1255 1250 1257 1256 1244 1240 1249 1250 1245 1240 1241 1237 1224 1205 1192 1180 1193 1195 1192 1192 1206 1213 1210 1203 1195 1181 1155 1136 1125 1128 1134 1139 1141 1139 1133 1123 1115 1105 1097 1093 1090 1086 1084 1081 1029 1024 1018 1023 1033 1043 1053 1063 1072 1071 1069 1079 1092 1101 1106 1112 1119 1133 1150 1158 1162 1168 1174 1178 1180 1184 1193 1197 1198 1199 1201 1203 1204 1205 1205 1207 1211 1214 1215 1223 1231 1233 1234 1241 1244 1245 1242 1239 1243 1251 1253 1253 1252 1250 1248 1260 1274 1282 1286 1289 1294 1300 1303 1312 1321 1326 1330 1331 1331 1327 1327 1339 1345 1347 1341 1349 1354 1343 1350 1355 1364 1381 1389 1399 1408 1416 1429 1447 1456 1453 1433 1429 1440 1446 1446 1453 1451 1444 1432 1440 1444 1434 1410 1383 1360 1353 1353 1350 1345 1355 1357 1362 1363 1358 1351 1338 1326 1316 1307 1294 1273 1270 1284 1298 1300 1290 1265 1267 1273 1265 1278 1273 1260 1258 1262 1269 1268 1271 1287 1302 1298 1292 1304 1304 1296 1300 1304 1299 1276 1262 1255 1250 1259 1270 1272 1275 1273 1265 1277 1283 1279 1264 1254 1259 1259 1255 1248 1243 1236 1222 1206 1207 1200 1209 1211 1205 1208 1217 1221 1218 1211 1200 1180 1158 1148 1148 1147 1148 1154 1157 1155 1149 1140 1129 1117 1105 1096 1096 1092 1088 1085 1030 1029 1029 1037 1050 1061 1069 1077 1088 1093 1098 1105 1112 1117 1122 1130 1133 1147 1170 1181 1173 1172 1177 1182 1184 1187 1195 1197 1200 1201 1203 1205 1207 1208 1209 1212 1219 1225 1223 1230 1236 1241 1245 1245 1248 1251 1248 1248 1253 1259 1265 1261 1256 1257 1258 1266 1279 1292 1295 1297 1301 1305 1313 1322 1330 1336 1341 1344 1342 1340 1341 1349 1350 1349 1347 1350 1352 1349 1359 1360 1370 1386 1402 1418 1427 1424 1433 1446 1459 1462 1442 1435 1446 1452 1453 1462 1467 1456 1442 1444 1447 1436 1413 1386 1360 1362 1372 1368 1353 1353 1365 1372 1369 1358 1348 1335 1326 1322 1313 1300 1296 1301 1299 1309 1310 1298 1279 1268 1279 1274 1285 1279 1269 1268 1271 1274 1277 1290 1305 1311 1306 1310 1320 1318 1308 1306 1312 1301 1280 1269 1262 1259 1267 1275 1284 1288 1289 1285 1297 1300 1296 1277 1264 1264 1262 1257 1252 1245 1234 1223 1223 1227 1219 1222 1225 1222 1218 1224 1228 1223 1215 1202 1183 1172 1170 1168 1164 1162 1168 1170 1167 1158 1149 1140 1129 1115 1100 1099 1097 1094 1088 1028 1029 1040 1056 1072 1086 1095 1102 1109 1115 1121 1127 1132 1138 1143 1149 1156 1169 1193 1210 1195 1186 1186 1190 1193 1193 1199 1199 1202 1203 1205 1208 1210 1211 1213 1216 1223 1234 1236 1238 1245 1250 1253 1254 1257 1256 1259 1262 1265 1271 1277 1277 1272 1273 1277 1282 1286 1296 1302 1303 1306 1313 1321 1330 1339 1345 1350 1353 1355 1355 1357 1360 1361 1362 1365 1364 1363 1362 1371 1380 1385 1394 1413 1434 1441 1441 1438 1446 1465 1476 1469 1454 1457 1468 1465 1474 1479 1464 1453 1447 1449 1433 1413 1394 1379 1378 1383 1379 1367 1364 1381 1383 1376 1363 1350 1339 1334 1331 1321 1310 1321 1325 1317 1321 1322 1311 1297 1279 1287 1285 1293 1287 1279 1279 1278 1280 1283 1302 1316 1319 1322 1329 1334 1330 1317 1318 1317 1300 1279 1274 1266 1267 1275 1280 1293 1299 1301 1296 1305 1309 1303 1281 1268 1271 1267 1259 1256 1249 1234 1234 1241 1239 1230 1240 1236 1234 1236 1236 1234 1230 1226 1209 1202 1201 1197 1191 1183 1178 1175 1174 1170 1161 1154 1148 1138 1119 1099 1096 1095 1094 1088 1039 1038 1057 1074 1094 1113 1127 1134 1143 1156 1167 1173 1181 1187 1190 1192 1203 1210 1226 1243 1233 1213 1197 1198 1205 1205 1204 1202 1205 1207 1210 1212 1212 1216 1217 1219 1227 1243 1252 1250 1254 1258 1259 1264 1265 1263 1270 1274 1278 1283 1287 1290 1289 1292 1291 1291 1294 1298 1308 1311 1313 1320 1328 1337 1344 1350 1357 1361 1365 1366 1367 1369 1370 1374 1377 1373 1370 1369 1377 1389 1396 1398 1412 1429 1441 1443 1448 1450 1467 1479 1484 1478 1480 1496 1496 1492 1488 1474 1465 1457 1454 1440 1417 1394 1395 1402 1401 1395 1384 1384 1398 1396 1387 1370 1353 1347 1344 1339 1332 1325 1337 1339 1337 1332 1335 1330 1314 1297 1299 1298 1302 1298 1287 1287 1285 1288 1288 1303 1320 1325 1341 1346 1344 1334 1323 1328 1319 1300 1280 1279 1271 1272 1280 1282 1298 1307 1309 1307 1311 1314 1307 1286 1275 1280 1276 1276 1269 1258 1250 1249 1249 1248 1240 1249 1249 1249 1250 1246 1247 1250 1248 1235 1228 1225 1221 1213 1201 1189 1177 1172 1170 1166 1160 1151 1135 1116 1099 1096 1095 1091 1086 1044 1051 1070 1090 1108 1124 1142 1169 1196 1205 1204 1197 1212 1221 1224 1231 1245 1258 1261 1273 1261 1233 1206 1200 1206 1206 1202 1203 1206 1211 1212 1213 1215 1219 1221 1223 1230 1250 1264 1261 1260 1264 1265 1269 1271 1273 1278 1283 1289 1294 1296 1299 1301 1306 1303 1300 1305 1305 1312 1315 1321 1326 1333 1344 1352 1358 1364 1369 1375 1376 1380 1383 1382 1386 1391 1382 1378 1381 1386 1397 1405 1410 1416 1424 1446 1451 1453 1461 1470 1478 1494 1504 1514 1519 1514 1507 1493 1478 1466 1459 1459 1445 1423 1407 1406 1411 1410 1403 1397 1388 1396 1404 1393 1377 1360 1355 1351 1344 1341 1332 1340 1349 1352 1346 1347 1345 1328 1311 1307 1309 1310 1308 1294 1290 1291 1293 1297 1304 1323 1333 1355 1358 1349 1336 1329 1331 1321 1301 1285 1282 1276 1276 1288 1290 1302 1313 1317 1318 1317 1316 1302 1288 1289 1292 1290 1290 1281 1269 1260 1253 1252 1252 1246 1257 1262 1266 1262 1259 1266 1268 1265 1261 1258 1255 1249 1238 1223 1201 1182 1175 1173 1169 1162 1149 1131 1115 1105 1103 1099 1090 1090 1053 1057 1067 1085 1103 1129 1162 1205 1242 1259 1261 1253 1261 1270 1274 1286 1291 1295 1292 1294 1286 1264 1238 1213 1206 1210 1210 1208 1215 1218 1215 1218 1221 1223 1225 1225 1228 1245 1259 1264 1268 1270 1269 1270 1278 1280 1284 1291 1297 1303 1307 1308 1311 1314 1314 1314 1315 1317 1314 1317 1328 1329 1339 1350 1360 1367 1372 1377 1383 1385 1393 1398 1395 1400 1397 1392 1393 1396 1394 1405 1414 1420 1423 1428 1446 1456 1460 1470 1478 1486 1504 1522 1536 1538 1529 1520 1504 1484 1466 1465 1468 1456 1436 1429 1429 1426 1424 1419 1413 1405 1407 1410 1400 1381 1376 1364 1354 1349 1346 1339 1348 1359 1364 1357 1360 1357 1340 1320 1325 1318 1322 1312 1304 1297 1298 1299 1311 1319 1327 1344 1363 1365 1354 1346 1338 1331 1320 1297 1291 1286 1284 1279 1293 1303 1306 1317 1324 1325 1322 1315 1296 1292 1303 1299 1297 1297 1294 1281 1267 1255 1253 1251 1244 1263 1272 1278 1275 1276 1282 1282 1279 1279 1279 1280 1276 1264 1247 1224 1198 1185 1173 1161 1156 1147 1134 1123 1109 1099 1097 1092 1094 1058 1059 1067 1084 1101 1130 1168 1212 1247 1266 1281 1285 1293 1302 1305 1315 1315 1314 1311 1310 1302 1277 1238 1210 1208 1212 1213 1212 1216 1222 1215 1218 1221 1222 1224 1225 1228 1242 1259 1268 1273 1277 1274 1277 1281 1284 1290 1297 1305 1311 1315 1317 1319 1321 1322 1322 1324 1328 1323 1326 1334 1335 1347 1357 1365 1373 1379 1385 1390 1394 1401 1408 1410 1414 1400 1401 1410 1408 1405 1414 1420 1426 1433 1440 1446 1454 1466 1477 1486 1497 1512 1530 1547 1554 1545 1535 1520 1498 1475 1469 1475 1467 1452 1445 1445 1439 1436 1432 1425 1418 1413 1416 1406 1388 1382 1371 1362 1351 1348 1344 1349 1368 1372 1365 1365 1364 1349 1335 1341 1331 1331 1328 1318 1309 1305 1311 1327 1336 1339 1357 1383 1382 1367 1360 1350 1334 1314 1296 1298 1295 1298 1286 1285 1308 1310 1320 1323 1326 1326 1317 1303 1307 1308 1300 1296 1299 1299 1288 1274 1259 1243 1239 1243 1265 1278 1285 1288 1289 1292 1291 1288 1290 1290 1293 1291 1281 1266 1246 1223 1204 1182 1162 1156 1153 1144 1134 1112 1097 1102 1098 1095 1060 1065 1078 1092 1110 1135 1170 1210 1244 1264 1283 1297 1307 1317 1325 1334 1336 1334 1330 1328 1316 1285 1244 1217 1212 1215 1214 1213 1213 1217 1214 1217 1218 1220 1223 1230 1242 1252 1263 1279 1281 1289 1287 1281 1287 1295 1298 1306 1313 1319 1323 1323 1327 1331 1331 1329 1332 1336 1335 1329 1339 1348 1364 1377 1383 1383 1389 1398 1403 1406 1410 1422 1428 1428 1424 1416 1425 1423 1427 1428 1422 1435 1448 1454 1455 1455 1466 1479 1490 1502 1518 1536 1556 1567 1564 1555 1539 1515 1488 1475 1487 1481 1470 1464 1463 1457 1453 1448 1437 1426 1423 1428 1412 1400 1393 1384 1371 1353 1353 1350 1362 1376 1378 1375 1373 1367 1354 1350 1351 1342 1340 1337 1325 1319 1315 1321 1333 1347 1364 1380 1396 1395 1384 1373 1358 1336 1309 1309 1316 1310 1300 1289 1302 1317 1324 1327 1324 1327 1323 1307 1314 1318 1306 1307 1299 1290 1289 1284 1272 1252 1224 1219 1242 1265 1281 1292 1296 1293 1298 1297 1290 1295 1296 1294 1292 1286 1275 1258 1244 1225 1199 1174 1162 1157 1150 1139 1116 1099 1104 1102 1094 1066 1075 1086 1095 1119 1145 1182 1222 1257 1279 1294 1306 1317 1332 1346 1357 1363 1362 1355 1347 1323 1290 1252 1224 1214 1217 1214 1212 1210 1211 1212 1215 1219 1223 1232 1245 1258 1267 1273 1285 1290 1300 1295 1289 1298 1305 1307 1313 1320 1325 1332 1332 1334 1335 1334 1336 1338 1344 1344 1334 1348 1356 1370 1384 1393 1387 1391 1402 1411 1417 1421 1431 1436 1441 1438 1437 1445 1442 1446 1443 1433 1445 1458 1466 1464 1464 1469 1482 1492 1505 1521 1543 1564 1580 1583 1576 1558 1530 1501 1489 1506 1500 1489 1489 1488 1483 1475 1468 1449 1435 1437 1440 1421 1416 1409 1398 1381 1363 1361 1357 1368 1383 1386 1386 1384 1377 1365 1361 1362 1350 1346 1349 1340 1335 1332 1337 1344 1363 1388 1404 1416 1409 1396 1382 1357 1330 1314 1327 1327 1324 1310 1297 1314 1329 1334 1328 1330 1327 1315 1311 1325 1323 1310 1313 1302 1290 1285 1277 1262 1245 1226 1212 1226 1261 1286 1298 1298 1296 1298 1294 1290 1294 1295 1291 1291 1285 1275 1266 1252 1235 1214 1185 1165 1154 1149 1139 1119 1098 1100 1101 1093 1071 1074 1084 1103 1125 1152 1188 1230 1260 1277 1298 1317 1335 1355 1370 1380 1388 1388 1384 1364 1330 1290 1251 1223 1214 1213 1212 1211 1211 1212 1213 1215 1225 1235 1245 1257 1272 1284 1291 1295 1302 1310 1305 1303 1308 1316 1321 1322 1326 1332 1339 1342 1341 1340 1342 1347 1349 1354 1356 1342 1352 1360 1369 1388 1405 1405 1406 1416 1421 1425 1432 1443 1448 1451 1456 1450 1464 1462 1459 1456 1449 1453 1463 1477 1483 1482 1491 1495 1506 1519 1539 1557 1575 1596 1602 1589 1566 1541 1517 1501 1514 1519 1508 1504 1513 1508 1493 1477 1459 1446 1448 1445 1432 1431 1419 1404 1390 1379 1370 1369 1369 1390 1397 1396 1393 1392 1380 1371 1377 1361 1356 1364 1358 1353 1355 1356 1360 1381 1404 1420 1433 1425 1404 1381 1350 1328 1331 1339 1332 1330 1313 1313 1325 1339 1339 1335 1335 1325 1315 1319 1329 1324 1323 1319 1311 1299 1287 1269 1259 1244 1226 1232 1250 1276 1293 1299 1298 1294 1295 1291 1293 1292 1288 1289 1289 1282 1274 1267 1257 1244 1228 1202 1172 1158 1157 1144 1115 1102 1103 1100 1094 1082 1083 1085 1110 1135 1160 1190 1227 1260 1285 1304 1326 1347 1372 1393 1409 1416 1415 1403 1378 1343 1302 1269 1239 1219 1210 1209 1211 1217 1220 1223 1226 1236 1248 1249 1261 1285 1301 1310 1315 1316 1318 1318 1316 1315 1326 1332 1332 1334 1340 1344 1349 1351 1349 1353 1356 1357 1361 1365 1351 1358 1364 1372 1390 1409 1416 1418 1426 1430 1433 1439 1450 1457 1461 1470 1464 1475 1478 1472 1471 1468 1467 1472 1484 1495 1495 1505 1511 1515 1528 1545 1565 1586 1608 1617 1605 1581 1553 1525 1523 1541 1544 1534 1536 1538 1528 1513 1498 1481 1472 1466 1459 1452 1441 1426 1411 1395 1394 1386 1389 1394 1405 1407 1405 1403 1404 1391 1387 1391 1377 1376 1378 1372 1367 1374 1374 1376 1397 1416 1431 1441 1436 1412 1380 1350 1338 1350 1346 1339 1333 1318 1333 1342 1351 1345 1346 1339 1330 1326 1334 1337 1330 1329 1324 1315 1303 1289 1274 1263 1248 1234 1241 1266 1287 1295 1298 1298 1293 1293 1294 1295 1290 1286 1284 1284 1286 1274 1264 1257 1246 1230 1213 1188 1162 1149 1135 1113 1105 1108 1104 1100 1088 1085 1084 1111 1138 1161 1182 1212 1247 1274 1294 1319 1349 1388 1419 1440 1434 1427 1412 1388 1351 1317 1284 1244 1218 1209 1208 1213 1224 1232 1241 1249 1257 1260 1252 1265 1289 1306 1319 1326 1326 1326 1324 1321 1323 1330 1336 1339 1342 1347 1347 1353 1362 1359 1357 1358 1361 1364 1369 1359 1364 1370 1381 1395 1406 1414 1421 1430 1437 1442 1445 1453 1461 1470 1480 1481 1482 1492 1487 1485 1490 1488 1486 1496 1510 1512 1517 1527 1528 1538 1553 1574 1601 1621 1625 1616 1596 1568 1545 1540 1562 1568 1562 1565 1563 1547 1525 1504 1490 1486 1472 1464 1459 1448 1432 1412 1402 1410 1406 1410 1420 1421 1420 1413 1417 1419 1405 1404 1404 1391 1392 1391 1391 1386 1386 1391 1396 1412 1429 1443 1447 1435 1412 1384 1362 1357 1363 1353 1350 1341 1337 1355 1365 1366 1355 1355 1346 1341 1343 1353 1352 1342 1333 1323 1315 1306 1298 1292 1278 1264 1261 1266 1285 1298 1300 1299 1296 1294 1295 1296 1293 1289 1287 1281 1282 1288 1275 1264 1255 1243 1228 1215 1192 1160 1132 1122 1111 1107 1106 1104 1102 1088 1088 1086 1101 1130 1157 1181 1209 1239 1261 1281 1307 1341 1379 1418 1442 1436 1420 1407 1389 1358 1324 1293 1262 1234 1216 1211 1212 1218 1237 1259 1274 1280 1282 1272 1275 1296 1316 1330 1337 1339 1338 1341 1337 1333 1340 1344 1346 1349 1351 1353 1358 1371 1372 1365 1366 1372 1372 1375 1367 1363 1379 1389 1400 1406 1411 1421 1434 1440 1445 1450 1456 1465 1476 1487 1495 1490 1504 1502 1499 1510 1509 1507 1515 1527 1532 1531 1544 1545 1551 1566 1586 1611 1629 1628 1625 1610 1581 1561 1566 1588 1596 1595 1596 1584 1560 1536 1518 1512 1505 1484 1474 1473 1465 1450 1432 1420 1430 1428 1433 1441 1435 1427 1425 1433 1433 1425 1423 1424 1408 1414 1410 1412 1403 1402 1408 1417 1430 1441 1447 1449 1427 1399 1374 1365 1375 1368 1365 1357 1357 1366 1380 1380 1371 1364 1359 1354 1347 1360 1369 1365 1354 1342 1320 1315 1316 1313 1309 1300 1290 1296 1306 1313 1311 1307 1303 1296 1297 1297 1293 1291 1290 1288 1282 1278 1284 1274 1259 1245 1233 1221 1205 1180 1149 1124 1118 1114 1112 1107 1104 1103 1089 1098 1094 1095 1121 1147 1179 1208 1234 1254 1277 1301 1329 1361 1400 1424 1426 1413 1404 1397 1367 1326 1287 1253 1223 1208 1213 1220 1231 1257 1282 1301 1305 1297 1288 1290 1313 1334 1343 1349 1348 1346 1354 1351 1344 1349 1353 1354 1363 1360 1361 1363 1372 1384 1378 1376 1381 1382 1386 1373 1375 1387 1395 1405 1407 1413 1420 1429 1436 1443 1450 1458 1469 1482 1489 1501 1498 1511 1512 1511 1521 1527 1533 1535 1542 1548 1547 1558 1558 1567 1580 1601 1624 1636 1631 1636 1619 1589 1570 1590 1618 1627 1626 1619 1596 1569 1545 1533 1528 1516 1494 1485 1484 1481 1470 1457 1441 1449 1452 1452 1458 1455 1445 1440 1443 1443 1442 1440 1438 1424 1432 1434 1431 1427 1424 1427 1443 1458 1462 1453 1452 1432 1408 1386 1370 1385 1387 1388 1382 1379 1389 1391 1383 1376 1369 1362 1357 1363 1378 1381 1378 1366 1349 1329 1326 1331 1326 1324 1320 1312 1318 1326 1324 1318 1311 1304 1299 1301 1298 1290 1291 1290 1285 1278 1267 1267 1265 1246 1229 1216 1208 1188 1163 1136 1122 1117 1115 1114 1109 1105 1104 1093 1101 1103 1107 1116 1131 1161 1190 1220 1245 1273 1296 1316 1344 1378 1401 1410 1410 1403 1400 1373 1332 1288 1253 1225 1211 1212 1221 1243 1268 1291 1313 1331 1326 1318 1320 1332 1353 1356 1357 1354 1353 1357 1356 1356 1359 1362 1364 1371 1371 1373 1375 1379 1390 1394 1389 1387 1390 1397 1386 1378 1394 1402 1408 1412 1420 1427 1438 1447 1450 1454 1465 1478 1487 1500 1511 1513 1518 1513 1522 1532 1546 1552 1554 1558 1559 1563 1569 1573 1581 1598 1626 1651 1654 1641 1649 1622 1601 1589 1607 1642 1657 1654 1631 1599 1572 1553 1544 1535 1520 1507 1501 1497 1501 1497 1479 1465 1469 1471 1471 1477 1478 1473 1466 1463 1460 1458 1454 1450 1436 1444 1448 1454 1453 1444 1447 1466 1479 1474 1465 1452 1430 1403 1383 1385 1403 1411 1405 1396 1403 1407 1399 1388 1381 1371 1358 1370 1386 1397 1397 1390 1372 1355 1353 1355 1356 1351 1344 1340 1335 1331 1330 1328 1322 1315 1304 1303 1304 1300 1293 1290 1286 1277 1267 1253 1243 1244 1230 1212 1199 1192 1177 1155 1133 1116 1113 1114 1113 1109 1106 1105 1100 1098 1101 1111 1111 1120 1143 1169 1201 1230 1258 1283 1301 1328 1360 1387 1395 1400 1393 1387 1372 1339 1305 1278 1252 1235 1222 1225 1251 1272 1292 1320 1352 1365 1355 1353 1351 1365 1364 1361 1356 1355 1356 1357 1361 1364 1367 1369 1373 1379 1381 1378 1382 1390 1397 1397 1391 1396 1401 1400 1387 1403 1412 1416 1421 1429 1435 1441 1454 1458 1461 1473 1486 1494 1503 1509 1513 1519 1523 1533 1543 1553 1561 1571 1572 1575 1577 1587 1587 1591 1610 1636 1663 1663 1654 1665 1636 1618 1621 1638 1664 1687 1682 1643 1607 1573 1561 1558 1548 1535 1530 1524 1520 1532 1530 1497 1492 1495 1490 1495 1501 1499 1500 1497 1492 1484 1473 1467 1464 1447 1455 1459 1477 1477 1465 1473 1487 1488 1482 1477 1451 1423 1399 1389 1408 1424 1421 1416 1408 1419 1414 1405 1398 1385 1368 1355 1384 1409 1419 1419 1409 1391 1377 1377 1372 1372 1369 1362 1354 1344 1333 1325 1326 1326 1317 1307 1306 1305 1299 1291 1285 1277 1266 1257 1242 1235 1229 1215 1203 1198 1194 1185 1165 1139 1122 1119 1118 1118 1114 1111 1110 1107 1100 1106 1118 1118 1130 1145 1171 1198 1222 1247 1266 1284 1309 1341 1371 1385 1385 1381 1380 1367 1336 1302 1276 1249 1252 1258 1257 1276 1294 1312 1338 1366 1388 1379 1369 1367 1369 1367 1365 1357 1355 1357 1360 1365 1369 1372 1373 1377 1385 1385 1382 1387 1395 1399 1401 1398 1401 1406 1411 1404 1410 1423 1428 1434 1447 1452 1455 1465 1472 1474 1483 1494 1507 1514 1517 1521 1527 1541 1551 1558 1572 1582 1590 1592 1597 1603 1606 1605 1610 1636 1658 1683 1680 1673 1678 1659 1648 1660 1661 1688 1706 1682 1642 1607 1582 1574 1568 1562 1552 1546 1542 1536 1550 1540 1514 1510 1515 1515 1520 1529 1526 1528 1523 1516 1504 1488 1483 1476 1464 1471 1478 1495 1497 1491 1502 1509 1499 1495 1481 1448 1424 1411 1414 1433 1440 1428 1421 1422 1427 1420 1412 1399 1381 1363 1357 1388 1418 1429 1433 1425 1412 1402 1394 1384 1380 1379 1373 1353 1353 1348 1335 1331 1328 1322 1312 1307 1302 1297 1290 1278 1265 1258 1248 1239 1232 1226 1220 1212 1205 1197 1184 1168 1140 1125 1123 1121 1119 1116 1115 1113 1115 1110 1108 1112 1121 1124 1126 1149 1177 1198 1223 1245 1266 1292 1324 1354 1373 1377 1378 1380 1369 1344 1318 1302 1287 1284 1285 1276 1276 1304 1324 1344 1377 1404 1397 1381 1377 1373 1371 1369 1364 1362 1363 1365 1372 1378 1382 1383 1385 1389 1394 1397 1399 1407 1408 1409 1409 1410 1412 1416 1418 1415 1430 1437 1445 1463 1471 1474 1479 1487 1490 1498 1505 1518 1524 1531 1536 1539 1556 1568 1576 1596 1603 1604 1611 1611 1619 1619 1617 1624 1647 1672 1697 1695 1690 1694 1683 1684 1698 1699 1717 1725 1691 1644 1610 1599 1596 1592 1586 1580 1576 1568 1562 1569 1544 1532 1531 1535 1539 1544 1550 1551 1546 1537 1529 1515 1507 1503 1478 1487 1487 1503 1512 1514 1516 1527 1525 1519 1508 1479 1446 1439 1441 1443 1453 1449 1437 1418 1430 1433 1432 1421 1391 1376 1367 1362 1381 1412 1429 1434 1431 1422 1416 1403 1393 1386 1380 1372 1361 1368 1364 1353 1336 1325 1320 1312 1303 1296 1289 1282 1268 1255 1250 1242 1236 1231 1226 1222 1216 1208 1195 1177 1158 1139 1131 1131 1128 1126 1123 1121 1119 1117 1119 1109 1113 1127 1123 1124 1143 1166 1183 1206 1230 1252 1279 1310 1341 1364 1372 1378 1383 1377 1349 1320 1304 1293 1300 1309 1290 1302 1327 1349 1369 1391 1386 1378 1376 1379 1382 1378 1371 1368 1371 1366 1370 1375 1379 1385 1389 1389 1391 1401 1405 1409 1412 1414 1415 1417 1417 1413 1415 1425 1424 1431 1441 1451 1465 1479 1485 1492 1501 1508 1514 1520 1528 1532 1543 1548 1554 1567 1582 1599 1620 1623 1618 1622 1624 1626 1630 1630 1634 1649 1678 1708 1713 1703 1712 1712 1719 1737 1745 1748 1735 1691 1651 1623 1611 1614 1611 1606 1601 1596 1590 1587 1580 1563 1561 1554 1550 1558 1565 1573 1577 1571 1559 1546 1528 1521 1511 1491 1501 1500 1518 1528 1530 1539 1541 1531 1530 1513 1487 1466 1470 1470 1467 1465 1452 1429 1417 1434 1437 1443 1430 1400 1386 1380 1371 1378 1410 1433 1435 1430 1417 1416 1406 1394 1389 1382 1373 1382 1382 1372 1361 1335 1315 1307 1300 1292 1285 1276 1266 1257 1251 1248 1242 1237 1234 1228 1223 1217 1207 1192 1165 1149 1143 1140 1140 1137 1132 1129 1123 1117 1119 1123 1116 1121 1133 1133 1137 1147 1159 1176 1202 1226 1248 1271 1298 1332 1362 1375 1381 1386 1387 1367 1346 1329 1318 1322 1328 1314 1319 1341 1364 1384 1388 1379 1378 1380 1382 1384 1382 1376 1371 1374 1377 1377 1374 1381 1389 1394 1395 1397 1405 1412 1419 1426 1428 1425 1425 1429 1427 1422 1435 1441 1431 1447 1460 1465 1485 1499 1510 1520 1528 1531 1537 1547 1552 1555 1559 1575 1581 1593 1618 1641 1646 1640 1631 1642 1638 1642 1648 1649 1661 1689 1719 1732 1714 1729 1740 1744 1768 1787 1775 1734 1687 1662 1644 1629 1636 1634 1630 1623 1618 1613 1606 1594 1591 1587 1574 1574 1584 1585 1597 1599 1591 1578 1565 1551 1532 1511 1515 1513 1516 1532 1545 1554 1561 1546 1544 1533 1506 1485 1482 1486 1489 1487 1476 1455 1423 1428 1445 1446 1457 1439 1412 1406 1397 1388 1403 1430 1446 1446 1429 1411 1409 1401 1389 1390 1394 1391 1392 1386 1374 1358 1327 1303 1291 1283 1277 1271 1262 1250 1246 1251 1249 1245 1242 1237 1231 1226 1218 1204 1188 1155 1146 1149 1147 1144 1141 1136 1132 1124 1121 1136 1130 1129 1121 1129 1138 1142 1147 1156 1180 1211 1237 1258 1277 1299 1334 1371 1386 1393 1398 1402 1396 1385 1369 1359 1358 1354 1343 1341 1361 1382 1386 1378 1380 1383 1385 1385 1385 1382 1378 1376 1379 1387 1382 1379 1388 1396 1400 1403 1404 1410 1420 1428 1440 1438 1436 1438 1444 1437 1429 1440 1449 1442 1453 1468 1476 1490 1505 1520 1534 1542 1549 1553 1559 1562 1565 1571 1583 1595 1601 1619 1644 1648 1653 1650 1652 1651 1655 1661 1665 1677 1702 1725 1743 1731 1740 1752 1759 1778 1809 1790 1736 1698 1681 1669 1658 1661 1660 1656 1645 1642 1637 1622 1615 1617 1610 1598 1599 1612 1608 1617 1614 1603 1592 1579 1563 1540 1519 1536 1530 1534 1547 1564 1575 1570 1559 1552 1530 1504 1491 1493 1497 1494 1491 1479 1452 1419 1433 1457 1458 1469 1461 1437 1426 1419 1401 1410 1444 1456 1447 1429 1411 1403 1401 1405 1410 1407 1401 1394 1382 1362 1337 1317 1299 1284 1280 1273 1262 1252 1238 1236 1244 1243 1240 1236 1233 1225 1217 1211 1196 1173 1153 1147 1154 1149 1140 1138 1137 1131 1128 1132 1149 1135 1137 1126 1130 1140 1151 1165 1184 1206 1229 1251 1276 1296 1315 1351 1383 1400 1411 1418 1424 1420 1412 1396 1389 1393 1388 1371 1375 1388 1398 1387 1380 1381 1383 1386 1387 1386 1384 1382 1383 1387 1393 1391 1392 1395 1402 1406 1409 1412 1416 1421 1431 1445 1450 1453 1454 1449 1442 1443 1445 1455 1460 1461 1478 1491 1503 1516 1530 1544 1554 1562 1568 1576 1579 1579 1585 1593 1613 1624 1627 1642 1659 1665 1672 1671 1665 1661 1672 1684 1690 1713 1731 1755 1755 1748 1759 1778 1781 1809 1798 1754 1721 1702 1692 1683 1677 1677 1672 1663 1656 1655 1643 1641 1637 1634 1626 1620 1635 1632 1630 1626 1616 1606 1588 1565 1549 1538 1552 1548 1552 1563 1583 1589 1576 1572 1551 1532 1521 1511 1505 1505 1499 1487 1470 1444 1424 1442 1467 1471 1478 1480 1461 1449 1437 1423 1437 1461 1465 1449 1423 1418 1422 1423 1426 1425 1417 1405 1391 1371 1346 1319 1306 1300 1288 1284 1275 1261 1247 1234 1229 1224 1225 1226 1223 1217 1204 1193 1189 1177 1163 1159 1153 1149 1145 1136 1131 1135 1134 1132 1129 1166 1153 1146 1140 1137 1129 1143 1164 1184 1205 1228 1254 1283 1306 1333 1366 1399 1418 1427 1432 1440 1441 1441 1432 1416 1416 1414 1398 1393 1392 1390 1386 1385 1384 1384 1386 1387 1388 1389 1389 1391 1393 1399 1401 1402 1400 1406 1411 1415 1420 1422 1419 1429 1446 1459 1465 1464 1449 1449 1459 1455 1462 1473 1468 1484 1501 1513 1525 1537 1550 1564 1574 1581 1589 1593 1595 1598 1608 1626 1635 1633 1640 1666 1675 1683 1688 1682 1668 1679 1694 1699 1716 1733 1756 1768 1759 1769 1786 1792 1808 1803 1769 1738 1719 1709 1705 1703 1702 1693 1692 1683 1681 1669 1665 1664 1655 1642 1641 1652 1650 1643 1638 1630 1618 1595 1570 1565 1562 1571 1565 1572 1586 1601 1596 1590 1574 1546 1542 1542 1531 1517 1509 1504 1483 1462 1441 1434 1448 1475 1487 1491 1498 1488 1475 1454 1442 1466 1477 1470 1451 1419 1427 1439 1440 1437 1430 1415 1395 1375 1351 1328 1309 1299 1293 1284 1280 1279 1268 1254 1238 1230 1229 1219 1213 1211 1212 1204 1195 1192 1185 1177 1169 1153 1144 1146 1140 1137 1141 1138 1131 1125 1172 1167 1155 1152 1145 1134 1150 1170 1191 1212 1232 1259 1291 1318 1349 1382 1407 1433 1447 1438 1437 1442 1445 1447 1429 1440 1427 1393 1383 1381 1381 1381 1381 1382 1384 1385 1385 1386 1387 1388 1392 1395 1399 1402 1406 1409 1410 1415 1421 1427 1427 1424 1433 1448 1455 1468 1471 1458 1461 1468 1469 1472 1483 1480 1492 1507 1519 1533 1547 1560 1572 1582 1592 1603 1611 1616 1618 1628 1637 1643 1650 1654 1669 1682 1695 1701 1702 1695 1690 1696 1713 1727 1750 1762 1782 1781 1778 1793 1806 1813 1802 1782 1761 1743 1731 1722 1717 1716 1713 1708 1701 1693 1683 1679 1674 1666 1656 1646 1661 1662 1652 1648 1641 1623 1593 1575 1581 1586 1591 1589 1591 1609 1615 1606 1595 1569 1557 1553 1547 1535 1522 1514 1497 1480 1467 1457 1450 1454 1488 1507 1513 1519 1515 1498 1473 1458 1480 1487 1476 1456 1433 1440 1447 1446 1443 1435 1415 1390 1368 1347 1324 1307 1294 1283 1277 1274 1274 1269 1260 1247 1241 1239 1225 1215 1212 1213 1208 1203 1199 1193 1183 1169 1152 1146 1149 1146 1145 1146 1142 1130 1118 1173 1171 1166 1169 1160 1148 1144 1164 1191 1219 1243 1270 1297 1323 1351 1382 1409 1439 1458 1455 1446 1441 1439 1438 1440 1449 1431 1400 1387 1380 1382 1384 1384 1385 1387 1389 1390 1391 1394 1396 1398 1400 1402 1408 1413 1415 1417 1424 1428 1433 1436 1436 1443 1453 1456 1476 1485 1476 1471 1472 1485 1488 1496 1499 1510 1515 1525 1542 1558 1571 1580 1587 1602 1615 1627 1635 1641 1648 1651 1658 1669 1673 1675 1687 1703 1708 1716 1722 1707 1701 1723 1742 1766 1770 1790 1801 1792 1802 1815 1823 1816 1804 1787 1769 1757 1747 1743 1741 1737 1731 1724 1714 1707 1704 1695 1682 1669 1674 1685 1682 1670 1667 1653 1616 1595 1601 1607 1608 1604 1613 1621 1626 1630 1622 1596 1573 1575 1573 1565 1544 1537 1516 1508 1496 1480 1482 1485 1495 1511 1526 1535 1534 1529 1511 1483 1478 1494 1495 1483 1468 1460 1456 1453 1451 1449 1445 1427 1398 1376 1357 1328 1308 1289 1283 1279 1274 1272 1273 1268 1261 1255 1246 1233 1223 1219 1216 1210 1203 1199 1191 1179 1162 1155 1155 1150 1147 1146 1143 1135 1126 1119 1173 1173 1176 1184 1177 1159 1143 1158 1189 1221 1250 1276 1299 1324 1350 1378 1408 1435 1459 1471 1461 1447 1435 1435 1445 1450 1429 1398 1384 1378 1379 1381 1382 1384 1385 1387 1391 1395 1398 1402 1404 1405 1406 1412 1416 1420 1427 1431 1434 1442 1442 1441 1446 1456 1465 1480 1491 1492 1487 1488 1488 1496 1503 1510 1517 1524 1531 1542 1556 1573 1588 1595 1605 1615 1629 1641 1652 1662 1667 1674 1679 1685 1684 1690 1702 1711 1723 1733 1726 1714 1727 1752 1774 1777 1793 1814 1814 1812 1821 1834 1835 1825 1809 1793 1785 1779 1770 1762 1759 1753 1744 1735 1725 1724 1715 1699 1683 1695 1705 1702 1685 1681 1662 1622 1609 1624 1631 1628 1622 1625 1643 1646 1642 1630 1602 1584 1590 1584 1576 1560 1543 1522 1521 1506 1492 1499 1511 1522 1533 1541 1545 1544 1538 1524 1507 1499 1498 1497 1486 1476 1468 1458 1451 1448 1443 1439 1429 1406 1375 1348 1320 1302 1292 1301 1297 1286 1282 1286 1283 1276 1265 1253 1239 1227 1221 1217 1211 1204 1199 1192 1180 1163 1157 1157 1152 1147 1145 1141 1134 1130 1129 1173 1178 1182 1186 1190 1173 1156 1161 1185 1215 1243 1271 1295 1317 1343 1369 1395 1419 1447 1465 1455 1453 1439 1437 1446 1451 1432 1399 1380 1379 1379 1380 1382 1384 1386 1390 1394 1399 1402 1406 1409 1410 1411 1414 1421 1426 1432 1438 1443 1446 1453 1454 1456 1460 1471 1486 1499 1509 1510 1507 1499 1512 1516 1525 1532 1540 1545 1556 1569 1586 1600 1611 1619 1626 1642 1654 1667 1679 1685 1690 1696 1702 1702 1704 1708 1726 1735 1739 1743 1737 1731 1758 1787 1789 1802 1826 1834 1827 1832 1844 1843 1833 1824 1813 1811 1804 1785 1774 1773 1766 1755 1745 1739 1737 1727 1713 1705 1711 1714 1713 1700 1686 1658 1635 1636 1647 1651 1648 1643 1647 1661 1664 1655 1630 1610 1610 1610 1601 1590 1571 1551 1542 1534 1522 1522 1530 1542 1552 1556 1558 1556 1552 1542 1529 1517 1511 1504 1497 1487 1480 1471 1462 1457 1451 1447 1442 1433 1406 1367 1338 1311 1296 1315 1326 1316 1302 1291 1286 1281 1276 1267 1256 1245 1236 1226 1216 1216 1213 1208 1203 1192 1174 1149 1151 1156 1154 1151 1149 1149 1148 1148 1179 1183 1188 1194 1197 1193 1179 1160 1168 1202 1232 1259 1283 1301 1325 1348 1371 1394 1422 1434 1425 1443 1437 1430 1442 1447 1439 1408 1381 1380 1381 1382 1383 1385 1389 1393 1397 1401 1405 1407 1409 1410 1412 1415 1424 1430 1433 1443 1448 1449 1458 1464 1464 1462 1469 1481 1496 1509 1517 1514 1513 1524 1528 1536 1544 1553 1558 1566 1577 1588 1602 1613 1623 1631 1647 1659 1672 1685 1694 1700 1706 1710 1714 1716 1718 1735 1742 1746 1755 1750 1744 1762 1785 1792 1806 1829 1844 1845 1841 1852 1853 1848 1835 1829 1832 1821 1797 1792 1785 1775 1761 1754 1761 1755 1737 1728 1735 1733 1722 1719 1714 1687 1655 1643 1663 1671 1672 1672 1670 1679 1680 1677 1666 1634 1623 1638 1632 1618 1603 1582 1566 1564 1552 1547 1554 1561 1569 1574 1574 1570 1562 1552 1535 1520 1512 1504 1495 1486 1478 1474 1468 1463 1457 1448 1438 1429 1414 1393 1366 1342 1317 1306 1329 1336 1330 1319 1311 1301 1293 1286 1276 1264 1251 1237 1228 1224 1220 1215 1209 1201 1189 1169 1153 1154 1166 1167 1163 1162 1163 1169 1175 1179 1186 1195 1198 1196 1198 1197 1177 1171 1192 1215 1235 1259 1286 1312 1337 1360 1367 1383 1388 1391 1405 1396 1407 1418 1423 1427 1402 1382 1376 1376 1379 1383 1385 1389 1394 1398 1403 1406 1408 1410 1413 1415 1419 1428 1432 1437 1445 1450 1453 1460 1468 1470 1469 1471 1479 1492 1506 1517 1521 1528 1536 1544 1552 1560 1569 1577 1585 1588 1600 1611 1617 1630 1641 1650 1662 1676 1690 1704 1715 1724 1727 1729 1731 1735 1743 1749 1758 1767 1773 1773 1771 1787 1805 1814 1831 1854 1860 1850 1861 1869 1864 1853 1846 1842 1827 1810 1799 1791 1779 1767 1766 1769 1761 1749 1745 1755 1749 1738 1733 1719 1691 1669 1661 1680 1690 1695 1700 1702 1701 1697 1690 1672 1644 1646 1658 1649 1635 1615 1599 1589 1586 1582 1579 1584 1588 1589 1589 1585 1579 1568 1551 1531 1514 1503 1497 1488 1478 1467 1463 1464 1463 1455 1447 1435 1418 1400 1386 1371 1348 1332 1331 1337 1339 1335 1322 1314 1305 1298 1292 1285 1275 1264 1255 1244 1238 1230 1219 1202 1181 1169 1172 1177 1180 1186 1187 1188 1189 1193 1193 1192 1181 1194 1202 1204 1203 1207 1212 1204 1196 1191 1194 1219 1242 1269 1297 1313 1327 1338 1347 1353 1357 1364 1366 1372 1379 1383 1386 1389 1387 1380 1380 1379 1387 1391 1394 1399 1404 1409 1413 1416 1419 1423 1424 1430 1440 1443 1444 1448 1457 1460 1466 1474 1479 1481 1486 1491 1499 1509 1520 1532 1540 1550 1562 1570 1577 1584 1590 1601 1599 1612 1621 1625 1639 1649 1657 1669 1685 1698 1712 1726 1736 1740 1742 1747 1752 1753 1758 1769 1775 1786 1793 1783 1793 1815 1825 1836 1864 1870 1863 1872 1884 1885 1878 1866 1854 1837 1821 1815 1801 1786 1784 1784 1776 1769 1775 1777 1776 1769 1760 1753 1719 1693 1679 1695 1700 1705 1716 1720 1720 1718 1713 1706 1681 1656 1675 1682 1673 1658 1639 1616 1619 1619 1619 1616 1614 1611 1602 1596 1586 1579 1566 1549 1531 1513 1501 1502 1493 1481 1464 1454 1454 1454 1450 1442 1431 1412 1395 1380 1372 1359 1346 1345 1337 1335 1330 1321 1313 1305 1299 1293 1287 1277 1266 1261 1252 1240 1227 1210 1198 1184 1178 1188 1201 1205 1207 1208 1209 1210 1211 1208 1204 1181 1197 1204 1208 1211 1217 1221 1222 1219 1207 1195 1207 1229 1252 1272 1285 1299 1312 1320 1328 1333 1337 1342 1350 1355 1358 1359 1364 1371 1374 1378 1381 1387 1391 1396 1401 1405 1407 1409 1416 1419 1422 1426 1438 1451 1452 1458 1455 1460 1466 1470 1478 1482 1488 1499 1499 1502 1510 1518 1532 1544 1559 1572 1582 1588 1589 1591 1605 1607 1616 1624 1633 1645 1657 1671 1685 1698 1708 1721 1733 1742 1748 1753 1762 1767 1766 1770 1777 1786 1795 1807 1807 1806 1822 1840 1849 1871 1885 1886 1888 1897 1903 1900 1888 1874 1855 1839 1828 1811 1794 1794 1793 1782 1783 1795 1793 1787 1783 1773 1758 1727 1705 1693 1712 1721 1723 1731 1736 1739 1736 1727 1715 1696 1676 1693 1699 1689 1672 1654 1637 1642 1645 1643 1635 1623 1614 1602 1595 1580 1561 1547 1537 1525 1510 1506 1509 1498 1484 1466 1451 1440 1439 1441 1429 1417 1405 1393 1377 1368 1369 1354 1344 1336 1332 1328 1322 1312 1301 1292 1285 1275 1265 1255 1250 1247 1238 1233 1221 1216 1212 1209 1211 1217 1216 1217 1221 1219 1216 1214 1212 1210 1181 1197 1206 1213 1215 1224 1228 1230 1233 1229 1218 1216 1229 1240 1249 1266 1279 1289 1295 1304 1312 1322 1332 1342 1348 1352 1354 1356 1361 1368 1374 1382 1389 1395 1401 1405 1409 1413 1418 1425 1428 1430 1432 1444 1462 1464 1468 1469 1471 1474 1480 1486 1491 1498 1508 1514 1517 1522 1529 1540 1549 1564 1576 1594 1611 1610 1607 1625 1631 1637 1641 1648 1656 1674 1692 1705 1712 1719 1732 1744 1753 1760 1768 1775 1779 1782 1783 1785 1801 1810 1822 1831 1827 1832 1854 1865 1880 1903 1909 1910 1914 1920 1917 1907 1894 1875 1853 1835 1819 1805 1805 1801 1795 1802 1808 1806 1801 1795 1783 1764 1735 1716 1720 1733 1734 1746 1756 1759 1757 1750 1741 1722 1703 1705 1715 1718 1707 1685 1678 1674 1675 1671 1656 1641 1629 1621 1602 1581 1564 1547 1543 1545 1540 1529 1521 1517 1505 1488 1471 1452 1445 1444 1442 1430 1414 1409 1401 1389 1374 1366 1354 1349 1341 1337 1331 1320 1306 1292 1278 1269 1262 1256 1249 1241 1240 1245 1253 1254 1246 1239 1236 1233 1231 1227 1226 1229 1227 1223 1220 1218 1217 1186 1206 1217 1221 1223 1234 1236 1238 1243 1246 1246 1245 1244 1246 1250 1261 1271 1282 1287 1295 1301 1309 1325 1336 1345 1350 1354 1358 1361 1366 1372 1380 1388 1394 1399 1403 1408 1413 1421 1427 1430 1431 1431 1443 1461 1468 1473 1477 1480 1482 1486 1491 1498 1503 1510 1516 1521 1528 1535 1546 1561 1572 1581 1596 1614 1619 1624 1634 1641 1649 1658 1661 1668 1683 1696 1709 1721 1732 1741 1752 1763 1772 1781 1789 1792 1796 1797 1801 1812 1822 1832 1842 1849 1853 1869 1880 1896 1916 1925 1930 1939 1942 1937 1926 1912 1891 1865 1845 1830 1823 1824 1820 1815 1818 1822 1821 1816 1806 1791 1773 1747 1727 1742 1757 1751 1763 1781 1784 1778 1767 1757 1736 1714 1723 1732 1733 1723 1707 1702 1696 1684 1673 1667 1656 1642 1623 1600 1579 1564 1548 1549 1559 1553 1544 1530 1515 1499 1483 1468 1454 1449 1449 1448 1444 1433 1419 1403 1391 1384 1374 1358 1343 1332 1325 1315 1309 1298 1290 1279 1272 1273 1272 1264 1255 1253 1258 1262 1261 1258 1254 1251 1248 1246 1245 1243 1240 1238 1236 1233 1230 1228 1185 1204 1219 1227 1235 1240 1243 1246 1252 1259 1260 1254 1257 1268 1271 1263 1273 1289 1299 1307 1304 1302 1315 1326 1338 1346 1351 1357 1362 1367 1373 1379 1385 1389 1392 1398 1406 1412 1420 1427 1431 1433 1437 1445 1460 1476 1484 1489 1492 1494 1495 1501 1509 1515 1522 1528 1534 1538 1543 1558 1574 1583 1586 1595 1618 1635 1646 1653 1664 1675 1684 1681 1688 1699 1702 1720 1737 1751 1759 1770 1781 1790 1800 1808 1810 1812 1816 1820 1825 1834 1851 1859 1862 1877 1880 1896 1917 1932 1944 1948 1959 1960 1960 1949 1936 1914 1890 1866 1849 1842 1844 1847 1837 1831 1837 1839 1828 1816 1799 1782 1761 1746 1760 1776 1776 1778 1799 1805 1798 1784 1771 1757 1744 1744 1748 1747 1736 1720 1706 1700 1690 1683 1686 1676 1655 1625 1602 1583 1569 1562 1571 1578 1570 1559 1544 1525 1506 1489 1475 1463 1459 1457 1453 1449 1438 1420 1402 1387 1375 1368 1351 1336 1328 1322 1316 1308 1291 1290 1293 1293 1286 1279 1275 1273 1271 1268 1269 1268 1266 1265 1262 1258 1256 1253 1250 1248 1244 1239 1236 1234 1231 1189 1195 1205 1223 1238 1244 1249 1253 1259 1264 1268 1271 1276 1280 1279 1282 1278 1277 1299 1312 1319 1325 1323 1321 1336 1349 1356 1362 1368 1371 1375 1380 1385 1388 1393 1400 1408 1416 1425 1432 1437 1443 1448 1450 1461 1484 1498 1502 1506 1508 1506 1510 1520 1527 1535 1542 1549 1550 1555 1572 1586 1591 1591 1599 1619 1640 1655 1668 1681 1695 1700 1696 1705 1709 1719 1739 1755 1770 1779 1787 1797 1806 1815 1822 1826 1829 1832 1836 1840 1848 1865 1874 1873 1888 1894 1905 1921 1936 1949 1960 1972 1977 1980 1969 1948 1929 1905 1883 1866 1863 1870 1872 1863 1858 1861 1856 1845 1833 1814 1791 1766 1771 1791 1795 1795 1804 1817 1825 1813 1800 1786 1778 1780 1775 1769 1763 1748 1724 1701 1701 1708 1709 1707 1691 1662 1632 1609 1590 1576 1579 1591 1589 1579 1567 1550 1530 1509 1495 1483 1472 1461 1452 1444 1435 1423 1410 1400 1388 1377 1368 1354 1342 1332 1324 1316 1302 1293 1302 1310 1309 1306 1293 1288 1285 1284 1278 1274 1272 1270 1266 1262 1259 1257 1255 1252 1249 1244 1241 1239 1238 1236 1192 1194 1198 1215 1233 1243 1250 1257 1263 1268 1270 1275 1287 1294 1287 1289 1286 1275 1290 1305 1320 1329 1334 1336 1343 1351 1353 1359 1364 1368 1374 1380 1385 1389 1395 1401 1407 1413 1422 1429 1437 1443 1445 1446 1452 1471 1499 1509 1518 1522 1515 1516 1524 1532 1538 1546 1555 1558 1570 1582 1597 1605 1606 1615 1627 1640 1653 1674 1688 1708 1717 1715 1721 1723 1742 1759 1774 1791 1798 1806 1813 1822 1830 1838 1841 1846 1850 1854 1862 1870 1885 1893 1892 1901 1908 1911 1922 1943 1954 1975 1988 1995 1994 1983 1965 1948 1927 1908 1891 1885 1891 1893 1880 1875 1875 1873 1863 1851 1831 1806 1783 1782 1802 1814 1820 1830 1844 1850 1837 1830 1818 1805 1800 1792 1783 1775 1762 1743 1724 1713 1717 1721 1715 1694 1668 1643 1619 1603 1596 1600 1604 1594 1576 1559 1540 1518 1500 1490 1483 1472 1456 1445 1437 1431 1421 1411 1407 1400 1392 1380 1367 1354 1340 1324 1313 1309 1319 1326 1325 1328 1326 1312 1303 1298 1294 1288 1282 1278 1276 1272 1269 1264 1262 1259 1257 1252 1249 1245 1244 1242 1239 1194 1198 1203 1212 1223 1233 1248 1262 1269 1274 1278 1286 1294 1304 1304 1306 1307 1301 1302 1307 1307 1313 1331 1343 1349 1354 1357 1361 1365 1370 1375 1380 1386 1392 1398 1404 1411 1417 1425 1434 1442 1447 1451 1456 1462 1471 1500 1525 1543 1547 1536 1529 1534 1543 1544 1559 1570 1577 1582 1591 1612 1630 1632 1639 1650 1653 1660 1679 1698 1721 1740 1744 1739 1750 1764 1774 1791 1809 1816 1825 1832 1840 1848 1854 1857 1863 1867 1872 1882 1890 1902 1911 1912 1915 1916 1913 1923 1946 1961 1982 1996 2005 2007 1997 1985 1967 1947 1932 1919 1911 1912 1909 1900 1897 1892 1888 1878 1856 1833 1813 1808 1812 1826 1841 1851 1860 1867 1867 1857 1848 1838 1827 1819 1812 1801 1788 1773 1756 1742 1731 1733 1734 1722 1698 1672 1649 1629 1622 1627 1630 1619 1606 1579 1554 1530 1513 1501 1490 1482 1472 1459 1454 1446 1448 1440 1425 1419 1412 1404 1391 1376 1360 1349 1329 1318 1327 1351 1348 1338 1348 1342 1328 1317 1312 1305 1298 1291 1285 1279 1275 1273 1268 1265 1261 1258 1256 1251 1247 1244 1242 1239 1193 1199 1206 1212 1214 1225 1246 1263 1272 1278 1287 1297 1301 1312 1318 1323 1326 1328 1326 1323 1312 1311 1323 1334 1347 1358 1357 1361 1365 1369 1374 1378 1383 1388 1396 1404 1409 1417 1426 1438 1445 1449 1456 1463 1467 1469 1491 1512 1533 1540 1542 1537 1541 1551 1554 1565 1576 1588 1593 1602 1621 1637 1638 1652 1662 1664 1665 1687 1711 1732 1750 1763 1761 1771 1782 1792 1801 1818 1828 1841 1851 1859 1866 1873 1877 1880 1884 1888 1898 1906 1916 1926 1930 1929 1924 1919 1931 1945 1966 1988 2005 2016 2022 2013 2002 1984 1964 1952 1939 1932 1926 1918 1916 1914 1905 1897 1883 1859 1839 1826 1834 1842 1851 1866 1881 1889 1889 1880 1870 1860 1849 1840 1829 1817 1803 1789 1775 1762 1750 1740 1736 1729 1717 1701 1681 1663 1645 1632 1646 1642 1626 1609 1581 1556 1533 1516 1514 1513 1501 1485 1473 1465 1456 1452 1444 1430 1424 1418 1404 1388 1374 1362 1360 1344 1335 1340 1363 1361 1352 1362 1354 1340 1329 1320 1312 1304 1296 1289 1281 1276 1273 1269 1266 1262 1259 1256 1252 1247 1243 1239 1235 1194 1199 1205 1210 1214 1229 1246 1262 1271 1279 1290 1300 1307 1317 1323 1328 1334 1342 1345 1346 1341 1336 1333 1334 1345 1351 1359 1365 1367 1369 1372 1378 1384 1389 1396 1403 1413 1428 1440 1445 1448 1460 1469 1477 1482 1482 1490 1514 1537 1546 1551 1549 1547 1558 1563 1570 1584 1600 1613 1622 1631 1647 1663 1673 1678 1692 1696 1699 1722 1753 1776 1787 1789 1794 1807 1817 1824 1833 1847 1865 1876 1882 1889 1895 1899 1903 1908 1910 1921 1932 1941 1948 1948 1944 1938 1939 1949 1950 1974 2002 2023 2037 2039 2027 2014 1999 1984 1970 1954 1944 1934 1926 1927 1923 1914 1901 1881 1866 1858 1849 1858 1861 1871 1887 1903 1910 1905 1893 1878 1869 1859 1850 1837 1822 1808 1793 1778 1767 1758 1749 1742 1732 1720 1709 1696 1682 1669 1658 1652 1654 1643 1627 1597 1567 1540 1537 1537 1532 1521 1499 1486 1475 1469 1464 1461 1455 1448 1428 1389 1381 1386 1381 1374 1353 1341 1359 1375 1372 1376 1372 1359 1346 1335 1321 1310 1302 1296 1289 1287 1283 1279 1274 1269 1266 1262 1257 1254 1250 1245 1240 1234 1203 1208 1211 1213 1217 1230 1242 1262 1278 1288 1295 1308 1315 1322 1327 1334 1339 1346 1355 1362 1367 1368 1360 1355 1354 1348 1365 1377 1374 1371 1372 1379 1387 1391 1397 1408 1423 1442 1453 1450 1453 1472 1484 1492 1501 1501 1500 1525 1545 1553 1554 1557 1551 1562 1563 1573 1590 1604 1620 1630 1640 1656 1674 1680 1686 1704 1713 1719 1737 1762 1781 1792 1803 1811 1828 1840 1846 1849 1863 1880 1892 1899 1906 1912 1915 1918 1924 1932 1939 1950 1958 1960 1959 1953 1950 1956 1961 1966 1987 2012 2033 2052 2051 2038 2025 2014 1999 1986 1970 1958 1950 1944 1940 1934 1926 1906 1884 1877 1883 1875 1879 1876 1890 1911 1922 1920 1913 1902 1887 1878 1868 1859 1846 1830 1815 1800 1785 1774 1766 1757 1746 1737 1726 1715 1705 1696 1687 1677 1661 1662 1653 1633 1604 1576 1557 1553 1544 1543 1534 1512 1496 1483 1475 1472 1475 1465 1449 1418 1390 1389 1399 1393 1385 1365 1350 1377 1389 1386 1386 1379 1365 1350 1336 1323 1314 1306 1299 1293 1292 1286 1281 1275 1269 1264 1262 1260 1258 1256 1252 1246 1240 1208 1213 1220 1220 1216 1225 1235 1244 1258 1278 1295 1308 1317 1323 1327 1333 1337 1344 1352 1361 1372 1379 1378 1372 1370 1357 1368 1382 1379 1374 1374 1380 1387 1391 1397 1414 1432 1444 1451 1453 1458 1475 1490 1503 1516 1516 1517 1531 1545 1554 1556 1563 1560 1567 1568 1579 1592 1606 1625 1637 1650 1668 1681 1693 1705 1717 1729 1743 1755 1772 1789 1805 1819 1832 1848 1861 1868 1870 1878 1888 1899 1911 1922 1928 1934 1941 1947 1955 1963 1973 1981 1980 1979 1977 1976 1978 1979 1992 2005 2018 2039 2066 2067 2047 2032 2014 1997 1984 1970 1962 1958 1956 1948 1944 1932 1912 1898 1898 1905 1895 1896 1904 1915 1941 1940 1928 1918 1908 1899 1889 1875 1864 1849 1830 1817 1805 1795 1785 1775 1762 1748 1737 1728 1721 1714 1708 1699 1687 1676 1667 1655 1633 1608 1590 1575 1562 1553 1555 1546 1525 1505 1491 1486 1486 1484 1464 1445 1417 1407 1410 1407 1400 1392 1368 1368 1394 1400 1397 1391 1382 1363 1348 1336 1324 1315 1310 1306 1299 1296 1290 1285 1280 1274 1270 1266 1264 1260 1255 1250 1246 1238 1211 1218 1225 1227 1226 1232 1238 1241 1248 1267 1287 1301 1314 1323 1330 1335 1338 1345 1353 1362 1375 1385 1386 1388 1389 1385 1378 1386 1390 1391 1391 1390 1388 1399 1407 1419 1437 1446 1453 1460 1466 1478 1496 1517 1533 1541 1545 1539 1549 1564 1570 1576 1578 1578 1581 1588 1596 1612 1633 1648 1662 1681 1695 1713 1728 1736 1749 1764 1772 1787 1804 1822 1838 1851 1865 1878 1888 1890 1892 1901 1909 1922 1935 1942 1952 1962 1969 1977 1981 1993 1999 2000 2001 2000 1998 1996 1999 2014 2024 2034 2056 2080 2080 2050 2028 2008 1993 1983 1973 1976 1975 1972 1968 1959 1944 1916 1920 1922 1918 1916 1917 1923 1938 1956 1947 1940 1926 1915 1908 1897 1882 1869 1851 1834 1825 1817 1807 1795 1786 1773 1756 1741 1733 1731 1726 1717 1707 1696 1684 1671 1658 1640 1622 1607 1585 1565 1565 1565 1555 1537 1515 1499 1499 1497 1484 1462 1450 1430 1426 1428 1414 1406 1392 1369 1385 1403 1404 1401 1394 1386 1372 1358 1343 1326 1316 1313 1310 1304 1298 1291 1284 1277 1271 1266 1262 1259 1255 1249 1242 1238 1230 1211 1219 1225 1229 1233 1237 1241 1245 1250 1260 1275 1291 1307 1321 1332 1337 1342 1348 1355 1360 1369 1378 1386 1392 1398 1398 1384 1388 1398 1406 1405 1395 1390 1404 1414 1426 1433 1433 1444 1462 1475 1488 1501 1515 1534 1548 1558 1553 1553 1573 1587 1596 1597 1587 1584 1591 1605 1616 1634 1651 1673 1691 1707 1723 1735 1747 1763 1777 1785 1799 1814 1832 1849 1865 1879 1891 1903 1906 1906 1915 1925 1940 1950 1956 1968 1979 1989 1997 1997 2009 2016 2019 2020 2020 2018 2017 2019 2025 2038 2047 2069 2094 2087 2061 2036 2014 2000 1989 1982 1982 1987 1991 1984 1973 1957 1934 1933 1940 1938 1933 1936 1947 1958 1969 1958 1948 1936 1925 1915 1902 1891 1876 1860 1846 1836 1827 1811 1796 1787 1775 1763 1745 1740 1742 1725 1713 1701 1691 1681 1671 1662 1645 1629 1608 1589 1571 1571 1570 1559 1545 1527 1508 1505 1497 1479 1467 1460 1448 1440 1437 1421 1405 1392 1384 1400 1409 1408 1405 1398 1391 1385 1374 1352 1331 1321 1315 1310 1304 1297 1291 1283 1276 1269 1265 1261 1256 1252 1246 1239 1233 1224 1211 1218 1225 1231 1236 1240 1244 1252 1259 1264 1272 1282 1293 1311 1329 1342 1349 1354 1359 1364 1367 1375 1388 1397 1404 1404 1398 1399 1404 1408 1415 1412 1410 1415 1415 1424 1430 1432 1445 1462 1482 1504 1519 1530 1541 1554 1565 1572 1574 1573 1585 1606 1611 1611 1611 1614 1623 1625 1645 1674 1697 1714 1729 1741 1753 1768 1781 1792 1799 1813 1827 1841 1861 1882 1897 1905 1910 1921 1922 1922 1937 1959 1970 1975 1987 1997 2008 2018 2020 2025 2035 2039 2042 2040 2039 2040 2038 2039 2050 2063 2083 2106 2096 2072 2044 2024 2010 1999 1991 1994 2002 2008 2000 1988 1968 1959 1957 1958 1955 1955 1963 1973 1978 1980 1967 1966 1957 1940 1924 1913 1902 1889 1872 1861 1852 1840 1824 1812 1801 1789 1783 1768 1752 1740 1723 1705 1695 1697 1690 1684 1681 1661 1640 1614 1605 1598 1593 1583 1561 1543 1537 1528 1515 1504 1491 1481 1466 1465 1457 1450 1429 1399 1401 1414 1419 1418 1415 1409 1403 1393 1384 1378 1354 1337 1326 1316 1310 1303 1296 1289 1283 1277 1272 1269 1266 1259 1254 1247 1239 1231 1219 1211 1222 1231 1237 1243 1246 1252 1261 1269 1274 1278 1281 1281 1294 1318 1338 1348 1355 1362 1368 1374 1379 1390 1399 1406 1408 1410 1412 1411 1408 1414 1426 1429 1427 1417 1422 1433 1443 1457 1476 1496 1516 1531 1541 1553 1565 1577 1587 1588 1574 1578 1600 1612 1623 1629 1632 1636 1643 1658 1681 1701 1717 1731 1747 1758 1772 1787 1798 1809 1826 1840 1854 1875 1899 1914 1925 1926 1934 1932 1935 1947 1962 1979 1994 2006 2014 2024 2036 2042 2043 2053 2061 2066 2061 2056 2056 2057 2062 2068 2087 2109 2121 2111 2082 2050 2032 2022 2012 2003 2016 2027 2026 2018 2007 1989 1988 1989 1979 1970 1977 1994 2001 1999 1993 1980 1981 1972 1953 1936 1923 1909 1895 1881 1872 1864 1852 1838 1828 1815 1801 1792 1777 1758 1742 1727 1708 1698 1702 1696 1687 1679 1664 1646 1630 1620 1610 1599 1582 1563 1546 1536 1534 1519 1504 1495 1487 1477 1470 1460 1447 1429 1409 1414 1424 1428 1424 1415 1407 1401 1391 1381 1370 1349 1341 1330 1317 1309 1303 1296 1288 1280 1278 1275 1273 1268 1263 1259 1250 1241 1233 1224 1212 1220 1231 1236 1242 1249 1252 1259 1267 1273 1278 1284 1286 1287 1305 1316 1330 1347 1358 1365 1377 1382 1388 1395 1405 1410 1416 1421 1419 1416 1414 1428 1434 1437 1427 1431 1439 1452 1470 1496 1515 1527 1536 1543 1560 1576 1593 1603 1603 1591 1587 1594 1611 1628 1639 1647 1657 1669 1680 1695 1715 1729 1744 1760 1773 1784 1795 1809 1824 1836 1850 1867 1889 1913 1928 1938 1945 1953 1954 1955 1959 1966 1986 2010 2023 2033 2042 2049 2055 2064 2075 2087 2096 2095 2088 2081 2078 2083 2084 2100 2127 2138 2122 2101 2078 2053 2038 2028 2018 2033 2051 2045 2033 2024 2021 2016 2008 1999 1988 1998 2019 2024 2019 2009 1999 1988 1976 1964 1950 1934 1917 1901 1894 1885 1875 1865 1852 1842 1830 1819 1807 1789 1769 1758 1737 1721 1715 1713 1704 1693 1684 1674 1659 1647 1635 1625 1608 1583 1563 1548 1542 1538 1523 1511 1504 1499 1492 1483 1470 1451 1437 1431 1434 1436 1433 1426 1417 1407 1402 1392 1383 1374 1362 1351 1341 1328 1310 1300 1293 1289 1285 1281 1278 1277 1270 1261 1257 1250 1251 1248 1242 1224 1224 1227 1236 1244 1252 1257 1263 1270 1276 1281 1286 1292 1298 1305 1309 1313 1332 1352 1368 1379 1381 1384 1396 1409 1416 1424 1429 1429 1430 1431 1431 1435 1445 1449 1448 1447 1458 1479 1507 1529 1541 1544 1546 1560 1580 1603 1617 1618 1617 1609 1598 1618 1637 1650 1662 1673 1684 1695 1709 1727 1741 1756 1774 1790 1799 1806 1819 1836 1847 1863 1881 1899 1921 1934 1944 1954 1967 1972 1966 1971 1983 1992 2014 2032 2047 2054 2060 2070 2082 2094 2109 2114 2110 2102 2097 2098 2102 2107 2123 2149 2154 2136 2114 2089 2068 2054 2043 2046 2055 2061 2058 2046 2038 2035 2030 2023 2014 2012 2028 2037 2035 2030 2023 2012 1999 1986 1975 1964 1951 1936 1917 1910 1900 1889 1880 1870 1860 1848 1838 1825 1806 1784 1770 1746 1734 1736 1726 1715 1703 1696 1685 1668 1655 1639 1625 1608 1583 1563 1550 1544 1535 1522 1514 1507 1500 1494 1485 1470 1452 1443 1443 1444 1441 1432 1424 1416 1409 1404 1396 1384 1376 1369 1361 1350 1332 1311 1301 1298 1294 1290 1286 1280 1275 1269 1262 1260 1255 1250 1243 1237 1241 1237 1230 1237 1243 1252 1256 1261 1268 1272 1278 1287 1295 1304 1308 1313 1313 1316 1333 1352 1375 1378 1379 1395 1409 1419 1426 1432 1432 1436 1439 1434 1436 1447 1454 1453 1458 1470 1491 1518 1533 1543 1548 1552 1560 1581 1598 1612 1618 1629 1626 1613 1630 1648 1664 1675 1676 1684 1697 1708 1723 1741 1761 1785 1806 1818 1825 1833 1850 1863 1881 1897 1910 1927 1941 1954 1968 1985 1991 1986 1989 2001 2008 2022 2034 2054 2063 2070 2080 2096 2114 2126 2130 2127 2123 2122 2125 2124 2126 2139 2162 2163 2144 2126 2106 2090 2075 2064 2069 2084 2081 2072 2063 2057 2053 2044 2039 2043 2037 2051 2057 2050 2045 2039 2029 2017 2004 1987 1972 1958 1947 1927 1915 1908 1901 1896 1889 1879 1865 1847 1829 1809 1788 1772 1754 1749 1748 1734 1722 1712 1701 1686 1669 1654 1633 1613 1596 1578 1561 1549 1542 1537 1528 1520 1513 1501 1491 1480 1471 1459 1454 1451 1448 1442 1433 1424 1416 1409 1403 1395 1384 1375 1368 1362 1345 1324 1311 1305 1304 1298 1293 1287 1276 1272 1275 1271 1266 1257 1249 1240 1232 1250 1249 1242 1247 1256 1265 1268 1271 1274 1272 1280 1293 1306 1313 1312 1315 1322 1326 1334 1342 1357 1375 1389 1401 1407 1419 1429 1437 1445 1449 1451 1449 1444 1449 1460 1464 1471 1480 1505 1529 1540 1545 1549 1556 1565 1576 1594 1611 1625 1633 1637 1641 1639 1651 1673 1684 1689 1699 1705 1708 1723 1746 1772 1801 1824 1839 1849 1856 1869 1881 1895 1909 1924 1938 1953 1970 1988 2005 2013 2016 2010 2015 2029 2036 2042 2060 2070 2078 2089 2105 2128 2139 2143 2143 2141 2141 2141 2139 2140 2151 2171 2174 2156 2137 2120 2107 2098 2094 2096 2103 2098 2085 2079 2072 2069 2065 2060 2060 2062 2068 2070 2063 2057 2056 2046 2031 2018 2005 1991 1977 1959 1944 1935 1931 1925 1921 1913 1902 1887 1868 1851 1829 1800 1788 1777 1770 1760 1744 1732 1724 1712 1695 1677 1655 1633 1616 1592 1572 1556 1544 1545 1551 1546 1534 1522 1510 1493 1482 1480 1475 1468 1461 1452 1442 1434 1425 1416 1406 1397 1389 1379 1368 1361 1352 1333 1319 1318 1315 1310 1304 1295 1285 1276 1275 1279 1275 1269 1258 1247 1239 1231 1249 1253 1255 1260 1269 1277 1282 1287 1284 1278 1292 1307 1322 1325 1318 1316 1329 1337 1342 1347 1347 1365 1385 1398 1404 1415 1425 1433 1443 1451 1454 1457 1452 1450 1463 1472 1479 1490 1511 1533 1546 1555 1561 1572 1584 1592 1600 1606 1625 1634 1643 1650 1645 1653 1669 1682 1696 1708 1714 1722 1738 1758 1781 1806 1826 1845 1859 1873 1884 1895 1903 1916 1934 1947 1963 1979 1996 2016 2030 2037 2033 2038 2046 2053 2062 2069 2076 2086 2100 2114 2135 2149 2155 2155 2153 2152 2153 2155 2156 2164 2181 2189 2175 2156 2137 2124 2118 2121 2121 2118 2109 2099 2092 2083 2080 2080 2077 2073 2083 2086 2081 2075 2068 2066 2058 2044 2029 2015 2003 1987 1970 1958 1950 1945 1949 1947 1937 1917 1897 1875 1855 1836 1814 1803 1791 1776 1759 1742 1731 1717 1701 1680 1658 1638 1620 1602 1583 1568 1559 1559 1557 1553 1547 1535 1521 1506 1491 1484 1486 1481 1473 1464 1451 1441 1430 1420 1411 1399 1389 1381 1372 1360 1351 1340 1330 1320 1326 1323 1313 1305 1296 1287 1283 1281 1278 1273 1267 1256 1244 1236 1233 1250 1254 1258 1262 1266 1269 1277 1291 1293 1291 1305 1324 1340 1342 1334 1329 1336 1339 1345 1356 1356 1362 1375 1387 1399 1411 1420 1429 1439 1448 1454 1460 1461 1460 1464 1475 1490 1502 1514 1534 1549 1563 1572 1585 1599 1610 1617 1618 1624 1641 1654 1660 1662 1666 1665 1683 1702 1718 1733 1747 1763 1781 1800 1822 1841 1862 1880 1898 1912 1924 1934 1946 1956 1968 1982 1994 2014 2035 2052 2061 2064 2066 2066 2070 2082 2082 2084 2095 2107 2128 2150 2164 2171 2174 2176 2177 2177 2178 2176 2178 2191 2204 2197 2183 2165 2147 2140 2141 2140 2131 2120 2111 2104 2096 2091 2091 2091 2091 2099 2098 2090 2083 2074 2070 2066 2054 2038 2021 2008 1995 1982 1973 1968 1967 1972 1967 1953 1932 1910 1888 1868 1852 1836 1819 1799 1781 1762 1747 1739 1723 1706 1678 1653 1634 1618 1606 1592 1578 1570 1569 1563 1551 1539 1524 1523 1515 1507 1499 1491 1483 1473 1464 1451 1440 1428 1416 1407 1396 1386 1377 1369 1356 1346 1340 1332 1323 1319 1312 1304 1303 1299 1293 1288 1283 1277 1270 1261 1248 1237 1232 1231 1255 1261 1265 1267 1269 1270 1277 1292 1302 1308 1313 1338 1357 1362 1362 1353 1346 1342 1344 1357 1367 1373 1379 1382 1392 1406 1418 1429 1441 1447 1452 1460 1467 1472 1469 1478 1492 1503 1511 1528 1545 1559 1570 1586 1600 1613 1624 1626 1627 1645 1662 1671 1680 1679 1665 1677 1699 1716 1733 1751 1769 1783 1802 1824 1844 1865 1882 1899 1916 1930 1943 1956 1966 1979 1995 2008 2023 2043 2062 2075 2082 2084 2085 2087 2093 2095 2097 2106 2123 2146 2166 2181 2189 2189 2189 2188 2186 2187 2188 2193 2200 2213 2217 2203 2187 2173 2165 2164 2159 2146 2134 2126 2118 2111 2106 2104 2106 2111 2112 2107 2100 2090 2078 2077 2072 2062 2048 2035 2021 2009 1999 1991 1991 1997 1991 1975 1955 1935 1915 1895 1875 1859 1843 1823 1799 1780 1764 1750 1736 1718 1698 1676 1653 1635 1624 1618 1603 1594 1581 1567 1556 1542 1532 1530 1530 1522 1512 1504 1493 1482 1471 1460 1451 1439 1429 1419 1406 1395 1385 1375 1365 1347 1341 1340 1331 1323 1319 1311 1306 1310 1308 1298 1292 1285 1274 1264 1252 1243 1235 1231 1229 1250 1257 1265 1265 1268 1272 1278 1291 1307 1316 1325 1342 1359 1369 1375 1365 1355 1349 1349 1359 1367 1376 1383 1382 1390 1400 1413 1425 1434 1441 1447 1454 1463 1470 1477 1483 1484 1496 1506 1517 1535 1552 1562 1578 1591 1604 1618 1624 1634 1645 1661 1676 1691 1692 1679 1680 1693 1710 1728 1750 1769 1784 1808 1833 1854 1875 1894 1913 1933 1949 1963 1976 1989 2002 2016 2027 2039 2060 2077 2090 2102 2104 2104 2107 2111 2115 2120 2126 2136 2160 2181 2196 2205 2207 2210 2212 2209 2208 2209 2210 2218 2231 2234 2223 2208 2198 2188 2178 2170 2164 2156 2149 2140 2132 2125 2117 2119 2127 2127 2122 2115 2107 2096 2085 2079 2073 2064 2052 2040 2028 2020 2014 2014 2016 1999 1976 1951 1928 1909 1891 1871 1853 1837 1818 1796 1777 1763 1745 1726 1707 1685 1671 1661 1647 1638 1631 1614 1603 1585 1561 1555 1549 1542 1544 1539 1529 1518 1507 1496 1484 1471 1460 1449 1436 1427 1416 1403 1388 1381 1377 1369 1349 1342 1343 1336 1331 1324 1313 1306 1300 1293 1285 1280 1273 1262 1255 1250 1247 1242 1240 1237 1243 1257 1267 1270 1274 1278 1282 1293 1314 1331 1340 1348 1362 1369 1374 1373 1373 1373 1373 1374 1373 1375 1381 1390 1398 1406 1414 1423 1436 1446 1453 1461 1467 1470 1472 1484 1502 1514 1520 1517 1534 1556 1565 1572 1585 1601 1619 1632 1640 1649 1655 1673 1693 1710 1713 1702 1695 1710 1735 1757 1777 1797 1823 1848 1870 1891 1911 1932 1953 1972 1988 2002 2016 2029 2038 2047 2059 2077 2090 2100 2115 2119 2123 2126 2131 2135 2138 2141 2149 2172 2192 2208 2218 2219 2221 2224 2223 2223 2225 2231 2238 2248 2252 2246 2231 2217 2204 2193 2187 2182 2175 2167 2157 2148 2142 2141 2144 2146 2142 2135 2124 2112 2105 2094 2088 2083 2076 2061 2046 2047 2047 2044 2042 2028 2003 1980 1953 1931 1910 1891 1873 1856 1838 1819 1797 1778 1760 1741 1723 1709 1687 1676 1676 1668 1654 1639 1617 1601 1580 1561 1566 1566 1560 1553 1543 1532 1518 1506 1494 1483 1471 1461 1448 1432 1421 1410 1398 1382 1381 1378 1370 1355 1344 1344 1339 1334 1327 1319 1307 1295 1284 1276 1272 1267 1259 1254 1252 1257 1252 1245 1239 1240 1254 1266 1274 1278 1281 1286 1299 1317 1333 1345 1352 1361 1367 1371 1374 1380 1385 1389 1388 1388 1380 1383 1393 1400 1407 1417 1430 1441 1448 1455 1463 1466 1465 1467 1485 1503 1518 1529 1528 1530 1547 1561 1573 1587 1601 1615 1626 1636 1644 1656 1675 1694 1718 1729 1719 1702 1709 1738 1761 1783 1802 1827 1850 1875 1898 1916 1935 1958 1981 2000 2018 2033 2045 2055 2066 2078 2092 2102 2112 2124 2129 2137 2145 2149 2153 2156 2161 2170 2185 2198 2217 2229 2231 2233 2234 2237 2241 2245 2252 2257 2263 2266 2263 2251 2240 2227 2217 2209 2201 2193 2185 2177 2170 2161 2155 2162 2162 2155 2145 2135 2122 2113 2104 2098 2089 2082 2073 2067 2073 2076 2064 2050 2028 2002 1978 1953 1926 1904 1885 1870 1851 1833 1814 1793 1773 1755 1739 1722 1708 1692 1689 1685 1671 1657 1637 1611 1592 1577 1572 1578 1574 1565 1554 1542 1528 1512 1499 1489 1478 1467 1456 1446 1429 1416 1408 1398 1386 1384 1376 1369 1360 1347 1340 1335 1327 1320 1313 1302 1295 1287 1279 1276 1271 1264 1265 1261 1262 1256 1248 1242 1240 1248 1260 1273 1280 1284 1293 1307 1322 1334 1346 1357 1363 1369 1374 1379 1385 1390 1397 1400 1402 1397 1398 1399 1403 1407 1419 1432 1442 1452 1464 1473 1477 1478 1479 1488 1496 1509 1529 1541 1552 1564 1572 1576 1584 1600 1617 1630 1641 1651 1665 1680 1702 1732 1747 1742 1730 1726 1748 1772 1798 1822 1844 1865 1892 1920 1943 1968 1993 2011 2023 2035 2050 2064 2076 2086 2098 2113 2125 2134 2141 2142 2150 2160 2165 2171 2177 2185 2192 2199 2204 2224 2239 2244 2248 2251 2257 2264 2267 2272 2275 2280 2282 2278 2269 2262 2252 2241 2232 2223 2214 2206 2198 2190 2180 2177 2180 2176 2168 2159 2151 2138 2130 2121 2113 2100 2093 2096 2097 2096 2089 2071 2053 2030 2000 1972 1949 1928 1907 1885 1869 1852 1836 1819 1798 1774 1759 1747 1731 1717 1709 1701 1692 1678 1660 1641 1618 1597 1588 1594 1589 1578 1564 1552 1539 1527 1515 1500 1487 1475 1460 1447 1440 1427 1417 1412 1406 1396 1386 1376 1370 1362 1346 1336 1329 1318 1310 1301 1296 1298 1294 1289 1284 1280 1272 1274 1269 1261 1255 1250 1244 1245 1248 1260 1269 1280 1290 1300 1314 1329 1341 1352 1361 1367 1374 1378 1384 1391 1395 1401 1406 1409 1414 1416 1410 1406 1408 1420 1431 1443 1457 1473 1483 1491 1492 1492 1494 1495 1498 1521 1543 1565 1576 1579 1585 1586 1597 1612 1625 1636 1650 1668 1682 1701 1726 1746 1750 1745 1733 1753 1777 1802 1827 1845 1867 1893 1918 1945 1971 1991 2006 2023 2037 2053 2071 2087 2100 2111 2125 2139 2149 2158 2162 2167 2174 2175 2180 2186 2192 2199 2207 2215 2231 2245 2252 2260 2264 2272 2278 2283 2290 2295 2301 2302 2298 2288 2280 2270 2260 2252 2244 2234 2223 2213 2203 2197 2199 2196 2186 2180 2172 2164 2151 2146 2141 2130 2116 2112 2121 2118 2109 2092 2071 2049 2026 1995 1967 1944 1921 1903 1882 1864 1848 1831 1814 1794 1777 1769 1756 1737 1722 1714 1705 1692 1673 1655 1637 1615 1597 1597 1604 1597 1583 1567 1551 1534 1519 1507 1495 1482 1471 1459 1453 1443 1429 1419 1411 1409 1401 1393 1384 1371 1356 1338 1331 1327 1317 1311 1307 1310 1313 1303 1298 1292 1288 1282 1276 1270 1262 1256 1250 1244 1248 1245 1257 1268 1271 1283 1293 1306 1321 1332 1346 1356 1363 1371 1376 1383 1389 1393 1402 1407 1411 1420 1426 1423 1415 1414 1425 1433 1450 1463 1475 1487 1498 1501 1502 1507 1507 1502 1520 1545 1568 1583 1590 1597 1602 1603 1612 1626 1638 1651 1668 1685 1701 1726 1746 1757 1762 1755 1761 1785 1814 1841 1864 1887 1909 1927 1945 1968 1987 2004 2023 2038 2057 2077 2095 2109 2123 2138 2153 2166 2175 2182 2184 2188 2195 2201 2207 2217 2224 2232 2242 2252 2259 2265 2276 2280 2287 2294 2302 2308 2310 2317 2320 2315 2309 2302 2290 2276 2268 2259 2245 2233 2224 2218 2212 2212 2207 2196 2190 2181 2172 2162 2160 2157 2148 2138 2136 2138 2128 2116 2097 2076 2047 2021 1994 1966 1943 1920 1903 1886 1866 1846 1829 1816 1805 1796 1785 1766 1746 1730 1722 1713 1699 1679 1659 1643 1624 1616 1616 1613 1598 1580 1563 1544 1526 1510 1495 1482 1476 1467 1461 1452 1440 1428 1418 1412 1406 1397 1392 1382 1364 1354 1343 1333 1327 1322 1318 1325 1324 1316 1304 1299 1298 1294 1289 1284 1277 1271 1264 1257 1251 1259 1261 1268 1272 1270 1285 1293 1298 1309 1319 1342 1354 1357 1362 1372 1380 1383 1396 1405 1413 1417 1428 1435 1437 1439 1440 1436 1439 1458 1472 1482 1492 1504 1514 1522 1525 1524 1518 1531 1557 1580 1598 1606 1610 1621 1615 1619 1635 1646 1655 1669 1686 1705 1730 1750 1766 1777 1780 1771 1790 1822 1850 1875 1896 1914 1930 1943 1962 1984 2003 2021 2037 2059 2080 2097 2114 2130 2146 2159 2174 2184 2190 2195 2199 2206 2212 2217 2217 2227 2244 2255 2264 2270 2276 2284 2291 2298 2307 2313 2320 2326 2331 2331 2329 2331 2324 2310 2293 2283 2273 2261 2253 2245 2235 2232 2233 2222 2216 2208 2195 2186 2185 2182 2174 2168 2167 2164 2147 2133 2119 2102 2082 2051 2021 1996 1969 1948 1932 1916 1895 1875 1852 1837 1834 1828 1817 1797 1775 1758 1744 1733 1717 1701 1683 1663 1648 1631 1630 1624 1608 1588 1570 1552 1534 1518 1503 1488 1476 1471 1465 1458 1448 1439 1428 1420 1414 1406 1397 1385 1375 1367 1358 1345 1334 1326 1319 1332 1337 1329 1318 1311 1308 1303 1297 1291 1283 1274 1265 1260 1256 1249 1264 1269 1273 1275 1277 1282 1289 1296 1305 1314 1336 1351 1358 1358 1364 1368 1373 1387 1404 1418 1423 1432 1438 1442 1446 1452 1448 1449 1463 1474 1484 1496 1509 1520 1531 1533 1534 1531 1543 1568 1593 1607 1610 1616 1626 1625 1622 1635 1645 1654 1668 1684 1702 1722 1747 1770 1784 1793 1788 1797 1819 1844 1868 1888 1904 1923 1940 1958 1980 2003 2025 2046 2070 2091 2107 2121 2139 2155 2168 2182 2193 2200 2208 2213 2220 2228 2234 2236 2245 2260 2271 2278 2284 2289 2296 2304 2314 2324 2330 2337 2344 2347 2348 2345 2344 2340 2330 2315 2301 2288 2274 2267 2263 2256 2249 2243 2230 2226 2219 2208 2197 2198 2195 2191 2192 2189 2173 2152 2132 2109 2086 2067 2042 2018 1997 1975 1956 1940 1927 1901 1880 1867 1855 1854 1841 1820 1801 1783 1769 1757 1738 1712 1690 1674 1664 1652 1637 1629 1614 1594 1574 1555 1542 1531 1518 1504 1489 1476 1466 1457 1449 1444 1435 1426 1418 1412 1404 1397 1386 1379 1374 1359 1342 1336 1334 1334 1344 1340 1330 1322 1317 1315 1307 1298 1291 1283 1275 1267 1262 1255 1249 1267 1272 1276 1281 1288 1286 1292 1298 1304 1315 1327 1341 1354 1362 1369 1369 1373 1381 1390 1407 1425 1437 1444 1450 1457 1461 1464 1468 1476 1482 1488 1500 1513 1526 1540 1547 1553 1555 1553 1566 1594 1615 1624 1627 1637 1645 1642 1639 1646 1660 1672 1683 1698 1717 1741 1769 1787 1798 1803 1811 1823 1843 1865 1885 1905 1926 1943 1962 1985 2010 2036 2062 2087 2110 2124 2136 2152 2166 2180 2191 2202 2213 2222 2232 2240 2250 2259 2265 2272 2280 2287 2293 2297 2303 2311 2321 2329 2338 2346 2352 2358 2362 2361 2358 2353 2349 2342 2333 2319 2306 2297 2287 2279 2272 2267 2262 2252 2244 2237 2226 2218 2220 2219 2219 2214 2199 2180 2160 2137 2113 2092 2071 2044 2022 2002 1987 1971 1955 1943 1918 1889 1884 1876 1866 1852 1832 1814 1798 1783 1765 1744 1717 1693 1679 1673 1667 1654 1631 1605 1589 1571 1547 1540 1534 1524 1510 1492 1475 1464 1447 1440 1436 1427 1416 1410 1406 1401 1394 1390 1382 1369 1353 1348 1350 1349 1350 1347 1339 1333 1326 1319 1315 1306 1296 1290 1284 1276 1268 1261 1254 1248 1273 1277 1282 1287 1294 1300 1303 1302 1302 1318 1328 1334 1342 1363 1374 1372 1380 1381 1385 1395 1410 1429 1442 1456 1463 1468 1472 1478 1492 1503 1508 1512 1518 1526 1540 1554 1565 1572 1575 1576 1593 1617 1631 1636 1644 1654 1654 1650 1653 1670 1684 1698 1706 1716 1734 1760 1780 1797 1808 1817 1829 1844 1862 1882 1901 1921 1941 1965 1993 2018 2045 2071 2095 2118 2135 2148 2164 2178 2191 2198 2208 2219 2231 2247 2258 2268 2278 2284 2290 2296 2303 2307 2311 2317 2326 2336 2345 2355 2361 2365 2373 2379 2380 2376 2369 2363 2355 2346 2335 2326 2319 2309 2298 2291 2287 2280 2274 2265 2258 2248 2242 2243 2245 2240 2229 2209 2187 2164 2141 2117 2098 2077 2053 2034 2015 1998 1982 1960 1941 1923 1905 1897 1888 1873 1857 1839 1819 1798 1776 1756 1733 1710 1696 1684 1674 1657 1635 1616 1599 1585 1570 1557 1547 1538 1525 1508 1488 1475 1465 1452 1439 1429 1421 1410 1403 1404 1400 1391 1384 1374 1361 1355 1366 1369 1360 1351 1345 1338 1335 1331 1323 1314 1305 1296 1290 1283 1276 1268 1260 1255 1250 1272 1280 1286 1293 1298 1304 1310 1314 1310 1316 1327 1331 1340 1359 1373 1378 1383 1383 1389 1396 1403 1416 1433 1453 1464 1473 1478 1482 1499 1513 1523 1530 1536 1540 1548 1558 1570 1584 1593 1590 1599 1620 1636 1644 1656 1667 1670 1667 1669 1682 1692 1712 1724 1731 1741 1760 1783 1802 1816 1826 1838 1851 1868 1887 1909 1930 1953 1981 2008 2030 2055 2083 2107 2128 2150 2169 2182 2196 2209 2215 2223 2238 2250 2262 2275 2287 2296 2304 2313 2322 2331 2335 2336 2335 2340 2350 2361 2373 2378 2380 2386 2390 2392 2391 2387 2383 2374 2365 2356 2348 2337 2326 2318 2314 2307 2298 2293 2287 2280 2270 2264 2263 2268 2260 2247 2225 2202 2180 2158 2135 2112 2091 2069 2048 2030 2013 1993 1971 1953 1937 1924 1911 1900 1885 1867 1845 1822 1798 1775 1753 1732 1714 1701 1684 1663 1648 1630 1616 1603 1592 1577 1563 1552 1544 1530 1511 1488 1472 1460 1455 1450 1444 1437 1428 1418 1409 1398 1388 1380 1379 1381 1381 1376 1368 1360 1352 1343 1332 1328 1326 1325 1318 1309 1300 1294 1285 1278 1270 1263 1258 1253 1274 1280 1289 1296 1302 1309 1316 1320 1323 1326 1328 1325 1342 1360 1369 1381 1393 1387 1390 1406 1416 1423 1435 1458 1470 1477 1484 1492 1505 1516 1529 1543 1554 1561 1567 1572 1580 1591 1603 1610 1615 1629 1644 1655 1667 1680 1685 1681 1686 1694 1696 1719 1738 1745 1753 1766 1785 1804 1822 1834 1849 1862 1875 1892 1915 1939 1967 1995 2021 2047 2077 2106 2128 2144 2166 2184 2197 2211 2221 2228 2238 2249 2260 2272 2286 2301 2313 2324 2333 2341 2349 2353 2357 2360 2366 2374 2382 2390 2394 2397 2400 2404 2408 2409 2407 2404 2399 2390 2379 2369 2357 2346 2340 2338 2332 2324 2315 2307 2302 2294 2287 2289 2292 2280 2263 2239 2217 2197 2176 2152 2126 2104 2083 2059 2041 2024 2003 1984 1966 1950 1937 1919 1903 1886 1864 1839 1814 1790 1770 1746 1725 1706 1683 1668 1654 1644 1630 1616 1603 1590 1576 1560 1545 1534 1520 1504 1485 1484 1485 1482 1473 1460 1448 1438 1428 1415 1405 1401 1393 1389 1385 1378 1368 1365 1360 1353 1345 1333 1322 1313 1309 1311 1307 1300 1293 1285 1277 1271 1264 1258 1252 1278 1284 1287 1291 1303 1311 1319 1324 1329 1334 1339 1339 1342 1352 1363 1373 1388 1394 1394 1404 1417 1424 1439 1460 1468 1473 1484 1497 1508 1518 1533 1545 1557 1569 1580 1588 1595 1600 1610 1625 1633 1643 1655 1666 1676 1687 1695 1693 1698 1711 1709 1724 1747 1758 1768 1779 1792 1811 1830 1845 1862 1877 1888 1903 1927 1951 1976 2005 2033 2063 2096 2125 2156 2173 2186 2201 2222 2239 2245 2253 2261 2268 2279 2289 2302 2319 2334 2347 2356 2363 2371 2377 2383 2390 2396 2401 2406 2409 2411 2415 2419 2421 2424 2425 2423 2420 2418 2414 2408 2399 2390 2378 2366 2359 2354 2346 2337 2327 2321 2314 2309 2312 2309 2293 2272 2251 2229 2206 2183 2160 2135 2114 2094 2071 2050 2031 2013 1999 1982 1966 1950 1933 1912 1887 1860 1838 1814 1791 1769 1746 1725 1708 1688 1672 1659 1648 1635 1619 1603 1593 1585 1573 1556 1539 1530 1521 1509 1508 1506 1497 1484 1471 1462 1450 1441 1429 1421 1416 1408 1398 1389 1380 1373 1371 1366 1357 1350 1338 1324 1314 1300 1300 1303 1298 1291 1284 1278 1272 1266 1262 1255 1278 1285 1290 1296 1307 1311 1315 1324 1333 1339 1347 1353 1355 1359 1365 1373 1379 1392 1404 1409 1417 1429 1447 1464 1472 1478 1490 1501 1512 1526 1539 1548 1559 1572 1583 1593 1605 1616 1625 1635 1647 1657 1670 1683 1696 1702 1711 1708 1713 1724 1725 1731 1754 1772 1786 1797 1808 1825 1845 1865 1884 1898 1903 1913 1934 1959 1984 2011 2039 2073 2108 2140 2172 2201 2209 2211 2238 2257 2266 2273 2280 2286 2297 2309 2322 2337 2351 2362 2371 2380 2389 2397 2403 2408 2413 2417 2422 2425 2427 2432 2436 2438 2441 2442 2438 2434 2430 2427 2422 2413 2405 2394 2385 2376 2371 2366 2359 2351 2341 2336 2337 2335 2320 2300 2282 2260 2235 2212 2188 2169 2147 2124 2103 2081 2058 2038 2022 2009 1998 1982 1956 1936 1908 1885 1857 1833 1810 1783 1762 1742 1726 1711 1693 1678 1664 1650 1636 1618 1611 1605 1599 1591 1576 1560 1552 1543 1535 1526 1516 1502 1489 1479 1471 1462 1451 1442 1433 1423 1415 1407 1399 1390 1384 1376 1369 1361 1353 1342 1332 1323 1307 1298 1297 1292 1290 1286 1279 1272 1267 1262 1255 1280 1287 1296 1303 1311 1314 1314 1321 1328 1336 1346 1356 1365 1371 1376 1380 1382 1387 1400 1410 1419 1430 1444 1457 1469 1483 1493 1503 1513 1531 1546 1555 1563 1573 1586 1598 1610 1622 1632 1641 1656 1669 1681 1696 1710 1720 1727 1731 1735 1738 1736 1747 1769 1787 1802 1815 1830 1847 1868 1885 1902 1916 1922 1927 1941 1964 1989 2014 2041 2076 2110 2143 2177 2216 2232 2232 2248 2265 2277 2285 2294 2302 2314 2327 2341 2356 2367 2376 2385 2396 2408 2416 2424 2428 2431 2435 2438 2441 2445 2449 2452 2455 2461 2463 2461 2457 2455 2453 2448 2438 2428 2416 2404 2394 2390 2384 2378 2370 2360 2358 2360 2349 2327 2306 2290 2268 2243 2220 2197 2176 2153 2131 2111 2091 2070 2050 2034 2020 2007 1983 1945 1915 1889 1867 1844 1822 1801 1779 1763 1746 1730 1715 1703 1689 1671 1656 1642 1626 1628 1620 1611 1602 1589 1576 1564 1552 1540 1530 1519 1507 1494 1483 1473 1463 1452 1444 1434 1424 1417 1412 1407 1399 1392 1383 1375 1367 1357 1347 1338 1329 1310 1295 1292 1285 1281 1281 1277 1270 1264 1259 1255 1283 1292 1300 1306 1313 1321 1325 1326 1326 1336 1344 1351 1363 1373 1381 1389 1396 1399 1402 1408 1414 1421 1432 1444 1458 1473 1482 1491 1502 1519 1536 1549 1562 1576 1591 1603 1614 1624 1634 1645 1658 1674 1689 1705 1722 1737 1747 1753 1759 1764 1768 1772 1789 1810 1825 1840 1858 1872 1886 1904 1923 1940 1949 1953 1960 1976 1995 2018 2043 2076 2110 2141 2179 2222 2256 2264 2267 2276 2291 2301 2313 2323 2333 2342 2358 2375 2388 2397 2407 2418 2430 2440 2448 2452 2456 2458 2458 2460 2462 2466 2469 2473 2476 2477 2476 2476 2476 2473 2467 2460 2450 2439 2426 2416 2409 2400 2392 2387 2384 2381 2370 2352 2330 2309 2294 2272 2249 2226 2203 2182 2158 2141 2121 2101 2080 2057 2037 2018 1997 1966 1928 1900 1875 1853 1837 1822 1805 1786 1771 1755 1743 1730 1717 1704 1687 1671 1660 1648 1641 1630 1618 1605 1589 1575 1559 1548 1537 1527 1517 1505 1493 1483 1473 1463 1451 1445 1437 1428 1416 1410 1406 1401 1395 1387 1380 1373 1362 1349 1339 1329 1309 1296 1293 1286 1279 1276 1273 1268 1262 1257 1253 1284 1292 1301 1310 1318 1325 1334 1340 1344 1348 1348 1346 1358 1370 1379 1390 1400 1408 1417 1422 1426 1427 1435 1450 1455 1460 1469 1480 1495 1514 1530 1540 1552 1570 1589 1604 1617 1629 1638 1648 1662 1679 1695 1712 1729 1747 1759 1769 1776 1782 1794 1797 1806 1820 1838 1860 1879 1890 1905 1923 1938 1953 1965 1974 1980 1992 2008 2028 2051 2079 2113 2145 2177 2219 2259 2277 2281 2289 2299 2311 2323 2333 2345 2357 2373 2386 2400 2414 2427 2437 2449 2457 2462 2465 2469 2472 2473 2477 2480 2486 2491 2494 2495 2494 2492 2490 2487 2481 2475 2467 2461 2453 2446 2439 2431 2424 2413 2408 2407 2395 2374 2355 2335 2314 2297 2275 2253 2231 2208 2189 2169 2150 2126 2103 2077 2048 2020 1995 1973 1947 1921 1901 1875 1853 1838 1828 1813 1797 1784 1769 1754 1738 1717 1698 1682 1671 1659 1647 1636 1624 1609 1594 1582 1567 1552 1538 1528 1521 1513 1503 1493 1484 1475 1466 1456 1445 1435 1426 1418 1411 1402 1394 1387 1379 1372 1363 1351 1335 1321 1313 1304 1295 1294 1287 1280 1275 1270 1264 1258 1255 1249 1282 1292 1302 1311 1317 1327 1335 1342 1349 1355 1362 1362 1363 1364 1366 1382 1394 1408 1419 1427 1435 1433 1441 1461 1468 1467 1470 1478 1493 1512 1526 1538 1550 1568 1584 1599 1615 1628 1637 1649 1665 1681 1700 1719 1736 1756 1771 1784 1792 1797 1810 1822 1827 1832 1845 1871 1896 1908 1926 1943 1957 1973 1985 1996 2008 2017 2027 2048 2062 2085 2113 2143 2175 2214 2249 2279 2297 2308 2318 2330 2343 2351 2361 2372 2387 2402 2417 2433 2447 2458 2470 2479 2483 2485 2487 2491 2494 2499 2503 2507 2511 2514 2514 2512 2512 2508 2504 2500 2495 2489 2482 2472 2468 2462 2451 2445 2435 2430 2419 2397 2376 2358 2339 2319 2299 2278 2256 2239 2217 2196 2174 2148 2118 2088 2057 2028 1997 1975 1960 1948 1933 1918 1892 1869 1855 1846 1837 1825 1807 1787 1768 1752 1730 1706 1686 1668 1654 1646 1637 1626 1611 1593 1580 1570 1554 1530 1522 1519 1512 1503 1494 1485 1478 1470 1461 1443 1433 1426 1420 1412 1401 1390 1380 1372 1366 1352 1338 1328 1326 1325 1319 1304 1294 1285 1279 1273 1268 1264 1259 1254 1248 1295 1306 1312 1317 1322 1328 1338 1348 1353 1359 1369 1375 1382 1384 1384 1390 1391 1396 1410 1425 1438 1443 1449 1467 1478 1486 1489 1492 1500 1514 1524 1538 1557 1574 1589 1602 1619 1630 1640 1654 1666 1684 1706 1730 1749 1768 1785 1797 1808 1816 1825 1835 1846 1852 1854 1874 1902 1918 1935 1955 1973 1992 2006 2019 2036 2045 2047 2064 2081 2101 2124 2149 2181 2214 2244 2271 2296 2316 2332 2343 2352 2361 2374 2388 2403 2418 2434 2449 2460 2474 2488 2497 2502 2507 2512 2515 2520 2523 2525 2528 2531 2534 2535 2536 2534 2530 2527 2525 2521 2516 2508 2500 2498 2489 2478 2471 2462 2453 2433 2408 2386 2365 2348 2327 2307 2287 2266 2247 2225 2195 2165 2132 2099 2063 2036 2012 1988 1971 1960 1953 1943 1926 1901 1884 1882 1877 1861 1841 1816 1796 1781 1762 1738 1713 1687 1667 1648 1637 1627 1619 1607 1594 1585 1572 1552 1528 1515 1513 1502 1498 1492 1482 1473 1466 1456 1439 1425 1417 1409 1399 1389 1383 1375 1367 1361 1345 1339 1347 1350 1346 1336 1316 1295 1285 1278 1271 1265 1259 1256 1251 1247 1314 1326 1330 1332 1332 1333 1340 1349 1356 1363 1372 1380 1388 1395 1402 1407 1406 1400 1400 1413 1425 1435 1442 1455 1467 1483 1498 1507 1512 1526 1531 1536 1558 1573 1585 1599 1618 1634 1651 1665 1675 1691 1714 1738 1761 1777 1791 1805 1816 1828 1839 1845 1857 1870 1873 1877 1903 1926 1948 1969 1989 2010 2030 2048 2063 2074 2073 2080 2098 2117 2140 2165 2194 2223 2252 2280 2306 2330 2347 2361 2372 2381 2395 2409 2424 2439 2453 2467 2481 2494 2507 2516 2522 2530 2539 2544 2546 2545 2546 2550 2552 2554 2556 2557 2556 2555 2552 2550 2546 2541 2536 2530 2522 2512 2501 2494 2486 2467 2445 2422 2400 2378 2359 2341 2322 2299 2278 2254 2225 2191 2155 2121 2089 2057 2031 2011 1996 1983 1973 1964 1950 1936 1924 1916 1908 1894 1869 1845 1834 1820 1802 1778 1752 1729 1700 1675 1651 1631 1620 1614 1605 1599 1594 1578 1555 1536 1520 1511 1499 1495 1488 1478 1471 1465 1453 1434 1418 1411 1405 1396 1385 1385 1382 1376 1370 1359 1362 1361 1350 1335 1324 1311 1297 1290 1283 1277 1264 1256 1252 1248 1245 1333 1349 1356 1358 1357 1355 1355 1361 1366 1370 1374 1380 1390 1397 1404 1415 1424 1423 1421 1425 1429 1435 1439 1442 1448 1464 1479 1492 1508 1527 1540 1549 1561 1570 1582 1596 1613 1634 1656 1678 1695 1708 1719 1738 1759 1775 1793 1811 1827 1840 1853 1862 1872 1887 1898 1893 1910 1932 1957 1981 2001 2028 2052 2072 2089 2099 2101 2105 2118 2138 2160 2178 2204 2234 2264 2295 2324 2348 2366 2382 2395 2404 2414 2426 2438 2452 2467 2484 2503 2515 2526 2535 2544 2551 2559 2567 2566 2565 2568 2574 2576 2578 2581 2580 2580 2580 2578 2576 2571 2568 2564 2559 2550 2540 2529 2518 2503 2483 2460 2437 2416 2392 2371 2353 2329 2299 2269 2240 2205 2168 2135 2108 2081 2054 2035 2020 2007 1993 1978 1971 1969 1960 1952 1943 1924 1901 1874 1858 1860 1840 1818 1793 1766 1738 1710 1683 1657 1636 1620 1613 1611 1610 1603 1585 1563 1546 1530 1520 1509 1499 1485 1477 1474 1467 1451 1430 1423 1422 1419 1417 1404 1402 1402 1396 1386 1376 1369 1358 1339 1319 1312 1307 1299 1291 1281 1272 1263 1255 1251 1246 1242 1349 1368 1378 1382 1383 1381 1382 1386 1387 1384 1381 1381 1393 1402 1407 1415 1425 1436 1445 1446 1451 1458 1460 1464 1466 1471 1472 1476 1492 1514 1532 1546 1561 1574 1587 1599 1615 1637 1661 1684 1704 1717 1728 1744 1760 1773 1794 1816 1833 1849 1863 1876 1886 1897 1917 1913 1918 1941 1967 1989 2010 2040 2066 2089 2105 2116 2125 2130 2141 2159 2174 2191 2214 2244 2274 2303 2334 2360 2378 2392 2402 2413 2423 2434 2443 2458 2477 2498 2517 2532 2545 2555 2565 2572 2580 2586 2591 2593 2597 2602 2605 2607 2607 2607 2606 2606 2605 2601 2596 2594 2592 2588 2580 2568 2558 2544 2525 2504 2483 2461 2439 2413 2388 2361 2330 2296 2260 2227 2192 2157 2127 2104 2081 2061 2047 2033 2018 2005 1996 1993 1991 1980 1965 1950 1929 1909 1888 1873 1862 1839 1816 1789 1757 1724 1695 1673 1653 1638 1620 1612 1618 1621 1603 1586 1566 1544 1529 1525 1520 1508 1490 1476 1470 1461 1440 1435 1438 1435 1427 1428 1419 1416 1409 1395 1379 1364 1353 1342 1329 1318 1313 1307 1298 1288 1274 1265 1259 1252 1247 1241 1238 1357 1374 1382 1389 1392 1393 1395 1400 1404 1403 1401 1396 1402 1412 1420 1422 1425 1441 1453 1461 1467 1477 1483 1490 1495 1494 1491 1487 1489 1499 1517 1535 1553 1569 1584 1600 1620 1642 1663 1685 1710 1731 1746 1761 1775 1788 1805 1822 1837 1852 1866 1879 1892 1905 1926 1933 1939 1954 1979 2000 2018 2045 2070 2096 2115 2130 2143 2154 2166 2180 2195 2215 2235 2260 2286 2315 2351 2378 2392 2407 2421 2433 2441 2452 2466 2480 2495 2517 2540 2555 2566 2576 2586 2594 2601 2608 2614 2617 2621 2625 2626 2626 2629 2631 2631 2632 2631 2627 2624 2622 2619 2615 2608 2596 2582 2562 2539 2515 2494 2475 2449 2421 2390 2354 2318 2284 2252 2216 2183 2155 2126 2106 2088 2073 2058 2045 2034 2032 2033 2026 2009 1992 1973 1953 1935 1916 1899 1881 1859 1833 1810 1784 1751 1719 1687 1669 1658 1643 1636 1636 1639 1627 1595 1583 1572 1563 1548 1528 1519 1507 1490 1471 1467 1472 1471 1464 1451 1448 1447 1442 1432 1424 1413 1398 1382 1364 1349 1337 1328 1320 1312 1304 1296 1286 1274 1267 1260 1253 1251 1248 1247 1363 1381 1388 1392 1394 1396 1397 1403 1407 1409 1413 1416 1422 1428 1432 1437 1442 1451 1459 1471 1480 1487 1494 1504 1511 1516 1519 1519 1514 1511 1518 1531 1544 1558 1574 1598 1627 1650 1670 1692 1717 1742 1758 1770 1784 1798 1813 1826 1838 1851 1864 1876 1889 1908 1928 1943 1958 1968 1986 2003 2021 2046 2072 2097 2117 2134 2149 2163 2179 2195 2213 2233 2254 2275 2295 2322 2353 2380 2399 2413 2426 2437 2446 2458 2473 2490 2507 2529 2550 2565 2581 2597 2610 2619 2626 2632 2637 2640 2644 2648 2651 2654 2657 2658 2659 2657 2656 2655 2653 2651 2648 2644 2637 2626 2610 2586 2560 2531 2508 2484 2451 2417 2379 2340 2303 2270 2243 2208 2178 2156 2133 2115 2100 2086 2070 2062 2061 2069 2065 2044 2019 1996 1976 1954 1936 1916 1898 1875 1852 1818 1792 1770 1742 1711 1685 1677 1669 1653 1646 1641 1633 1618 1600 1594 1591 1581 1559 1533 1514 1497 1492 1487 1484 1485 1482 1474 1465 1462 1457 1449 1439 1434 1424 1412 1399 1379 1358 1343 1333 1325 1316 1305 1296 1286 1277 1268 1262 1258 1263 1265 1266 1350 1365 1376 1383 1384 1389 1394 1400 1408 1410 1413 1420 1427 1434 1440 1446 1450 1456 1465 1471 1479 1487 1494 1506 1516 1528 1538 1543 1543 1539 1535 1539 1552 1564 1575 1597 1627 1652 1673 1697 1715 1735 1751 1759 1773 1789 1809 1825 1839 1853 1865 1877 1893 1911 1931 1950 1969 1983 1997 2012 2030 2055 2080 2103 2121 2139 2157 2173 2191 2210 2233 2253 2272 2292 2312 2337 2361 2387 2409 2425 2438 2451 2463 2477 2494 2510 2527 2550 2567 2583 2600 2619 2633 2643 2650 2656 2663 2666 2669 2673 2676 2680 2685 2687 2690 2689 2686 2684 2686 2683 2679 2673 2659 2642 2623 2596 2568 2537 2506 2473 2438 2404 2364 2326 2295 2265 2239 2209 2184 2165 2147 2131 2116 2105 2098 2100 2098 2092 2073 2045 2022 2001 1982 1960 1939 1919 1898 1870 1844 1815 1796 1775 1750 1728 1709 1691 1675 1660 1655 1647 1640 1629 1619 1614 1607 1583 1551 1526 1516 1507 1506 1503 1498 1495 1490 1485 1483 1475 1464 1463 1461 1461 1448 1432 1419 1399 1378 1361 1351 1340 1323 1311 1300 1291 1283 1276 1274 1270 1273 1274 1272 1331 1345 1362 1377 1383 1387 1392 1398 1408 1415 1418 1423 1428 1435 1445 1453 1459 1465 1472 1478 1483 1489 1496 1504 1514 1525 1536 1546 1558 1558 1558 1564 1575 1591 1603 1616 1635 1650 1676 1696 1708 1720 1732 1744 1763 1780 1802 1822 1838 1853 1866 1880 1896 1913 1928 1946 1970 1989 2006 2022 2041 2066 2090 2108 2124 2143 2162 2178 2195 2217 2242 2265 2287 2307 2326 2345 2368 2392 2414 2431 2445 2459 2475 2494 2513 2532 2549 2568 2586 2603 2621 2639 2653 2663 2670 2678 2685 2690 2694 2698 2700 2704 2709 2713 2721 2721 2715 2711 2711 2707 2700 2687 2664 2641 2614 2579 2548 2509 2471 2437 2408 2378 2344 2306 2280 2257 2236 2212 2185 2164 2148 2136 2135 2135 2127 2131 2127 2102 2076 2045 2023 1997 1969 1948 1927 1907 1887 1863 1838 1816 1800 1776 1752 1736 1715 1699 1681 1669 1666 1653 1652 1647 1631 1617 1600 1564 1540 1536 1533 1529 1524 1516 1510 1504 1499 1495 1492 1480 1471 1480 1485 1482 1469 1450 1435 1417 1402 1385 1370 1350 1326 1315 1307 1298 1289 1285 1284 1280 1279 1279 1276 1314 1330 1354 1373 1382 1384 1385 1392 1400 1409 1416 1421 1426 1435 1444 1453 1462 1470 1476 1482 1488 1494 1502 1509 1514 1522 1530 1541 1552 1558 1565 1574 1591 1610 1623 1634 1644 1655 1677 1696 1712 1728 1745 1759 1773 1775 1789 1813 1830 1845 1862 1879 1896 1913 1929 1947 1969 1988 2004 2022 2041 2066 2092 2113 2130 2147 2169 2189 2206 2227 2255 2281 2302 2320 2336 2351 2371 2394 2417 2437 2452 2468 2488 2508 2530 2552 2569 2586 2604 2621 2641 2658 2671 2681 2691 2700 2708 2715 2721 2727 2729 2732 2734 2739 2748 2745 2736 2737 2736 2721 2692 2670 2645 2627 2601 2558 2524 2491 2455 2429 2405 2372 2339 2306 2281 2264 2246 2224 2197 2183 2175 2169 2174 2168 2151 2135 2118 2094 2070 2045 2026 2001 1973 1952 1931 1912 1894 1877 1858 1835 1813 1786 1764 1747 1726 1710 1697 1689 1684 1668 1658 1654 1638 1609 1578 1556 1557 1567 1554 1543 1540 1534 1526 1517 1505 1496 1490 1480 1480 1484 1485 1482 1476 1465 1450 1430 1418 1398 1379 1359 1336 1316 1304 1292 1286 1284 1283 1279 1274 1273 1270 1303 1323 1349 1363 1372 1374 1371 1381 1389 1395 1403 1412 1422 1432 1441 1451 1464 1473 1478 1482 1489 1500 1510 1520 1527 1537 1547 1558 1568 1575 1584 1592 1611 1629 1644 1656 1659 1662 1680 1698 1714 1730 1752 1774 1794 1792 1793 1816 1831 1844 1860 1878 1904 1926 1943 1965 1989 2005 2020 2039 2057 2079 2102 2122 2136 2153 2176 2196 2216 2238 2266 2290 2308 2326 2343 2359 2377 2401 2423 2447 2469 2488 2508 2524 2543 2566 2585 2603 2622 2641 2659 2677 2694 2708 2718 2726 2734 2741 2747 2752 2756 2758 2759 2763 2770 2771 2760 2748 2732 2710 2679 2645 2619 2593 2564 2530 2493 2460 2430 2405 2378 2351 2329 2301 2280 2266 2250 2229 2215 2212 2208 2205 2195 2179 2156 2133 2112 2088 2069 2052 2033 2012 1987 1966 1944 1927 1914 1901 1883 1859 1832 1804 1789 1774 1752 1728 1720 1717 1708 1692 1668 1661 1645 1611 1572 1580 1592 1585 1568 1557 1557 1555 1545 1535 1521 1511 1504 1497 1495 1494 1490 1484 1476 1464 1454 1439 1417 1395 1379 1366 1344 1319 1305 1296 1293 1291 1289 1286 1278 1277 1282 1310 1325 1337 1347 1356 1363 1368 1377 1383 1391 1400 1408 1416 1425 1434 1445 1455 1464 1473 1480 1491 1504 1515 1527 1537 1548 1557 1565 1575 1585 1596 1608 1624 1637 1651 1670 1680 1685 1695 1707 1721 1734 1755 1776 1796 1808 1810 1822 1832 1847 1861 1880 1913 1941 1961 1983 2003 2019 2036 2055 2077 2098 2114 2129 2142 2160 2181 2194 2214 2234 2255 2274 2295 2319 2342 2364 2384 2407 2426 2449 2478 2499 2521 2543 2561 2582 2603 2624 2642 2657 2675 2693 2714 2728 2739 2748 2755 2763 2769 2774 2779 2782 2785 2792 2798 2792 2775 2757 2739 2711 2675 2637 2605 2581 2552 2520 2483 2452 2423 2396 2368 2346 2330 2309 2294 2285 2273 2252 2248 2246 2239 2230 2207 2183 2159 2139 2121 2099 2083 2070 2049 2027 2002 1982 1962 1947 1933 1916 1896 1869 1845 1820 1807 1792 1766 1745 1739 1736 1717 1695 1676 1662 1643 1615 1588 1605 1611 1597 1579 1574 1580 1572 1548 1529 1514 1504 1497 1491 1489 1485 1487 1486 1468 1453 1446 1435 1417 1398 1383 1372 1354 1333 1319 1310 1309 1310 1309 1302 1293 1294 1296 1322 1331 1340 1350 1360 1368 1374 1381 1387 1394 1403 1410 1417 1426 1437 1447 1454 1463 1473 1481 1493 1505 1516 1528 1540 1549 1558 1567 1578 1589 1600 1613 1629 1640 1653 1670 1686 1696 1704 1717 1733 1747 1765 1779 1796 1817 1828 1834 1838 1852 1866 1890 1922 1952 1974 1992 2008 2021 2035 2054 2077 2099 2113 2129 2146 2165 2183 2200 2218 2230 2245 2265 2283 2304 2326 2353 2379 2409 2439 2466 2494 2513 2536 2563 2585 2601 2616 2637 2654 2674 2694 2715 2739 2753 2764 2774 2781 2787 2794 2801 2806 2811 2816 2820 2820 2807 2787 2767 2739 2705 2665 2632 2601 2571 2544 2514 2483 2455 2428 2401 2375 2358 2347 2332 2322 2318 2315 2297 2293 2283 2266 2246 2221 2196 2175 2153 2134 2118 2106 2092 2066 2042 2021 2004 1994 1982 1958 1933 1915 1883 1866 1855 1834 1812 1796 1783 1771 1754 1729 1699 1671 1655 1638 1629 1627 1629 1619 1607 1599 1594 1588 1572 1551 1533 1514 1496 1479 1471 1462 1464 1475 1484 1470 1452 1444 1432 1419 1403 1389 1377 1364 1352 1342 1334 1331 1329 1325 1318 1313 1314 1308 1328 1335 1341 1349 1358 1367 1375 1384 1391 1396 1406 1415 1422 1431 1442 1452 1459 1465 1474 1484 1496 1507 1518 1530 1542 1551 1560 1569 1581 1591 1601 1614 1628 1641 1655 1667 1680 1690 1698 1716 1734 1755 1768 1782 1800 1817 1832 1849 1857 1862 1875 1897 1922 1950 1973 1993 2011 2027 2049 2070 2090 2108 2120 2134 2147 2164 2184 2199 2218 2236 2256 2281 2303 2328 2346 2367 2387 2410 2435 2461 2490 2513 2538 2567 2590 2609 2627 2651 2670 2691 2714 2740 2760 2775 2787 2797 2805 2811 2818 2825 2832 2837 2844 2845 2835 2816 2795 2770 2736 2702 2664 2634 2606 2570 2542 2517 2488 2455 2436 2413 2388 2375 2370 2358 2350 2347 2350 2335 2329 2312 2284 2259 2231 2211 2193 2172 2153 2138 2127 2103 2076 2054 2033 2020 2008 1994 1968 1938 1922 1899 1886 1873 1848 1824 1807 1791 1771 1740 1709 1684 1662 1664 1658 1647 1647 1637 1623 1610 1601 1596 1585 1566 1544 1523 1505 1484 1461 1450 1437 1439 1449 1466 1465 1454 1444 1432 1419 1406 1394 1381 1371 1363 1356 1350 1345 1337 1328 1327 1326 1324 1318 1326 1332 1339 1346 1353 1363 1371 1379 1387 1394 1404 1412 1421 1429 1439 1450 1457 1464 1474 1485 1499 1508 1518 1529 1540 1548 1556 1565 1575 1586 1598 1610 1623 1636 1653 1665 1674 1682 1695 1703 1717 1743 1761 1782 1804 1818 1832 1847 1860 1875 1891 1906 1917 1941 1967 1989 2009 2028 2049 2073 2093 2108 2122 2136 2148 2163 2183 2204 2224 2244 2265 2284 2305 2329 2352 2376 2394 2414 2438 2466 2497 2522 2545 2572 2594 2614 2639 2669 2693 2713 2739 2763 2780 2797 2810 2819 2828 2835 2841 2845 2853 2860 2865 2855 2838 2819 2796 2767 2738 2708 2681 2651 2622 2596 2574 2555 2517 2476 2462 2447 2430 2411 2407 2394 2384 2385 2383 2370 2352 2328 2300 2280 2259 2236 2215 2196 2179 2162 2144 2121 2098 2079 2061 2046 2028 2003 1985 1965 1949 1928 1913 1894 1868 1843 1820 1795 1768 1733 1696 1682 1680 1689 1684 1665 1655 1642 1631 1621 1609 1595 1580 1565 1541 1517 1498 1478 1460 1444 1430 1423 1424 1436 1446 1449 1439 1429 1418 1404 1394 1384 1373 1365 1355 1346 1339 1333 1329 1327 1323 1318 1314 1317 1323 1330 1339 1348 1355 1365 1373 1381 1389 1398 1406 1415 1425 1435 1444 1454 1464 1474 1485 1496 1504 1513 1520 1528 1535 1543 1553 1563 1573 1585 1595 1609 1622 1636 1645 1654 1664 1679 1689 1699 1720 1747 1773 1796 1816 1832 1848 1865 1880 1894 1909 1927 1951 1974 1993 2015 2036 2056 2079 2101 2116 2129 2143 2156 2171 2191 2212 2232 2250 2271 2288 2307 2330 2354 2381 2400 2420 2447 2478 2508 2531 2554 2580 2602 2625 2653 2685 2711 2733 2758 2781 2802 2818 2831 2843 2850 2859 2864 2870 2876 2882 2875 2849 2833 2819 2798 2767 2732 2702 2685 2657 2630 2607 2585 2563 2537 2517 2498 2475 2459 2439 2439 2430 2413 2414 2411 2390 2362 2337 2309 2292 2271 2245 2225 2210 2199 2182 2159 2134 2111 2092 2075 2058 2036 2011 1994 1979 1962 1940 1921 1899 1873 1849 1826 1797 1768 1739 1711 1703 1712 1707 1694 1674 1658 1650 1642 1635 1623 1601 1580 1567 1551 1530 1506 1488 1474 1455 1436 1428 1423 1418 1427 1438 1440 1430 1412 1399 1388 1379 1371 1364 1360 1355 1346 1337 1332 1327 1322 1314 1316 1309 1315 1321 1329 1341 1349 1360 1371 1380 1389 1396 1406 1419 1431 1444 1450 1457 1465 1476 1483 1487 1494 1502 1507 1509 1520 1531 1542 1551 1561 1572 1585 1605 1622 1635 1646 1659 1674 1690 1704 1716 1727 1745 1762 1786 1812 1830 1849 1868 1884 1898 1916 1936 1955 1978 1998 2017 2034 2054 2074 2096 2112 2126 2142 2157 2175 2195 2216 2233 2252 2274 2295 2314 2337 2361 2389 2411 2432 2457 2488 2516 2536 2560 2585 2612 2640 2666 2695 2721 2743 2767 2793 2818 2835 2848 2861 2870 2880 2888 2898 2901 2896 2879 2860 2838 2823 2804 2772 2743 2715 2691 2657 2635 2626 2613 2603 2600 2576 2547 2516 2496 2493 2477 2457 2446 2448 2441 2415 2383 2359 2332 2307 2283 2259 2245 2235 2224 2207 2181 2154 2129 2109 2090 2069 2047 2026 2006 1986 1966 1943 1921 1895 1870 1848 1826 1801 1773 1749 1736 1728 1727 1709 1692 1674 1660 1654 1647 1635 1618 1604 1585 1569 1559 1540 1522 1508 1493 1466 1444 1429 1413 1404 1414 1427 1431 1421 1411 1401 1386 1375 1368 1361 1356 1359 1351 1335 1324 1316 1308 1301 1299 1308 1314 1319 1329 1343 1355 1366 1374 1383 1393 1401 1409 1420 1428 1443 1453 1447 1452 1468 1471 1464 1470 1490 1504 1517 1529 1540 1553 1568 1575 1587 1602 1617 1629 1642 1654 1669 1685 1699 1714 1729 1742 1757 1766 1785 1808 1827 1848 1866 1883 1899 1918 1936 1951 1975 1999 2016 2033 2052 2069 2089 2106 2122 2139 2155 2171 2192 2213 2233 2253 2276 2297 2317 2339 2364 2395 2422 2448 2473 2504 2533 2556 2578 2600 2625 2653 2681 2709 2737 2762 2789 2816 2836 2856 2870 2879 2890 2896 2907 2916 2913 2904 2888 2867 2843 2825 2804 2775 2750 2721 2693 2670 2656 2645 2633 2634 2632 2603 2570 2542 2522 2530 2511 2488 2480 2474 2455 2426 2394 2371 2347 2320 2296 2278 2273 2262 2245 2227 2198 2171 2147 2129 2112 2089 2067 2046 2025 2001 1976 1952 1928 1899 1876 1856 1836 1818 1795 1773 1757 1741 1728 1708 1697 1691 1684 1671 1657 1646 1634 1621 1605 1587 1571 1563 1550 1537 1520 1496 1469 1442 1416 1398 1405 1419 1431 1428 1415 1395 1384 1381 1374 1364 1363 1362 1347 1330 1319 1309 1297 1288 1284 1303 1309 1316 1330 1342 1353 1367 1377 1383 1391 1401 1410 1420 1429 1437 1441 1439 1447 1452 1447 1458 1477 1497 1512 1525 1537 1549 1561 1574 1585 1600 1613 1623 1634 1646 1659 1673 1689 1701 1714 1730 1749 1767 1780 1795 1812 1832 1850 1867 1885 1902 1920 1934 1954 1975 1998 2019 2040 2059 2077 2097 2116 2130 2147 2162 2177 2195 2216 2237 2258 2280 2305 2333 2352 2374 2401 2425 2445 2467 2496 2527 2556 2582 2607 2634 2660 2684 2714 2741 2769 2795 2823 2847 2869 2887 2900 2911 2917 2923 2925 2915 2900 2884 2868 2850 2832 2813 2787 2760 2735 2714 2696 2679 2668 2658 2660 2649 2622 2598 2573 2550 2552 2542 2531 2515 2493 2464 2431 2400 2372 2348 2327 2311 2296 2293 2276 2253 2228 2200 2172 2150 2136 2122 2101 2075 2054 2032 2005 1979 1950 1923 1894 1875 1853 1839 1831 1809 1788 1770 1747 1724 1708 1696 1695 1689 1678 1666 1657 1649 1635 1619 1600 1580 1570 1572 1563 1547 1522 1490 1457 1423 1402 1397 1398 1407 1414 1407 1390 1380 1382 1376 1369 1373 1368 1348 1330 1319 1309 1294 1280 1276 1302 1308 1317 1329 1341 1349 1361 1373 1381 1389 1399 1407 1409 1417 1417 1417 1425 1433 1429 1435 1459 1482 1499 1512 1524 1536 1549 1559 1570 1583 1596 1607 1616 1630 1646 1657 1670 1687 1701 1713 1729 1750 1772 1790 1808 1827 1845 1861 1880 1902 1921 1937 1952 1971 1984 1999 2020 2037 2057 2078 2099 2116 2130 2144 2159 2176 2196 2216 2234 2254 2280 2305 2329 2353 2380 2408 2434 2459 2484 2507 2536 2566 2592 2618 2645 2671 2695 2724 2752 2784 2812 2840 2863 2881 2901 2917 2927 2934 2935 2930 2921 2909 2894 2882 2865 2845 2826 2802 2778 2760 2745 2725 2700 2690 2689 2687 2674 2657 2643 2620 2590 2580 2573 2564 2541 2509 2483 2454 2420 2388 2361 2344 2335 2318 2300 2278 2255 2233 2207 2176 2152 2134 2117 2097 2074 2052 2031 2010 1986 1960 1934 1906 1893 1874 1857 1841 1820 1795 1775 1753 1739 1731 1719 1716 1715 1701 1689 1676 1664 1647 1633 1610 1593 1590 1596 1589 1570 1540 1507 1474 1439 1415 1398 1386 1384 1390 1390 1387 1378 1379 1375 1374 1378 1377 1358 1334 1321 1308 1293 1276 1272 1299 1310 1319 1328 1339 1347 1356 1366 1373 1380 1389 1394 1391 1395 1395 1397 1408 1414 1419 1439 1459 1474 1486 1500 1515 1526 1537 1550 1561 1570 1578 1590 1606 1622 1641 1653 1661 1678 1699 1716 1732 1756 1780 1801 1821 1843 1860 1877 1897 1919 1940 1963 1981 1996 2008 2020 2033 2044 2064 2082 2100 2118 2132 2147 2162 2178 2198 2220 2240 2262 2284 2307 2331 2355 2381 2409 2433 2458 2487 2511 2540 2571 2597 2624 2649 2678 2704 2731 2758 2791 2823 2853 2878 2896 2914 2926 2936 2943 2942 2933 2927 2919 2907 2890 2872 2855 2837 2820 2804 2788 2770 2749 2728 2709 2712 2706 2689 2675 2661 2645 2619 2593 2577 2552 2524 2498 2475 2448 2424 2395 2375 2360 2340 2315 2291 2270 2254 2237 2213 2184 2161 2142 2122 2103 2080 2057 2035 2014 1992 1962 1935 1908 1908 1892 1871 1853 1829 1804 1782 1761 1761 1756 1746 1739 1736 1721 1702 1684 1667 1649 1636 1614 1602 1611 1615 1603 1583 1553 1518 1484 1448 1422 1402 1392 1382 1380 1379 1379 1374 1374 1381 1383 1383 1379 1360 1337 1322 1305 1289 1283 1280 1293 1305 1314 1321 1328 1335 1342 1348 1354 1360 1368 1372 1374 1377 1381 1389 1394 1404 1421 1437 1452 1461 1472 1485 1498 1511 1520 1532 1541 1549 1559 1576 1602 1620 1637 1650 1662 1683 1704 1726 1742 1764 1789 1810 1831 1853 1877 1897 1917 1941 1959 1979 1998 2013 2028 2042 2055 2065 2077 2087 2103 2117 2133 2149 2165 2184 2205 2227 2247 2268 2291 2311 2336 2360 2385 2412 2434 2458 2485 2511 2542 2570 2597 2625 2650 2681 2711 2739 2761 2788 2820 2854 2884 2908 2926 2933 2942 2947 2945 2935 2929 2926 2913 2897 2873 2861 2855 2841 2826 2807 2787 2772 2757 2746 2748 2731 2716 2706 2689 2668 2640 2608 2586 2557 2531 2511 2486 2457 2435 2415 2394 2374 2353 2327 2301 2277 2258 2240 2218 2192 2166 2143 2122 2102 2078 2055 2033 2012 1993 1970 1951 1929 1922 1902 1877 1859 1835 1815 1797 1779 1783 1775 1767 1757 1746 1729 1705 1684 1665 1649 1631 1616 1604 1614 1618 1603 1591 1563 1521 1478 1439 1411 1395 1386 1376 1374 1375 1369 1357 1359 1370 1374 1372 1367 1342 1323 1309 1300 1292 1282 1277 1286 1294 1301 1303 1309 1314 1319 1323 1333 1341 1346 1354 1360 1368 1377 1383 1391 1400 1411 1419 1431 1443 1455 1465 1479 1495 1511 1527 1541 1557 1571 1586 1604 1623 1636 1645 1662 1684 1702 1725 1747 1770 1795 1819 1840 1862 1885 1907 1929 1954 1975 1995 2010 2019 2030 2041 2054 2066 2079 2090 2104 2116 2134 2152 2167 2188 2209 2232 2252 2272 2295 2314 2337 2361 2386 2413 2437 2462 2488 2516 2547 2573 2600 2625 2654 2687 2719 2750 2772 2794 2824 2857 2883 2907 2931 2941 2944 2947 2949 2944 2938 2934 2926 2916 2908 2904 2890 2872 2851 2838 2821 2805 2788 2770 2764 2752 2733 2715 2690 2667 2641 2613 2586 2555 2531 2509 2485 2459 2440 2425 2404 2379 2357 2335 2313 2288 2263 2243 2222 2197 2168 2144 2122 2100 2077 2056 2036 2016 1998 1983 1971 1955 1936 1909 1883 1861 1841 1825 1815 1805 1800 1792 1783 1770 1755 1735 1716 1697 1676 1657 1637 1619 1606 1618 1617 1608 1593 1562 1519 1479 1441 1409 1389 1388 1388 1391 1393 1388 1376 1356 1353 1360 1358 1352 1330 1310 1305 1302 1294 1280 1274 1277 1283 1289 1293 1297 1306 1315 1322 1332 1337 1343 1349 1354 1362 1374 1385 1398 1412 1422 1431 1441 1451 1462 1479 1494 1509 1528 1544 1557 1570 1584 1600 1616 1631 1643 1652 1668 1689 1710 1732 1753 1776 1802 1827 1848 1872 1895 1918 1945 1974 1994 2006 2011 2014 2021 2026 2037 2052 2073 2089 2101 2113 2132 2152 2165 2186 2210 2235 2257 2275 2294 2314 2334 2356 2380 2406 2430 2452 2480 2511 2542 2571 2603 2628 2651 2679 2711 2744 2772 2799 2830 2859 2889 2915 2933 2942 2946 2947 2948 2945 2940 2935 2929 2920 2913 2907 2895 2881 2865 2852 2836 2822 2813 2799 2787 2773 2752 2726 2695 2672 2645 2617 2589 2560 2538 2516 2492 2466 2444 2429 2409 2382 2358 2338 2318 2293 2270 2247 2225 2199 2175 2154 2133 2112 2091 2072 2055 2033 2017 1995 1975 1959 1943 1916 1893 1876 1857 1841 1827 1816 1808 1799 1785 1762 1744 1723 1703 1686 1665 1644 1622 1601 1586 1592 1593 1581 1564 1532 1489 1460 1431 1405 1389 1385 1388 1395 1399 1404 1396 1371 1352 1341 1335 1329 1317 1305 1303 1303 1296 1288 1277 1277 1283 1290 1296 1301 1308 1314 1321 1330 1335 1343 1347 1348 1354 1372 1388 1405 1421 1436 1449 1460 1469 1479 1494 1508 1521 1539 1553 1564 1575 1587 1596 1611 1629 1642 1655 1671 1691 1711 1736 1759 1782 1807 1832 1854 1880 1909 1934 1961 1993 2002 1999 1996 2001 2011 2017 2031 2048 2070 2084 2096 2109 2125 2144 2162 2182 2207 2239 2262 2276 2293 2313 2334 2358 2383 2413 2441 2468 2496 2525 2554 2577 2597 2621 2651 2683 2715 2747 2770 2800 2829 2859 2888 2914 2928 2936 2944 2949 2950 2947 2944 2940 2934 2925 2916 2908 2897 2887 2873 2862 2850 2837 2835 2823 2801 2776 2754 2728 2698 2677 2651 2621 2595 2569 2550 2529 2505 2477 2451 2433 2413 2388 2367 2345 2321 2297 2274 2250 2227 2207 2188 2170 2152 2134 2113 2089 2068 2050 2035 2019 2001 1979 1955 1931 1911 1892 1874 1860 1844 1827 1815 1804 1787 1768 1745 1726 1705 1682 1657 1633 1614 1598 1586 1584 1582 1568 1544 1510 1477 1457 1433 1407 1399 1395 1394 1398 1403 1409 1401 1378 1351 1329 1323 1320 1315 1311 1307 1303 1304 1303 1284 1297 1301 1305 1310 1314 1317 1322 1325 1329 1334 1340 1345 1347 1352 1365 1387 1405 1421 1436 1449 1460 1469 1481 1493 1505 1518 1532 1548 1561 1571 1584 1587 1598 1621 1636 1651 1673 1693 1709 1734 1762 1788 1810 1835 1859 1887 1920 1944 1965 1989 1986 1976 1978 1989 2003 2018 2032 2045 2062 2075 2090 2107 2124 2140 2156 2176 2201 2230 2251 2267 2285 2305 2329 2353 2376 2405 2432 2459 2484 2509 2539 2564 2590 2617 2648 2678 2707 2738 2761 2787 2821 2855 2890 2916 2928 2932 2938 2942 2942 2942 2940 2939 2937 2931 2923 2916 2906 2894 2884 2875 2873 2862 2857 2840 2806 2771 2749 2722 2698 2675 2651 2621 2592 2569 2552 2524 2502 2475 2453 2435 2415 2393 2373 2352 2328 2305 2283 2259 2241 2222 2201 2185 2167 2146 2123 2100 2073 2051 2036 2024 2011 1995 1971 1944 1911 1887 1869 1853 1838 1823 1807 1791 1772 1754 1727 1702 1685 1664 1641 1620 1602 1589 1581 1568 1558 1541 1519 1489 1461 1446 1428 1410 1413 1409 1405 1404 1404 1405 1392 1368 1340 1326 1323 1323 1323 1321 1314 1309 1316 1313 1298 1319 1323 1327 1331 1333 1338 1343 1341 1338 1341 1347 1359 1357 1352 1355 1376 1392 1405 1418 1430 1442 1454 1466 1478 1488 1502 1515 1532 1548 1560 1573 1584 1594 1615 1636 1655 1679 1706 1723 1743 1768 1792 1816 1841 1869 1894 1926 1950 1974 1978 1970 1965 1967 1979 1994 2010 2030 2042 2057 2072 2086 2100 2115 2131 2151 2177 2205 2229 2248 2266 2286 2308 2333 2355 2379 2408 2432 2456 2482 2503 2531 2557 2586 2617 2646 2676 2703 2733 2758 2781 2813 2850 2884 2908 2920 2924 2927 2926 2924 2925 2928 2928 2927 2923 2919 2912 2905 2896 2888 2888 2895 2889 2873 2848 2815 2789 2764 2740 2716 2684 2652 2619 2591 2572 2555 2531 2507 2484 2461 2444 2427 2407 2388 2364 2338 2316 2298 2279 2260 2243 2222 2201 2179 2153 2130 2109 2087 2066 2049 2031 2018 2003 1973 1943 1912 1889 1868 1850 1834 1818 1800 1783 1766 1743 1714 1689 1672 1654 1634 1617 1598 1579 1567 1550 1535 1514 1498 1475 1446 1431 1419 1418 1426 1417 1411 1405 1393 1387 1374 1355 1336 1325 1324 1325 1327 1324 1316 1320 1321 1323 1319 1324 1332 1339 1344 1348 1355 1360 1360 1357 1359 1365 1381 1378 1363 1360 1368 1380 1391 1403 1416 1431 1447 1458 1467 1478 1489 1502 1517 1531 1546 1558 1567 1582 1606 1632 1652 1674 1697 1715 1738 1763 1785 1813 1840 1869 1898 1929 1950 1961 1954 1946 1950 1958 1973 1992 2005 2022 2035 2050 2066 2079 2094 2108 2130 2152 2175 2198 2218 2237 2255 2279 2304 2328 2353 2375 2403 2425 2450 2477 2501 2529 2558 2586 2613 2641 2672 2700 2730 2756 2782 2807 2839 2866 2886 2899 2907 2911 2909 2905 2912 2919 2919 2922 2923 2921 2916 2908 2904 2896 2896 2904 2891 2866 2838 2806 2780 2756 2732 2707 2678 2651 2627 2598 2572 2553 2530 2504 2478 2460 2444 2427 2404 2379 2354 2331 2313 2296 2274 2258 2244 2220 2195 2174 2150 2127 2105 2083 2062 2044 2025 2009 1991 1963 1932 1904 1885 1865 1846 1827 1809 1791 1773 1757 1735 1710 1690 1675 1656 1638 1623 1603 1577 1560 1547 1535 1516 1497 1478 1454 1443 1434 1430 1437 1427 1417 1403 1383 1366 1353 1349 1346 1344 1344 1341 1335 1332 1325 1325 1324 1323 1321 1317 1327 1336 1343 1349 1354 1360 1366 1372 1377 1383 1392 1397 1395 1388 1384 1388 1404 1418 1431 1447 1462 1475 1485 1500 1511 1520 1534 1545 1554 1562 1576 1598 1619 1638 1656 1677 1702 1723 1745 1765 1790 1816 1842 1871 1900 1924 1936 1940 1936 1929 1940 1953 1965 1984 2000 2017 2030 2042 2061 2076 2091 2107 2129 2150 2169 2187 2206 2224 2242 2268 2295 2318 2346 2364 2388 2411 2437 2461 2490 2522 2553 2584 2606 2631 2660 2688 2718 2746 2772 2798 2825 2853 2872 2878 2883 2887 2886 2882 2888 2897 2901 2906 2910 2916 2911 2903 2900 2896 2890 2894 2885 2867 2841 2809 2785 2764 2741 2714 2685 2658 2632 2602 2578 2564 2539 2512 2486 2467 2449 2432 2409 2385 2361 2339 2313 2291 2264 2246 2233 2208 2185 2164 2142 2120 2096 2069 2044 2026 2008 1992 1970 1949 1921 1888 1869 1852 1832 1812 1794 1776 1753 1735 1718 1696 1675 1660 1645 1631 1616 1593 1572 1558 1543 1527 1509 1495 1480 1453 1442 1438 1434 1427 1417 1399 1380 1365 1353 1351 1353 1351 1346 1345 1344 1341 1337 1332 1333 1333 1328 1326 1314 1321 1328 1334 1341 1350 1358 1366 1376 1385 1395 1402 1405 1411 1408 1405 1413 1422 1436 1450 1464 1478 1493 1506 1518 1531 1542 1554 1562 1570 1578 1588 1604 1622 1642 1659 1678 1702 1723 1744 1763 1787 1814 1840 1866 1887 1903 1911 1916 1914 1915 1931 1945 1958 1975 1995 2012 2024 2037 2056 2073 2087 2104 2122 2139 2159 2178 2197 2216 2233 2259 2288 2313 2338 2359 2385 2411 2438 2462 2487 2518 2547 2580 2607 2632 2660 2690 2720 2743 2767 2788 2814 2840 2856 2860 2861 2863 2863 2862 2865 2871 2876 2881 2891 2904 2904 2900 2892 2884 2873 2867 2859 2846 2826 2802 2779 2757 2734 2712 2687 2660 2637 2610 2585 2569 2544 2519 2496 2473 2452 2432 2410 2387 2367 2347 2316 2291 2264 2243 2224 2201 2181 2156 2134 2112 2090 2063 2039 2020 1999 1978 1954 1930 1906 1881 1862 1843 1823 1808 1792 1773 1754 1736 1718 1698 1675 1654 1639 1623 1610 1595 1574 1556 1541 1525 1516 1504 1485 1462 1454 1450 1440 1421 1400 1382 1374 1367 1362 1360 1360 1357 1352 1349 1347 1346 1343 1340 1340 1340 1337 1333 1301 1308 1317 1326 1333 1343 1351 1359 1374 1384 1395 1402 1408 1414 1418 1425 1433 1438 1453 1468 1481 1492 1505 1517 1528 1538 1545 1553 1560 1568 1579 1590 1605 1622 1641 1660 1679 1702 1722 1743 1764 1787 1813 1835 1855 1867 1880 1888 1897 1894 1903 1923 1940 1957 1973 1989 2004 2015 2030 2046 2062 2075 2093 2113 2129 2146 2162 2180 2198 2218 2244 2275 2301 2325 2345 2366 2395 2425 2448 2471 2502 2531 2565 2598 2624 2650 2676 2700 2725 2746 2770 2797 2821 2833 2838 2831 2825 2828 2832 2835 2839 2844 2849 2863 2880 2889 2890 2877 2864 2859 2847 2836 2821 2806 2789 2770 2748 2723 2701 2679 2655 2639 2618 2590 2571 2545 2523 2500 2475 2450 2427 2403 2374 2352 2332 2308 2285 2263 2244 2222 2199 2174 2146 2126 2107 2085 2061 2041 2021 1997 1973 1945 1912 1884 1866 1847 1824 1808 1798 1782 1762 1742 1723 1705 1692 1675 1654 1634 1617 1602 1583 1567 1549 1530 1508 1495 1483 1467 1450 1439 1432 1422 1407 1390 1379 1374 1371 1368 1363 1358 1356 1353 1349 1346 1345 1343 1341 1340 1339 1338 1335 1276 1294 1308 1319 1328 1338 1346 1354 1367 1378 1390 1398 1407 1416 1425 1436 1439 1444 1458 1471 1483 1493 1504 1512 1521 1530 1535 1543 1551 1559 1571 1586 1604 1622 1636 1656 1680 1701 1721 1744 1768 1792 1811 1827 1842 1854 1865 1876 1885 1889 1902 1923 1942 1957 1968 1985 2001 2015 2027 2040 2056 2071 2086 2103 2116 2132 2152 2175 2196 2218 2241 2267 2290 2311 2334 2358 2388 2419 2450 2476 2508 2542 2576 2600 2622 2646 2668 2692 2715 2735 2757 2781 2800 2802 2803 2797 2794 2798 2802 2806 2811 2814 2820 2832 2847 2865 2869 2853 2839 2838 2831 2819 2803 2786 2771 2758 2742 2717 2691 2668 2648 2630 2611 2591 2572 2548 2527 2505 2480 2457 2435 2413 2385 2352 2320 2293 2266 2243 2223 2202 2183 2162 2139 2119 2099 2080 2058 2034 2014 1992 1965 1940 1917 1888 1863 1840 1819 1800 1786 1773 1759 1741 1722 1709 1693 1677 1661 1646 1628 1605 1584 1568 1554 1531 1503 1477 1463 1449 1434 1423 1415 1406 1397 1389 1382 1374 1370 1365 1360 1354 1352 1350 1346 1343 1341 1338 1335 1334 1334 1333 1331 1277 1288 1303 1318 1329 1337 1344 1353 1362 1372 1383 1393 1404 1414 1426 1436 1440 1446 1458 1468 1477 1487 1497 1504 1510 1518 1528 1539 1549 1559 1571 1584 1598 1615 1633 1648 1668 1687 1707 1734 1756 1773 1787 1798 1812 1829 1838 1851 1870 1879 1897 1917 1926 1940 1953 1973 1993 2008 2021 2032 2044 2058 2072 2090 2109 2125 2146 2166 2186 2211 2236 2260 2283 2305 2328 2353 2381 2410 2443 2468 2501 2532 2561 2584 2607 2631 2652 2677 2699 2719 2739 2759 2775 2774 2770 2768 2772 2777 2780 2783 2788 2793 2798 2808 2817 2833 2843 2829 2816 2810 2802 2790 2774 2755 2737 2724 2709 2692 2676 2655 2632 2611 2588 2566 2545 2524 2506 2486 2465 2445 2423 2400 2374 2347 2323 2303 2276 2247 2224 2198 2174 2151 2129 2109 2084 2066 2044 2024 2005 1981 1954 1932 1911 1888 1863 1836 1811 1792 1775 1760 1745 1729 1713 1701 1685 1669 1653 1642 1621 1598 1584 1567 1553 1529 1504 1473 1457 1441 1426 1420 1414 1407 1400 1394 1385 1375 1371 1367 1362 1358 1356 1353 1351 1346 1343 1340 1339 1338 1336 1335 1333 1289 1295 1306 1320 1331 1340 1348 1357 1366 1371 1380 1390 1399 1408 1419 1431 1441 1451 1463 1472 1479 1486 1496 1504 1512 1521 1530 1538 1548 1558 1570 1584 1594 1609 1632 1646 1663 1688 1714 1734 1751 1769 1781 1794 1806 1817 1825 1841 1868 1883 1894 1908 1920 1934 1946 1962 1980 1996 2011 2023 2035 2050 2066 2082 2101 2119 2138 2157 2174 2198 2226 2254 2278 2300 2326 2352 2377 2406 2435 2461 2489 2509 2533 2558 2584 2607 2627 2650 2672 2692 2715 2733 2746 2754 2752 2746 2751 2757 2762 2764 2768 2771 2778 2786 2799 2808 2821 2818 2811 2800 2775 2764 2750 2740 2730 2715 2699 2681 2664 2647 2623 2599 2580 2559 2542 2526 2508 2491 2472 2448 2417 2387 2360 2333 2307 2282 2258 2232 2208 2185 2162 2141 2121 2101 2077 2057 2036 2017 1999 1975 1951 1931 1907 1883 1863 1837 1812 1793 1776 1757 1738 1722 1705 1685 1667 1652 1636 1619 1596 1582 1569 1553 1533 1509 1490 1468 1447 1434 1422 1416 1409 1402 1396 1391 1384 1376 1369 1362 1357 1353 1350 1347 1343 1339 1338 1335 1332 1331 1330 1329 1327 1287 1300 1311 1319 1330 1343 1354 1365 1372 1377 1385 1392 1400 1408 1417 1428 1440 1452 1462 1471 1479 1487 1492 1500 1510 1520 1529 1540 1554 1566 1578 1592 1603 1616 1633 1648 1661 1679 1695 1714 1731 1746 1758 1769 1782 1801 1818 1838 1858 1875 1887 1900 1912 1925 1937 1946 1959 1977 1997 2010 2026 2041 2056 2072 2092 2109 2126 2145 2162 2184 2212 2241 2266 2290 2320 2349 2375 2407 2434 2462 2482 2499 2521 2547 2570 2591 2612 2635 2653 2674 2695 2713 2722 2728 2730 2729 2734 2739 2743 2745 2749 2752 2755 2756 2774 2791 2787 2780 2776 2771 2757 2741 2722 2701 2690 2677 2663 2648 2634 2619 2600 2580 2560 2539 2524 2510 2494 2476 2459 2438 2409 2380 2355 2328 2304 2274 2248 2226 2200 2176 2151 2135 2117 2097 2076 2053 2033 2014 1994 1970 1948 1928 1905 1879 1858 1839 1820 1800 1784 1765 1752 1741 1719 1689 1659 1647 1635 1615 1598 1580 1561 1545 1525 1505 1485 1466 1452 1442 1433 1431 1427 1413 1399 1392 1386 1378 1372 1366 1361 1357 1353 1350 1346 1343 1341 1337 1332 1331 1330 1330 1328 1277 1291 1305 1315 1327 1340 1350 1360 1369 1377 1389 1398 1406 1413 1419 1431 1445 1456 1463 1470 1477 1484 1492 1501 1511 1521 1531 1545 1559 1572 1584 1599 1615 1628 1640 1650 1662 1669 1679 1694 1709 1720 1738 1759 1777 1798 1816 1830 1843 1858 1874 1889 1901 1913 1925 1932 1944 1961 1981 1997 2014 2027 2040 2059 2079 2098 2114 2130 2150 2173 2199 2224 2250 2280 2309 2337 2365 2393 2417 2437 2453 2472 2496 2519 2541 2564 2587 2608 2628 2651 2676 2691 2697 2702 2706 2705 2706 2702 2701 2705 2713 2720 2726 2735 2757 2776 2772 2766 2761 2758 2749 2729 2703 2673 2656 2643 2631 2619 2605 2593 2582 2567 2547 2524 2509 2493 2478 2460 2444 2427 2401 2373 2350 2325 2302 2276 2249 2226 2203 2176 2149 2132 2114 2093 2072 2048 2029 2010 1987 1959 1935 1913 1893 1873 1851 1830 1809 1790 1773 1755 1744 1735 1714 1691 1667 1644 1628 1604 1579 1552 1539 1527 1506 1489 1477 1461 1460 1455 1448 1445 1440 1429 1409 1392 1382 1375 1372 1365 1359 1354 1351 1349 1346 1344 1341 1337 1332 1331 1331 1329 1327 1284 1301 1314 1323 1335 1344 1352 1360 1370 1378 1388 1395 1403 1411 1419 1432 1444 1454 1459 1464 1472 1479 1489 1499 1508 1518 1530 1545 1561 1573 1587 1601 1608 1614 1625 1630 1637 1647 1661 1675 1691 1707 1734 1766 1784 1799 1809 1817 1832 1845 1860 1875 1888 1902 1912 1922 1936 1951 1968 1982 2000 2015 2029 2046 2065 2086 2104 2123 2148 2169 2198 2225 2247 2277 2307 2335 2359 2383 2400 2419 2438 2458 2482 2505 2523 2545 2570 2589 2608 2633 2654 2663 2665 2668 2674 2677 2679 2677 2677 2681 2688 2696 2704 2720 2741 2749 2748 2744 2740 2740 2729 2709 2684 2654 2634 2618 2604 2590 2577 2564 2556 2547 2532 2510 2493 2477 2465 2449 2433 2416 2390 2365 2341 2313 2286 2258 2236 2214 2193 2172 2148 2127 2107 2083 2064 2043 2025 2010 1988 1963 1942 1924 1902 1882 1859 1838 1818 1797 1775 1757 1743 1728 1712 1695 1674 1650 1634 1612 1595 1572 1555 1535 1512 1493 1482 1475 1476 1472 1465 1457 1449 1440 1416 1396 1384 1374 1370 1364 1359 1355 1352 1349 1346 1344 1341 1338 1334 1332 1329 1326 1324 1274 1289 1305 1322 1332 1343 1353 1362 1369 1376 1386 1391 1403 1417 1426 1435 1442 1449 1454 1462 1468 1476 1486 1497 1506 1516 1527 1541 1555 1566 1578 1588 1586 1584 1593 1598 1603 1622 1643 1660 1682 1712 1740 1764 1777 1785 1794 1808 1823 1837 1850 1864 1873 1890 1901 1911 1923 1936 1949 1963 1979 1996 2012 2029 2048 2071 2094 2115 2136 2158 2184 2213 2241 2270 2298 2321 2338 2356 2372 2393 2418 2440 2463 2484 2503 2526 2549 2568 2588 2613 2635 2644 2644 2639 2636 2641 2645 2648 2652 2658 2665 2672 2683 2702 2720 2722 2723 2719 2715 2715 2704 2686 2667 2639 2618 2598 2576 2560 2545 2529 2519 2515 2504 2482 2461 2448 2436 2423 2405 2385 2365 2355 2335 2308 2282 2258 2236 2218 2199 2177 2151 2126 2104 2078 2058 2035 2016 2000 1977 1950 1926 1906 1886 1869 1850 1833 1813 1793 1773 1753 1732 1715 1707 1699 1683 1656 1636 1615 1596 1578 1557 1536 1515 1494 1482 1485 1487 1482 1476 1463 1450 1434 1410 1394 1383 1371 1366 1365 1361 1357 1354 1351 1348 1345 1343 1341 1339 1336 1330 1327 1326 1278 1286 1297 1314 1325 1338 1350 1360 1367 1375 1384 1392 1406 1422 1429 1435 1440 1442 1446 1457 1464 1471 1481 1492 1502 1511 1519 1525 1535 1544 1549 1555 1562 1565 1572 1584 1607 1629 1647 1672 1696 1725 1746 1761 1766 1775 1789 1805 1817 1830 1841 1850 1857 1872 1888 1903 1914 1925 1940 1952 1967 1985 2004 2024 2043 2065 2088 2111 2131 2154 2184 2213 2242 2268 2290 2307 2321 2336 2352 2375 2403 2425 2447 2467 2488 2510 2529 2548 2570 2593 2612 2622 2624 2620 2614 2616 2617 2622 2629 2634 2640 2647 2659 2677 2690 2697 2703 2700 2696 2693 2690 2676 2657 2633 2614 2591 2566 2548 2528 2510 2508 2500 2484 2466 2452 2445 2436 2423 2400 2383 2363 2346 2328 2305 2287 2269 2247 2220 2194 2167 2146 2126 2103 2078 2054 2033 2015 1993 1970 1946 1922 1897 1876 1859 1841 1826 1808 1790 1772 1753 1736 1722 1716 1710 1696 1670 1644 1618 1592 1570 1551 1532 1514 1493 1484 1491 1496 1485 1472 1454 1436 1416 1397 1383 1373 1364 1359 1359 1357 1352 1348 1344 1342 1339 1336 1333 1332 1331 1328 1326 1327 1271 1280 1288 1300 1316 1328 1342 1357 1368 1375 1385 1398 1408 1417 1422 1426 1432 1432 1429 1440 1453 1462 1471 1479 1487 1494 1492 1492 1504 1515 1516 1527 1542 1555 1571 1592 1618 1639 1660 1685 1706 1725 1731 1738 1751 1764 1778 1788 1801 1816 1826 1835 1842 1857 1875 1885 1897 1907 1921 1937 1954 1972 1994 2012 2027 2051 2082 2109 2128 2152 2181 2205 2232 2255 2271 2287 2302 2317 2334 2358 2386 2409 2431 2452 2474 2494 2511 2529 2552 2574 2587 2590 2594 2602 2605 2609 2608 2611 2616 2620 2624 2627 2640 2655 2660 2659 2661 2656 2660 2664 2660 2654 2642 2626 2608 2587 2560 2532 2505 2483 2465 2451 2441 2433 2424 2415 2409 2400 2383 2368 2353 2330 2309 2290 2272 2253 2233 2207 2183 2161 2141 2122 2099 2076 2047 2024 2006 1983 1959 1937 1916 1893 1871 1850 1833 1818 1799 1782 1766 1751 1741 1731 1725 1713 1692 1672 1648 1621 1596 1573 1557 1538 1520 1507 1503 1505 1505 1489 1459 1438 1418 1404 1393 1380 1372 1368 1366 1360 1355 1353 1349 1345 1342 1340 1337 1334 1333 1332 1331 1330 1327 1254 1266 1278 1291 1307 1319 1337 1356 1368 1376 1386 1396 1405 1413 1421 1419 1417 1417 1414 1420 1433 1445 1454 1460 1463 1462 1464 1472 1483 1497 1509 1524 1543 1561 1582 1608 1634 1658 1674 1690 1703 1715 1722 1730 1744 1757 1766 1772 1785 1798 1807 1813 1827 1847 1861 1869 1881 1892 1907 1923 1942 1960 1980 2000 2015 2042 2079 2107 2126 2146 2169 2188 2209 2231 2248 2267 2282 2297 2313 2337 2361 2385 2408 2429 2451 2471 2489 2510 2531 2552 2567 2567 2563 2573 2582 2589 2592 2593 2595 2598 2604 2613 2624 2633 2637 2637 2638 2637 2643 2643 2637 2631 2621 2607 2598 2575 2540 2513 2494 2472 2443 2432 2427 2420 2413 2404 2395 2388 2377 2364 2348 2323 2301 2283 2262 2237 2215 2192 2171 2154 2134 2115 2092 2069 2041 2017 2000 1977 1951 1926 1905 1886 1866 1845 1827 1810 1787 1770 1752 1740 1730 1718 1708 1695 1664 1647 1630 1606 1582 1566 1554 1540 1527 1520 1514 1502 1489 1469 1443 1427 1411 1394 1382 1375 1369 1366 1361 1354 1351 1350 1347 1344 1341 1337 1335 1334 1334 1332 1329 1325 1323 1268 1277 1290 1301 1314 1327 1342 1357 1371 1382 1386 1389 1399 1406 1405 1396 1394 1404 1407 1410 1412 1418 1425 1427 1432 1446 1460 1476 1490 1506 1523 1538 1558 1577 1600 1623 1643 1661 1673 1682 1692 1701 1713 1725 1738 1747 1756 1762 1773 1778 1782 1792 1813 1832 1841 1851 1864 1880 1897 1910 1931 1951 1970 1995 2016 2044 2074 2101 2121 2134 2153 2173 2190 2211 2236 2260 2275 2290 2306 2325 2345 2363 2388 2412 2432 2454 2479 2503 2522 2539 2548 2555 2559 2569 2577 2582 2585 2585 2587 2588 2590 2598 2604 2609 2611 2608 2609 2612 2616 2614 2609 2604 2598 2586 2577 2555 2521 2489 2465 2448 2426 2417 2409 2397 2391 2391 2384 2378 2373 2362 2341 2318 2299 2281 2260 2235 2209 2184 2163 2143 2122 2105 2083 2058 2036 2017 2002 1980 1954 1926 1904 1884 1863 1845 1826 1812 1793 1771 1746 1731 1722 1713 1702 1690 1669 1651 1633 1614 1591 1573 1561 1551 1544 1536 1523 1502 1482 1464 1441 1424 1412 1396 1383 1376 1372 1370 1365 1357 1355 1352 1349 1347 1345 1341 1340 1338 1336 1334 1331 1323 1322 1271 1282 1290 1297 1302 1311 1327 1348 1368 1376 1370 1379 1389 1389 1381 1372 1373 1380 1383 1386 1387 1393 1404 1415 1433 1457 1476 1495 1511 1531 1546 1561 1580 1598 1615 1629 1639 1650 1659 1668 1679 1690 1702 1715 1725 1733 1745 1753 1761 1760 1761 1778 1798 1810 1818 1831 1845 1864 1883 1898 1921 1945 1967 1990 2011 2035 2062 2083 2104 2120 2137 2153 2175 2198 2218 2236 2251 2266 2282 2298 2321 2346 2369 2390 2411 2434 2458 2480 2501 2516 2518 2529 2541 2552 2559 2566 2569 2570 2574 2578 2577 2577 2580 2585 2588 2584 2587 2593 2593 2589 2585 2581 2573 2562 2551 2534 2511 2473 2437 2423 2408 2392 2380 2358 2352 2361 2360 2356 2358 2352 2332 2312 2295 2276 2255 2236 2211 2186 2164 2137 2115 2094 2072 2049 2025 2009 1988 1964 1944 1920 1889 1866 1850 1833 1814 1797 1776 1753 1730 1711 1695 1693 1681 1666 1651 1632 1615 1593 1575 1561 1551 1540 1532 1520 1505 1485 1468 1453 1437 1424 1415 1403 1389 1382 1376 1374 1369 1362 1356 1354 1355 1351 1348 1347 1345 1342 1339 1337 1335 1330 1328 1276 1286 1294 1302 1308 1319 1337 1351 1353 1353 1366 1375 1364 1357 1348 1340 1343 1351 1360 1372 1382 1392 1406 1427 1452 1474 1493 1513 1532 1553 1566 1577 1593 1608 1616 1622 1630 1638 1647 1656 1667 1682 1694 1704 1710 1718 1730 1736 1741 1745 1747 1764 1780 1791 1803 1818 1836 1854 1877 1901 1923 1941 1954 1980 2005 2026 2045 2063 2084 2103 2119 2134 2153 2175 2195 2216 2237 2253 2269 2291 2312 2337 2362 2384 2406 2429 2444 2463 2483 2492 2495 2507 2520 2532 2542 2552 2555 2555 2560 2561 2559 2556 2554 2558 2562 2564 2568 2572 2570 2566 2562 2557 2545 2535 2526 2514 2497 2465 2432 2414 2395 2372 2360 2333 2326 2331 2329 2328 2336 2346 2344 2326 2305 2290 2267 2243 2220 2194 2164 2129 2102 2079 2060 2041 2018 1996 1970 1948 1930 1906 1885 1865 1847 1829 1812 1793 1763 1739 1719 1693 1679 1678 1672 1664 1646 1623 1597 1574 1560 1551 1544 1533 1520 1505 1488 1473 1460 1448 1438 1430 1421 1408 1393 1387 1380 1377 1372 1365 1358 1358 1361 1353 1348 1348 1345 1341 1339 1337 1337 1334 1333 1268 1277 1286 1295 1306 1324 1341 1343 1334 1346 1367 1362 1337 1324 1316 1317 1325 1339 1357 1376 1394 1409 1427 1451 1471 1487 1506 1524 1544 1562 1576 1582 1587 1594 1600 1606 1617 1628 1637 1644 1658 1673 1683 1692 1701 1708 1714 1719 1713 1719 1728 1741 1756 1770 1783 1803 1829 1852 1873 1889 1903 1916 1936 1961 1986 2005 2020 2039 2064 2086 2105 2121 2137 2155 2172 2191 2215 2237 2256 2279 2299 2321 2345 2369 2390 2412 2428 2448 2463 2468 2476 2485 2497 2512 2528 2541 2544 2544 2546 2542 2541 2539 2533 2531 2534 2540 2543 2542 2540 2537 2535 2528 2519 2511 2499 2486 2469 2448 2419 2391 2370 2353 2333 2313 2299 2289 2280 2279 2295 2322 2339 2333 2318 2302 2278 2248 2216 2190 2159 2118 2089 2069 2050 2032 2011 1991 1965 1938 1914 1893 1876 1855 1833 1811 1795 1778 1750 1726 1704 1676 1666 1660 1658 1656 1639 1613 1586 1567 1555 1546 1537 1523 1507 1495 1480 1469 1460 1451 1443 1435 1424 1407 1394 1390 1386 1383 1377 1368 1365 1365 1361 1354 1351 1351 1348 1345 1343 1338 1337 1333 1328 1259 1269 1278 1289 1306 1322 1327 1323 1330 1352 1349 1327 1309 1300 1299 1317 1334 1350 1369 1385 1401 1419 1443 1468 1486 1500 1514 1530 1547 1564 1575 1579 1583 1588 1587 1584 1601 1617 1626 1636 1650 1663 1670 1678 1687 1695 1698 1698 1690 1693 1712 1728 1745 1750 1765 1793 1823 1845 1863 1878 1892 1909 1932 1952 1971 1990 2006 2023 2047 2070 2090 2106 2121 2140 2158 2175 2195 2219 2240 2261 2284 2306 2326 2348 2368 2387 2409 2427 2439 2447 2455 2459 2469 2487 2508 2525 2530 2529 2527 2525 2525 2523 2519 2515 2519 2518 2523 2524 2522 2519 2515 2510 2501 2492 2478 2466 2453 2433 2404 2380 2360 2342 2325 2307 2288 2271 2251 2246 2255 2275 2309 2321 2310 2295 2273 2245 2213 2183 2149 2110 2079 2057 2039 2023 2004 1988 1965 1935 1911 1887 1864 1840 1818 1793 1774 1756 1735 1717 1695 1672 1657 1643 1640 1640 1628 1605 1588 1572 1558 1543 1527 1505 1486 1479 1469 1461 1452 1444 1435 1424 1415 1403 1396 1393 1391 1384 1377 1370 1365 1361 1356 1351 1349 1348 1345 1341 1340 1338 1336 1333 1329 1257 1266 1278 1295 1315 1320 1311 1318 1341 1339 1314 1286 1270 1283 1303 1326 1345 1365 1381 1398 1412 1432 1452 1466 1483 1500 1517 1532 1545 1556 1565 1566 1568 1575 1582 1587 1596 1606 1617 1629 1641 1652 1662 1669 1678 1683 1671 1660 1659 1668 1695 1710 1725 1739 1764 1792 1817 1836 1852 1868 1889 1909 1924 1940 1955 1974 1992 2010 2029 2050 2071 2088 2106 2126 2148 2169 2187 2206 2228 2250 2276 2302 2321 2340 2360 2375 2390 2409 2424 2434 2440 2443 2450 2474 2499 2518 2519 2509 2506 2502 2500 2499 2497 2494 2493 2492 2492 2487 2480 2475 2471 2469 2464 2458 2446 2435 2422 2404 2380 2357 2339 2317 2300 2282 2265 2250 2231 2221 2216 2225 2265 2294 2284 2269 2252 2233 2208 2178 2142 2104 2071 2044 2024 2009 1991 1977 1957 1935 1913 1883 1857 1833 1814 1791 1767 1744 1725 1711 1697 1680 1661 1641 1637 1637 1631 1616 1602 1587 1572 1554 1537 1515 1493 1478 1466 1458 1448 1442 1437 1424 1414 1405 1399 1394 1389 1384 1381 1379 1375 1369 1363 1358 1354 1351 1348 1344 1341 1339 1337 1335 1333 1237 1252 1265 1276 1286 1289 1294 1320 1332 1317 1291 1267 1262 1287 1316 1337 1352 1367 1383 1406 1426 1443 1458 1470 1482 1497 1508 1515 1530 1541 1549 1552 1555 1563 1572 1579 1586 1594 1607 1618 1629 1641 1650 1660 1667 1665 1646 1630 1630 1642 1662 1687 1714 1748 1776 1796 1812 1827 1842 1857 1879 1897 1905 1919 1934 1952 1971 1991 2009 2028 2052 2073 2095 2113 2134 2159 2179 2198 2220 2240 2263 2287 2305 2319 2337 2352 2362 2378 2391 2400 2410 2426 2444 2470 2493 2502 2500 2498 2499 2494 2486 2486 2490 2484 2479 2475 2470 2462 2456 2449 2445 2440 2437 2435 2429 2419 2405 2386 2358 2333 2311 2290 2276 2258 2245 2231 2216 2202 2189 2190 2226 2260 2249 2235 2227 2220 2199 2170 2135 2099 2067 2034 2008 1991 1975 1956 1942 1933 1908 1882 1858 1837 1817 1794 1770 1747 1722 1702 1685 1672 1659 1640 1626 1611 1605 1605 1594 1583 1568 1551 1533 1512 1497 1478 1460 1449 1443 1435 1427 1417 1409 1401 1398 1393 1387 1379 1375 1374 1371 1366 1361 1355 1350 1348 1344 1341 1337 1335 1334 1334 1335 1233 1246 1259 1270 1269 1272 1289 1310 1306 1287 1261 1247 1269 1296 1319 1325 1335 1359 1379 1402 1424 1439 1455 1467 1468 1480 1492 1499 1513 1528 1537 1538 1543 1552 1559 1566 1575 1584 1596 1609 1619 1628 1638 1645 1645 1635 1615 1604 1605 1615 1629 1672 1721 1761 1779 1793 1807 1820 1831 1844 1859 1875 1890 1905 1921 1938 1957 1977 1996 2016 2037 2055 2074 2095 2119 2145 2170 2196 2220 2240 2257 2271 2287 2301 2319 2336 2348 2360 2371 2381 2393 2412 2442 2472 2481 2478 2475 2475 2477 2476 2470 2467 2468 2465 2461 2457 2451 2444 2434 2427 2422 2417 2413 2409 2407 2402 2392 2372 2344 2317 2291 2271 2259 2246 2233 2219 2203 2186 2171 2165 2188 2212 2198 2197 2204 2209 2187 2154 2124 2095 2061 2028 2003 1981 1963 1947 1935 1929 1907 1883 1859 1835 1814 1792 1767 1746 1723 1703 1685 1670 1658 1643 1632 1620 1604 1599 1593 1579 1565 1551 1533 1513 1495 1476 1458 1448 1442 1434 1425 1417 1410 1402 1397 1392 1388 1382 1376 1372 1369 1364 1359 1354 1350 1347 1343 1339 1336 1335 1333 1334 1335 1208 1224 1240 1253 1253 1254 1275 1289 1279 1263 1240 1238 1272 1296 1311 1315 1329 1354 1377 1398 1418 1431 1445 1452 1451 1464 1478 1489 1503 1518 1527 1523 1529 1541 1548 1558 1567 1575 1587 1601 1610 1615 1623 1621 1612 1594 1567 1564 1575 1595 1628 1676 1719 1745 1759 1779 1799 1811 1817 1822 1834 1853 1868 1882 1901 1921 1943 1964 1983 2002 2021 2040 2064 2089 2113 2136 2160 2182 2202 2224 2244 2254 2266 2284 2304 2323 2337 2348 2355 2363 2381 2405 2434 2459 2461 2459 2455 2451 2451 2449 2448 2443 2438 2437 2435 2431 2428 2423 2413 2404 2398 2395 2390 2384 2377 2374 2364 2347 2326 2304 2277 2259 2243 2230 2217 2202 2186 2168 2146 2132 2128 2127 2123 2149 2173 2178 2167 2146 2116 2082 2047 2012 1987 1963 1944 1930 1909 1900 1896 1879 1856 1831 1809 1787 1763 1741 1718 1699 1683 1664 1650 1638 1625 1612 1595 1587 1579 1565 1559 1545 1527 1513 1497 1482 1466 1453 1442 1432 1423 1416 1410 1404 1395 1389 1387 1385 1381 1376 1373 1368 1362 1360 1356 1353 1349 1345 1343 1341 1338 1337 1337 1195 1213 1222 1224 1232 1241 1260 1264 1248 1232 1224 1238 1271 1292 1298 1311 1332 1352 1375 1395 1412 1424 1428 1432 1440 1456 1466 1479 1495 1508 1512 1509 1517 1529 1538 1547 1555 1563 1576 1585 1595 1599 1595 1582 1576 1553 1538 1546 1570 1604 1644 1692 1728 1741 1753 1769 1782 1793 1803 1811 1821 1837 1853 1873 1893 1913 1932 1951 1968 1987 2007 2028 2055 2081 2110 2131 2154 2175 2193 2209 2225 2238 2251 2274 2297 2317 2334 2339 2342 2347 2361 2385 2410 2432 2437 2437 2436 2431 2427 2422 2421 2419 2412 2408 2407 2403 2402 2400 2396 2388 2382 2380 2377 2375 2367 2354 2338 2315 2295 2278 2261 2245 2231 2217 2207 2190 2165 2149 2125 2109 2095 2091 2099 2121 2140 2149 2152 2137 2108 2078 2047 2017 1986 1960 1941 1923 1901 1889 1889 1877 1863 1840 1815 1789 1765 1744 1719 1699 1681 1661 1645 1636 1622 1602 1588 1579 1565 1549 1545 1533 1518 1509 1499 1491 1478 1464 1449 1434 1424 1414 1405 1402 1395 1387 1383 1379 1376 1373 1371 1366 1362 1361 1358 1356 1351 1345 1343 1340 1339 1338 1338 1204 1215 1210 1199 1211 1228 1244 1241 1218 1203 1213 1240 1269 1283 1285 1304 1320 1345 1369 1388 1404 1411 1410 1421 1431 1448 1458 1469 1483 1494 1494 1500 1509 1519 1528 1537 1550 1560 1568 1573 1570 1568 1558 1543 1532 1510 1513 1535 1564 1600 1638 1673 1700 1713 1727 1742 1754 1768 1782 1792 1804 1820 1839 1860 1880 1898 1915 1935 1959 1985 2011 2036 2062 2086 2110 2128 2148 2168 2185 2195 2206 2223 2241 2267 2294 2316 2330 2328 2327 2334 2336 2351 2379 2405 2414 2407 2411 2409 2401 2397 2395 2393 2382 2378 2384 2379 2375 2373 2367 2358 2352 2344 2338 2335 2332 2326 2316 2292 2272 2256 2237 2220 2208 2195 2180 2162 2138 2125 2110 2092 2074 2065 2067 2089 2107 2121 2127 2117 2098 2072 2043 2014 1985 1955 1931 1912 1893 1882 1875 1862 1852 1837 1815 1786 1763 1741 1717 1697 1676 1657 1644 1637 1624 1605 1591 1580 1562 1542 1531 1523 1511 1501 1492 1485 1481 1476 1463 1447 1438 1424 1410 1402 1397 1394 1390 1384 1380 1377 1374 1371 1368 1368 1365 1359 1353 1349 1347 1346 1345 1343 1342 1209 1200 1192 1188 1192 1209 1219 1215 1195 1194 1216 1237 1258 1268 1271 1293 1309 1339 1363 1382 1394 1392 1396 1409 1424 1442 1454 1466 1478 1482 1479 1489 1501 1508 1519 1529 1539 1541 1552 1548 1530 1515 1511 1504 1497 1481 1501 1534 1564 1588 1610 1629 1659 1693 1706 1719 1733 1748 1760 1774 1788 1804 1824 1844 1864 1881 1900 1928 1960 1992 2024 2057 2085 2104 2120 2132 2142 2157 2168 2179 2190 2204 2231 2257 2287 2308 2312 2309 2302 2310 2320 2332 2354 2370 2381 2385 2393 2395 2382 2372 2369 2370 2366 2365 2364 2359 2357 2357 2348 2340 2338 2332 2319 2308 2299 2289 2278 2261 2245 2228 2212 2198 2187 2177 2162 2145 2124 2111 2096 2073 2054 2046 2047 2065 2082 2093 2096 2093 2083 2061 2033 2003 1978 1948 1923 1901 1883 1870 1861 1843 1832 1823 1806 1779 1753 1729 1706 1688 1668 1651 1641 1628 1614 1602 1590 1573 1556 1540 1528 1513 1496 1486 1473 1467 1471 1466 1459 1454 1444 1432 1422 1412 1405 1397 1389 1381 1375 1372 1368 1366 1364 1362 1362 1358 1351 1349 1346 1345 1344 1342 1341 1184 1154 1160 1171 1183 1196 1195 1177 1163 1183 1206 1223 1239 1259 1279 1299 1317 1343 1364 1377 1376 1379 1396 1411 1423 1437 1445 1450 1460 1459 1468 1482 1493 1502 1504 1499 1512 1518 1521 1508 1492 1477 1475 1472 1467 1466 1493 1521 1545 1563 1580 1594 1620 1662 1687 1705 1720 1733 1746 1763 1781 1798 1816 1836 1858 1879 1903 1940 1974 2000 2036 2073 2106 2125 2137 2145 2150 2155 2160 2167 2176 2190 2218 2247 2271 2291 2296 2296 2287 2287 2299 2310 2322 2340 2351 2359 2363 2361 2357 2353 2348 2344 2341 2339 2336 2332 2331 2329 2322 2316 2311 2302 2291 2279 2270 2259 2248 2234 2219 2202 2187 2176 2167 2155 2143 2129 2110 2094 2075 2050 2034 2028 2029 2041 2057 2067 2067 2066 2061 2041 2017 1990 1967 1943 1920 1897 1878 1860 1853 1836 1827 1821 1807 1780 1755 1731 1707 1688 1670 1653 1641 1630 1617 1600 1583 1567 1553 1547 1536 1520 1505 1496 1481 1461 1460 1458 1453 1451 1444 1437 1435 1428 1420 1411 1400 1390 1378 1367 1365 1367 1365 1361 1358 1356 1352 1350 1348 1348 1347 1343 1342 1172 1155 1144 1147 1173 1182 1172 1162 1156 1170 1180 1201 1228 1250 1273 1298 1321 1343 1351 1348 1356 1377 1395 1407 1416 1422 1423 1426 1432 1432 1449 1473 1486 1499 1492 1467 1472 1479 1473 1463 1459 1454 1451 1449 1442 1454 1479 1496 1514 1535 1560 1578 1587 1618 1662 1695 1709 1723 1740 1759 1779 1797 1815 1836 1861 1887 1918 1956 1991 2016 2045 2082 2117 2130 2135 2138 2145 2143 2141 2151 2169 2183 2201 2223 2245 2262 2271 2267 2261 2266 2273 2285 2299 2313 2324 2336 2344 2342 2338 2331 2327 2324 2321 2318 2315 2311 2309 2306 2301 2295 2284 2275 2267 2260 2255 2246 2235 2218 2202 2186 2171 2160 2147 2133 2120 2106 2087 2070 2052 2030 2016 2006 2000 2009 2026 2044 2044 2037 2031 2017 1995 1972 1949 1928 1904 1883 1865 1851 1835 1821 1809 1802 1792 1773 1749 1727 1705 1690 1673 1657 1639 1626 1613 1595 1579 1571 1558 1549 1537 1522 1505 1490 1476 1461 1453 1448 1439 1438 1439 1433 1430 1427 1423 1417 1408 1402 1393 1379 1371 1368 1364 1360 1356 1353 1352 1351 1350 1349 1348 1344 1343 1145 1143 1143 1152 1165 1154 1144 1147 1145 1160 1175 1201 1233 1258 1277 1295 1315 1326 1329 1338 1351 1364 1376 1384 1392 1396 1395 1398 1403 1409 1426 1456 1471 1478 1469 1441 1435 1432 1428 1426 1426 1425 1427 1430 1430 1443 1466 1491 1513 1531 1550 1567 1581 1612 1657 1694 1708 1724 1745 1764 1778 1796 1820 1844 1869 1897 1929 1962 1997 2029 2065 2100 2120 2123 2121 2133 2132 2132 2130 2141 2152 2163 2178 2199 2223 2242 2251 2243 2232 2244 2252 2260 2273 2285 2298 2313 2326 2329 2322 2315 2309 2304 2299 2294 2290 2289 2289 2285 2280 2273 2264 2259 2252 2247 2243 2234 2220 2202 2188 2173 2159 2149 2133 2117 2105 2088 2066 2053 2041 2016 2003 2000 1994 1999 2010 2019 2019 2016 2007 1996 1981 1960 1935 1915 1899 1884 1866 1848 1833 1819 1805 1795 1792 1783 1760 1735 1712 1696 1679 1661 1644 1635 1625 1608 1592 1580 1566 1553 1542 1528 1509 1493 1481 1470 1459 1444 1433 1430 1433 1427 1421 1418 1419 1417 1413 1411 1408 1396 1378 1367 1364 1362 1358 1355 1353 1351 1350 1349 1346 1345 1344 1129 1120 1135 1155 1159 1138 1130 1138 1135 1156 1184 1211 1234 1253 1271 1281 1293 1303 1319 1343 1347 1338 1341 1347 1353 1363 1365 1364 1377 1384 1401 1419 1429 1418 1415 1408 1407 1404 1399 1399 1398 1397 1409 1428 1443 1461 1482 1508 1536 1553 1567 1579 1595 1623 1659 1687 1704 1724 1749 1767 1779 1795 1816 1838 1864 1895 1929 1966 2003 2037 2068 2097 2107 2105 2115 2124 2122 2120 2116 2124 2133 2143 2159 2180 2202 2220 2227 2216 2205 2218 2226 2232 2241 2257 2275 2294 2308 2313 2311 2307 2294 2282 2272 2266 2260 2258 2261 2258 2253 2249 2240 2232 2227 2219 2212 2205 2192 2173 2159 2145 2133 2124 2114 2102 2087 2072 2052 2034 2017 1997 1983 1970 1968 1978 1990 1993 1993 1987 1978 1971 1961 1941 1916 1895 1882 1868 1852 1837 1824 1811 1796 1784 1781 1773 1755 1730 1709 1694 1678 1660 1648 1642 1632 1619 1603 1586 1570 1557 1546 1531 1512 1499 1489 1476 1465 1446 1434 1429 1426 1422 1415 1411 1414 1414 1415 1413 1407 1395 1378 1370 1367 1366 1363 1360 1358 1355 1354 1353 1351 1349 1348 1117 1103 1122 1138 1147 1131 1127 1138 1140 1161 1191 1213 1222 1228 1246 1261 1270 1295 1318 1321 1319 1316 1312 1316 1322 1330 1334 1340 1353 1353 1362 1366 1372 1376 1379 1379 1379 1379 1371 1370 1381 1395 1414 1442 1464 1489 1514 1541 1570 1587 1605 1622 1635 1654 1674 1695 1712 1731 1753 1765 1778 1792 1812 1832 1858 1891 1922 1961 1995 2024 2050 2071 2079 2082 2104 2112 2114 2107 2101 2106 2116 2127 2145 2164 2180 2193 2197 2183 2183 2191 2195 2200 2213 2234 2256 2281 2296 2302 2308 2304 2281 2265 2254 2248 2242 2238 2234 2235 2241 2237 2222 2213 2211 2204 2196 2189 2173 2153 2140 2128 2119 2110 2102 2093 2079 2062 2042 2022 2005 1986 1967 1956 1961 1969 1969 1969 1974 1967 1958 1949 1940 1928 1912 1888 1868 1853 1838 1825 1815 1803 1789 1776 1765 1755 1740 1720 1701 1683 1670 1658 1648 1641 1631 1619 1605 1589 1572 1560 1544 1527 1507 1490 1478 1465 1456 1439 1427 1420 1416 1411 1407 1403 1397 1395 1400 1393 1383 1377 1373 1370 1370 1368 1365 1362 1360 1357 1355 1353 1350 1346 1344 1092 1095 1111 1116 1122 1114 1117 1130 1150 1173 1198 1218 1222 1227 1244 1263 1277 1297 1300 1286 1282 1283 1286 1292 1297 1301 1309 1313 1317 1332 1339 1332 1329 1343 1348 1346 1342 1360 1369 1378 1394 1413 1436 1465 1491 1519 1543 1569 1591 1594 1615 1637 1653 1671 1689 1708 1722 1736 1745 1754 1770 1785 1803 1828 1856 1888 1917 1947 1974 1998 2020 2035 2047 2060 2083 2097 2101 2091 2088 2094 2099 2111 2131 2147 2163 2173 2174 2165 2164 2171 2171 2172 2191 2218 2247 2279 2294 2299 2311 2311 2272 2250 2235 2226 2215 2207 2205 2201 2208 2212 2200 2191 2185 2178 2171 2163 2152 2135 2120 2111 2099 2088 2078 2070 2055 2041 2024 2008 1989 1972 1954 1942 1944 1946 1948 1944 1949 1947 1937 1929 1920 1914 1907 1888 1865 1847 1832 1818 1810 1800 1786 1771 1756 1748 1736 1720 1700 1679 1666 1659 1649 1641 1633 1623 1613 1596 1579 1569 1554 1534 1514 1494 1476 1460 1449 1436 1425 1421 1417 1413 1408 1403 1398 1393 1392 1387 1380 1376 1375 1374 1373 1372 1371 1369 1366 1362 1358 1353 1350 1344 1341 1077 1082 1091 1098 1105 1102 1103 1121 1143 1170 1198 1216 1227 1237 1253 1267 1276 1279 1273 1265 1262 1261 1264 1269 1271 1272 1278 1282 1284 1296 1304 1301 1299 1307 1313 1318 1326 1350 1373 1394 1416 1441 1463 1488 1516 1544 1567 1587 1592 1587 1608 1630 1652 1675 1692 1708 1720 1732 1728 1735 1757 1771 1792 1820 1853 1884 1910 1930 1951 1970 1986 1998 2015 2035 2056 2070 2074 2068 2064 2074 2082 2095 2109 2123 2137 2147 2139 2132 2143 2144 2141 2147 2176 2207 2235 2268 2274 2270 2287 2295 2256 2233 2213 2201 2190 2184 2181 2179 2185 2194 2186 2178 2166 2156 2150 2139 2133 2123 2104 2093 2080 2068 2056 2046 2031 2022 2009 1992 1972 1955 1940 1925 1919 1920 1930 1922 1921 1923 1915 1911 1901 1891 1887 1877 1863 1847 1830 1814 1802 1791 1776 1761 1751 1741 1733 1723 1707 1689 1670 1655 1637 1631 1625 1617 1611 1603 1592 1579 1562 1539 1517 1496 1475 1457 1445 1432 1420 1411 1412 1408 1403 1398 1393 1389 1386 1384 1379 1375 1373 1372 1370 1369 1368 1366 1363 1362 1358 1352 1350 1344 1341 1075 1082 1087 1093 1102 1107 1112 1126 1144 1165 1188 1206 1221 1233 1245 1254 1260 1245 1234 1228 1228 1227 1229 1236 1240 1244 1251 1261 1270 1278 1282 1290 1296 1303 1312 1327 1347 1366 1389 1414 1439 1468 1491 1515 1541 1564 1577 1579 1577 1586 1609 1629 1651 1674 1684 1696 1707 1715 1714 1722 1746 1757 1788 1819 1850 1879 1897 1914 1932 1947 1961 1972 1990 2013 2031 2037 2036 2037 2046 2056 2064 2077 2090 2101 2112 2118 2109 2103 2116 2120 2120 2123 2155 2190 2222 2252 2249 2244 2257 2280 2256 2224 2197 2185 2173 2165 2161 2156 2162 2171 2168 2160 2148 2134 2128 2119 2108 2107 2091 2073 2062 2049 2037 2026 2015 2008 1998 1978 1958 1939 1925 1914 1906 1909 1916 1907 1900 1905 1900 1893 1882 1875 1868 1860 1852 1842 1828 1809 1794 1780 1768 1758 1749 1741 1734 1720 1710 1694 1671 1651 1634 1627 1621 1614 1605 1602 1591 1583 1567 1546 1523 1500 1477 1458 1447 1432 1417 1406 1407 1403 1398 1396 1393 1389 1386 1384 1380 1376 1373 1370 1368 1366 1364 1361 1359 1358 1356 1352 1348 1345 1344 1080 1080 1084 1093 1100 1110 1115 1123 1139 1158 1173 1183 1199 1213 1222 1228 1228 1212 1200 1193 1198 1203 1208 1218 1227 1236 1247 1261 1276 1286 1290 1302 1314 1325 1340 1359 1381 1398 1417 1441 1464 1489 1517 1545 1563 1573 1563 1548 1565 1589 1614 1630 1644 1662 1674 1683 1693 1690 1696 1715 1735 1752 1779 1802 1830 1853 1871 1886 1902 1916 1927 1942 1965 1985 2001 2007 2002 2014 2027 2041 2047 2056 2067 2074 2086 2082 2077 2080 2091 2100 2104 2114 2142 2175 2208 2231 2239 2233 2234 2263 2260 2222 2186 2169 2156 2149 2140 2132 2139 2146 2148 2137 2126 2110 2100 2096 2079 2081 2077 2052 2035 2021 2011 2000 1991 1983 1975 1962 1944 1920 1908 1898 1888 1887 1891 1885 1879 1883 1878 1869 1860 1851 1842 1836 1828 1821 1816 1808 1790 1772 1763 1753 1745 1737 1724 1710 1703 1691 1671 1652 1637 1628 1621 1607 1594 1592 1579 1571 1563 1551 1529 1504 1480 1461 1446 1430 1415 1404 1400 1397 1395 1392 1392 1390 1387 1382 1379 1377 1373 1371 1370 1369 1367 1364 1362 1361 1359 1355 1350 1347 1349 1094 1087 1086 1092 1098 1108 1116 1122 1135 1148 1158 1163 1176 1184 1191 1192 1193 1190 1187 1187 1197 1210 1222 1236 1249 1260 1274 1288 1301 1313 1322 1332 1340 1349 1363 1378 1400 1418 1440 1465 1489 1514 1537 1556 1563 1557 1543 1545 1571 1597 1614 1625 1640 1661 1665 1677 1686 1682 1685 1711 1738 1756 1774 1784 1808 1831 1852 1865 1878 1892 1904 1923 1947 1963 1977 1983 1982 1994 2007 2023 2028 2037 2049 2053 2062 2053 2050 2061 2076 2081 2088 2111 2138 2168 2194 2210 2232 2228 2215 2241 2245 2213 2178 2152 2137 2132 2120 2115 2122 2129 2133 2126 2111 2096 2080 2067 2061 2059 2058 2043 2021 2008 1996 1983 1974 1966 1966 1954 1931 1913 1902 1889 1882 1880 1875 1864 1860 1871 1863 1850 1844 1832 1823 1819 1809 1800 1801 1801 1786 1771 1761 1748 1743 1737 1720 1704 1693 1686 1674 1657 1641 1632 1622 1604 1586 1585 1571 1558 1547 1539 1526 1506 1484 1462 1444 1429 1417 1401 1394 1391 1390 1385 1384 1383 1382 1378 1375 1373 1370 1369 1369 1367 1364 1361 1359 1359 1357 1356 1354 1352 1352 1112 1104 1100 1101 1105 1110 1117 1122 1129 1137 1145 1148 1159 1159 1164 1162 1170 1180 1190 1201 1214 1231 1252 1266 1278 1291 1304 1319 1331 1341 1351 1361 1372 1384 1398 1415 1435 1453 1470 1493 1516 1533 1545 1554 1544 1527 1527 1549 1572 1591 1602 1619 1640 1649 1651 1663 1668 1668 1678 1700 1725 1734 1750 1762 1781 1802 1823 1837 1850 1862 1877 1899 1920 1934 1948 1955 1963 1971 1984 1997 2006 2017 2031 2038 2042 2034 2034 2044 2063 2060 2071 2100 2132 2162 2178 2189 2208 2212 2195 2225 2211 2186 2166 2141 2123 2111 2103 2094 2098 2105 2110 2104 2096 2079 2060 2045 2036 2031 2035 2025 2009 1992 1975 1961 1950 1941 1937 1937 1915 1900 1889 1877 1867 1862 1854 1843 1838 1846 1849 1836 1826 1814 1806 1800 1792 1784 1780 1783 1779 1765 1755 1745 1738 1733 1721 1708 1692 1684 1671 1658 1641 1631 1622 1606 1587 1582 1568 1550 1528 1512 1510 1503 1482 1459 1444 1432 1419 1404 1394 1394 1391 1385 1383 1381 1377 1376 1374 1372 1372 1371 1371 1368 1364 1359 1357 1355 1353 1354 1356 1360 1366 1129 1124 1121 1120 1120 1118 1114 1112 1119 1128 1134 1135 1143 1151 1166 1165 1176 1185 1196 1212 1227 1242 1265 1284 1299 1317 1331 1343 1357 1368 1377 1389 1398 1410 1425 1441 1460 1478 1492 1507 1521 1532 1539 1539 1522 1505 1525 1550 1566 1580 1592 1616 1632 1632 1641 1650 1653 1656 1671 1691 1707 1707 1726 1745 1759 1775 1794 1807 1821 1831 1846 1867 1885 1903 1914 1923 1935 1947 1960 1970 1982 1995 2006 2016 2019 2011 2018 2027 2039 2039 2057 2086 2118 2136 2147 2158 2169 2177 2170 2196 2192 2159 2150 2134 2105 2089 2088 2082 2077 2082 2093 2093 2080 2063 2040 2024 2015 2007 2010 2010 1997 1979 1959 1945 1928 1917 1918 1919 1905 1890 1872 1859 1850 1845 1836 1827 1822 1825 1839 1824 1806 1797 1789 1782 1778 1773 1762 1763 1767 1752 1746 1741 1729 1722 1718 1714 1699 1685 1660 1654 1640 1626 1617 1604 1587 1571 1553 1535 1517 1494 1490 1491 1475 1458 1441 1427 1416 1401 1385 1382 1385 1383 1379 1379 1375 1372 1371 1370 1369 1365 1364 1363 1361 1359 1359 1360 1360 1360 1358 1367 1376 1162 1152 1143 1140 1143 1140 1130 1125 1132 1143 1151 1154 1160 1165 1174 1182 1198 1214 1230 1246 1260 1275 1295 1314 1331 1349 1363 1376 1390 1402 1411 1422 1429 1438 1449 1462 1475 1489 1500 1507 1516 1525 1529 1518 1497 1490 1518 1540 1556 1570 1584 1608 1617 1621 1633 1637 1641 1648 1662 1679 1685 1690 1712 1729 1743 1758 1773 1785 1799 1812 1826 1842 1863 1885 1893 1899 1912 1926 1944 1951 1957 1967 1982 1994 1994 1987 1998 2005 2014 2020 2042 2071 2096 2113 2123 2125 2136 2143 2146 2156 2171 2139 2127 2117 2085 2062 2065 2066 2058 2056 2069 2068 2055 2042 2023 2006 1990 1978 1978 1986 1979 1962 1941 1929 1913 1902 1903 1896 1892 1878 1858 1841 1833 1831 1821 1814 1808 1813 1828 1813 1793 1783 1773 1766 1764 1761 1753 1749 1747 1740 1737 1730 1719 1712 1712 1706 1696 1685 1660 1648 1639 1626 1616 1602 1584 1568 1548 1530 1514 1480 1476 1482 1469 1456 1440 1424 1409 1398 1384 1377 1379 1379 1378 1376 1371 1372 1370 1370 1368 1362 1360 1358 1356 1356 1358 1360 1362 1364 1363 1370 1380 1194 1186 1182 1179 1181 1179 1167 1152 1151 1161 1169 1174 1179 1184 1193 1204 1217 1234 1248 1264 1279 1296 1316 1336 1357 1372 1388 1399 1408 1419 1428 1436 1442 1450 1457 1466 1474 1483 1492 1498 1510 1518 1518 1498 1473 1473 1498 1520 1543 1559 1574 1591 1603 1614 1619 1622 1627 1637 1652 1656 1655 1672 1691 1704 1719 1734 1747 1762 1774 1785 1798 1811 1830 1849 1864 1874 1886 1904 1925 1921 1931 1941 1952 1961 1964 1965 1977 1983 1989 2008 2028 2049 2069 2083 2092 2096 2104 2111 2115 2132 2147 2113 2097 2088 2061 2039 2041 2049 2040 2036 2045 2043 2032 2021 2006 1991 1970 1951 1949 1960 1958 1942 1922 1911 1904 1895 1881 1872 1872 1860 1847 1831 1810 1814 1806 1798 1787 1795 1811 1800 1784 1766 1753 1742 1742 1744 1740 1728 1729 1723 1722 1718 1709 1700 1700 1691 1684 1669 1650 1632 1623 1616 1605 1593 1581 1566 1550 1534 1513 1481 1469 1462 1449 1440 1427 1415 1404 1398 1389 1383 1379 1378 1377 1374 1368 1369 1368 1367 1363 1360 1358 1355 1352 1351 1352 1353 1356 1361 1363 1366 1374 1221 1218 1216 1215 1213 1207 1191 1180 1183 1186 1192 1198 1204 1214 1227 1240 1251 1265 1277 1289 1302 1316 1335 1354 1374 1387 1400 1407 1413 1421 1426 1433 1440 1446 1453 1460 1467 1475 1482 1490 1505 1508 1506 1481 1457 1457 1482 1501 1525 1544 1560 1578 1587 1602 1607 1613 1616 1623 1640 1639 1648 1665 1681 1692 1703 1717 1733 1747 1757 1771 1781 1796 1813 1822 1836 1857 1876 1893 1903 1899 1904 1914 1925 1934 1945 1952 1955 1961 1969 1993 2015 2032 2047 2056 2061 2067 2076 2081 2080 2109 2107 2084 2065 2054 2035 2021 2021 2025 2020 2017 2022 2025 2012 1998 1983 1972 1955 1931 1928 1937 1940 1927 1910 1901 1896 1888 1870 1864 1856 1844 1836 1821 1795 1798 1789 1785 1775 1777 1795 1793 1770 1749 1734 1725 1730 1735 1727 1714 1715 1718 1715 1705 1694 1686 1682 1673 1667 1658 1639 1623 1621 1618 1608 1594 1581 1568 1556 1539 1515 1491 1472 1455 1445 1436 1423 1412 1404 1399 1394 1389 1383 1378 1376 1372 1369 1365 1362 1359 1357 1357 1355 1351 1350 1348 1347 1347 1351 1355 1355 1354 1362 1229 1232 1233 1233 1230 1225 1212 1205 1208 1210 1217 1222 1232 1245 1260 1278 1290 1303 1317 1325 1334 1342 1355 1369 1381 1390 1398 1405 1411 1417 1421 1428 1436 1442 1450 1459 1465 1472 1478 1487 1496 1495 1483 1464 1440 1441 1459 1479 1501 1525 1547 1566 1577 1588 1592 1595 1607 1621 1618 1619 1635 1646 1658 1672 1681 1695 1709 1722 1734 1749 1761 1773 1783 1798 1817 1839 1862 1878 1882 1878 1879 1887 1896 1905 1924 1932 1931 1939 1952 1974 1998 2014 2028 2033 2037 2043 2053 2054 2050 2069 2057 2050 2034 2024 2010 2003 2001 1997 1998 1993 1993 2001 1986 1968 1952 1940 1922 1903 1898 1905 1916 1904 1892 1885 1878 1876 1868 1855 1840 1823 1811 1808 1793 1775 1762 1763 1757 1757 1772 1778 1758 1737 1725 1714 1707 1714 1711 1702 1698 1705 1700 1686 1673 1667 1664 1654 1648 1643 1633 1618 1616 1610 1604 1592 1574 1562 1552 1537 1517 1500 1482 1465 1454 1442 1426 1412 1402 1399 1396 1389 1383 1378 1375 1372 1368 1364 1359 1358 1356 1354 1352 1348 1348 1347 1347 1347 1348 1351 1353 1356 1362 1225 1229 1233 1235 1236 1237 1232 1223 1220 1227 1238 1247 1258 1270 1284 1300 1313 1326 1337 1342 1348 1358 1364 1371 1377 1384 1391 1397 1403 1410 1415 1423 1429 1435 1444 1452 1459 1465 1469 1474 1481 1480 1465 1451 1435 1425 1441 1460 1486 1512 1540 1561 1572 1580 1582 1583 1599 1604 1600 1611 1626 1636 1646 1659 1666 1677 1688 1699 1711 1725 1737 1743 1754 1784 1807 1822 1840 1854 1857 1855 1860 1865 1869 1878 1900 1909 1913 1921 1935 1954 1973 1991 2003 2007 2012 2022 2028 2023 2026 2026 2014 2009 2012 2003 1988 1984 1989 1980 1977 1971 1974 1991 1978 1951 1930 1913 1899 1878 1876 1885 1896 1889 1880 1871 1869 1869 1868 1861 1850 1833 1814 1801 1776 1753 1748 1749 1743 1742 1756 1766 1749 1729 1719 1705 1693 1699 1697 1687 1681 1688 1684 1671 1657 1650 1648 1640 1629 1627 1630 1618 1608 1593 1587 1585 1568 1552 1537 1523 1511 1499 1485 1470 1454 1435 1416 1402 1394 1392 1390 1383 1378 1373 1370 1367 1363 1360 1358 1356 1352 1347 1344 1346 1349 1349 1344 1343 1342 1340 1345 1351 1354 1225 1226 1229 1232 1238 1240 1237 1232 1235 1242 1256 1274 1288 1299 1311 1321 1332 1338 1339 1338 1346 1352 1357 1364 1370 1377 1384 1391 1398 1405 1410 1417 1423 1429 1438 1447 1454 1460 1465 1469 1477 1468 1445 1424 1419 1427 1446 1469 1497 1520 1541 1557 1563 1568 1573 1574 1579 1582 1587 1601 1614 1628 1640 1651 1657 1665 1674 1680 1687 1703 1714 1722 1742 1777 1799 1811 1821 1827 1830 1835 1841 1849 1852 1864 1884 1897 1901 1907 1917 1930 1947 1968 1973 1979 1987 1994 1996 1994 1992 1989 1984 1978 1978 1979 1973 1964 1971 1962 1952 1941 1948 1967 1952 1933 1914 1892 1873 1854 1848 1858 1871 1869 1863 1858 1856 1856 1863 1866 1858 1841 1824 1804 1773 1745 1736 1733 1732 1727 1735 1749 1742 1722 1711 1695 1685 1686 1681 1672 1670 1672 1668 1660 1646 1639 1632 1627 1611 1610 1621 1621 1611 1593 1583 1584 1575 1558 1533 1513 1497 1484 1473 1464 1450 1427 1408 1402 1397 1393 1391 1386 1381 1377 1373 1370 1367 1366 1365 1361 1355 1347 1343 1345 1348 1348 1338 1340 1344 1346 1352 1353 1348 1220 1223 1227 1229 1231 1233 1235 1236 1238 1244 1264 1286 1300 1307 1316 1324 1331 1334 1333 1333 1339 1345 1350 1357 1364 1369 1376 1383 1391 1398 1403 1411 1419 1426 1433 1441 1447 1451 1456 1464 1467 1450 1425 1398 1400 1430 1461 1490 1514 1531 1543 1551 1553 1554 1563 1563 1555 1567 1578 1589 1598 1612 1627 1639 1645 1651 1658 1659 1661 1685 1704 1722 1744 1764 1784 1796 1805 1807 1805 1809 1813 1821 1828 1841 1858 1871 1880 1890 1900 1914 1928 1943 1946 1955 1967 1973 1973 1971 1965 1960 1956 1950 1952 1957 1950 1950 1954 1948 1931 1921 1933 1941 1928 1915 1897 1874 1848 1830 1824 1832 1843 1845 1843 1840 1842 1848 1860 1864 1853 1834 1825 1811 1786 1748 1720 1716 1720 1711 1712 1727 1735 1718 1703 1686 1670 1662 1659 1658 1657 1652 1645 1640 1633 1620 1606 1605 1597 1587 1596 1606 1607 1592 1577 1568 1560 1550 1532 1515 1500 1485 1470 1456 1440 1420 1405 1404 1399 1393 1388 1383 1378 1375 1372 1368 1364 1362 1361 1358 1353 1347 1344 1341 1343 1340 1333 1338 1346 1351 1355 1351 1337 1222 1224 1231 1235 1229 1224 1229 1234 1239 1245 1262 1282 1296 1306 1318 1324 1321 1327 1332 1336 1340 1345 1349 1356 1362 1367 1373 1379 1386 1393 1399 1407 1416 1422 1426 1433 1437 1440 1444 1454 1453 1434 1405 1387 1399 1432 1475 1502 1517 1529 1536 1544 1546 1546 1551 1549 1547 1557 1572 1583 1592 1600 1613 1624 1629 1634 1639 1640 1658 1689 1706 1721 1739 1754 1765 1774 1781 1786 1787 1788 1792 1798 1808 1824 1838 1851 1861 1872 1881 1893 1905 1915 1922 1931 1940 1944 1945 1945 1941 1937 1933 1926 1926 1928 1924 1926 1924 1919 1908 1899 1910 1912 1902 1890 1875 1854 1827 1808 1800 1803 1810 1818 1821 1817 1833 1847 1858 1858 1842 1823 1816 1806 1787 1750 1714 1705 1704 1701 1699 1711 1725 1713 1694 1683 1667 1652 1646 1643 1640 1636 1635 1634 1623 1601 1594 1594 1585 1576 1584 1593 1597 1596 1587 1570 1554 1539 1521 1504 1491 1479 1463 1448 1442 1436 1424 1416 1408 1399 1390 1381 1376 1373 1369 1365 1361 1358 1357 1354 1352 1349 1346 1342 1339 1335 1337 1340 1344 1346 1347 1339 1328 1226 1226 1227 1228 1223 1218 1224 1232 1239 1244 1254 1267 1278 1292 1306 1310 1309 1318 1327 1334 1338 1343 1347 1354 1359 1365 1370 1375 1381 1389 1396 1403 1410 1414 1418 1423 1429 1433 1437 1445 1444 1429 1390 1384 1411 1442 1482 1504 1513 1520 1524 1532 1533 1529 1534 1538 1543 1553 1564 1572 1580 1587 1593 1604 1610 1607 1624 1638 1658 1679 1694 1709 1723 1736 1747 1755 1755 1760 1766 1770 1773 1782 1795 1810 1824 1836 1846 1855 1863 1874 1884 1893 1901 1908 1914 1919 1921 1920 1919 1916 1913 1906 1903 1904 1902 1896 1890 1886 1880 1874 1878 1884 1875 1866 1852 1834 1811 1786 1769 1767 1775 1788 1796 1797 1817 1835 1843 1843 1829 1810 1795 1784 1771 1751 1719 1695 1688 1692 1684 1682 1706 1699 1681 1670 1659 1649 1641 1629 1619 1618 1617 1611 1601 1593 1588 1583 1574 1565 1560 1560 1570 1582 1589 1578 1560 1545 1526 1507 1492 1480 1467 1454 1458 1455 1445 1434 1424 1414 1402 1391 1385 1379 1374 1369 1365 1361 1357 1354 1351 1349 1348 1345 1339 1337 1340 1344 1342 1340 1341 1329 1332 1228 1225 1213 1208 1215 1218 1225 1234 1242 1247 1254 1261 1268 1282 1293 1298 1302 1313 1321 1328 1332 1336 1340 1345 1349 1354 1361 1365 1374 1384 1392 1398 1402 1405 1409 1415 1421 1427 1434 1439 1431 1414 1391 1379 1399 1425 1468 1498 1507 1508 1510 1510 1510 1515 1521 1524 1530 1537 1549 1558 1566 1574 1583 1595 1601 1596 1622 1643 1655 1669 1681 1696 1706 1716 1727 1735 1734 1739 1746 1751 1758 1768 1783 1799 1813 1820 1829 1836 1843 1853 1861 1871 1880 1887 1892 1898 1899 1897 1895 1895 1891 1883 1885 1888 1883 1873 1867 1862 1852 1850 1854 1859 1859 1851 1837 1821 1797 1773 1746 1745 1753 1764 1775 1791 1807 1820 1832 1830 1816 1791 1780 1780 1772 1756 1725 1690 1679 1684 1669 1672 1692 1688 1673 1663 1656 1651 1641 1626 1608 1603 1601 1594 1585 1579 1578 1576 1565 1556 1542 1538 1552 1567 1581 1578 1566 1553 1537 1519 1501 1483 1474 1474 1482 1476 1465 1456 1446 1434 1423 1415 1408 1400 1390 1381 1372 1363 1355 1350 1346 1343 1343 1341 1339 1332 1324 1334 1341 1339 1337 1332 1329 1221 1218 1204 1198 1212 1220 1227 1235 1244 1251 1259 1267 1274 1281 1292 1301 1307 1315 1321 1327 1331 1334 1336 1337 1340 1347 1358 1364 1374 1383 1390 1395 1399 1402 1407 1412 1414 1420 1427 1428 1411 1387 1364 1374 1393 1419 1452 1475 1484 1485 1488 1492 1497 1505 1511 1517 1526 1531 1539 1547 1555 1564 1571 1574 1589 1594 1618 1636 1644 1657 1672 1685 1694 1703 1711 1713 1716 1722 1727 1735 1747 1758 1773 1789 1800 1804 1807 1811 1819 1827 1833 1844 1855 1863 1870 1873 1872 1868 1869 1871 1869 1861 1858 1858 1851 1845 1836 1831 1823 1815 1813 1823 1826 1821 1813 1804 1785 1764 1740 1717 1717 1733 1745 1765 1788 1805 1816 1814 1800 1782 1771 1769 1764 1753 1724 1688 1669 1665 1665 1662 1673 1676 1664 1655 1648 1643 1634 1621 1604 1593 1583 1581 1577 1566 1567 1567 1560 1550 1537 1535 1542 1554 1567 1567 1560 1546 1532 1516 1496 1476 1471 1487 1503 1506 1495 1481 1472 1459 1448 1443 1438 1428 1412 1396 1383 1370 1359 1352 1349 1348 1346 1346 1342 1334 1329 1338 1336 1334 1330 1327 1330 1204 1209 1205 1206 1217 1222 1225 1231 1239 1249 1257 1264 1270 1276 1285 1294 1302 1308 1314 1321 1325 1325 1326 1330 1333 1339 1354 1362 1369 1376 1381 1386 1393 1399 1402 1406 1409 1414 1415 1407 1390 1365 1349 1368 1388 1417 1444 1458 1465 1470 1472 1477 1490 1498 1504 1510 1518 1525 1530 1534 1543 1553 1552 1552 1580 1597 1612 1624 1631 1645 1666 1678 1689 1696 1698 1694 1696 1707 1713 1722 1737 1752 1764 1775 1787 1786 1783 1786 1794 1806 1817 1829 1837 1842 1846 1849 1851 1851 1851 1851 1848 1841 1842 1839 1828 1821 1816 1809 1796 1791 1791 1801 1805 1800 1795 1787 1771 1753 1724 1694 1694 1707 1723 1742 1763 1781 1794 1794 1787 1776 1768 1762 1756 1742 1717 1685 1656 1650 1662 1649 1655 1663 1651 1644 1635 1630 1625 1614 1600 1585 1566 1567 1570 1564 1559 1552 1551 1542 1531 1524 1518 1527 1548 1552 1546 1534 1519 1503 1482 1466 1461 1472 1500 1521 1515 1502 1492 1480 1471 1464 1457 1447 1430 1413 1400 1387 1374 1362 1356 1350 1347 1345 1340 1334 1331 1329 1324 1326 1326 1320 1326 1189 1197 1202 1210 1218 1224 1229 1235 1242 1250 1258 1266 1274 1280 1286 1293 1298 1302 1309 1316 1316 1314 1314 1322 1329 1338 1350 1359 1365 1371 1375 1382 1389 1393 1397 1401 1404 1401 1392 1379 1361 1351 1351 1370 1392 1419 1439 1451 1453 1457 1463 1470 1483 1491 1498 1501 1506 1512 1517 1521 1529 1534 1535 1550 1583 1599 1608 1618 1624 1638 1659 1671 1685 1691 1687 1680 1684 1696 1706 1706 1719 1740 1753 1763 1771 1766 1765 1770 1776 1782 1794 1808 1815 1819 1821 1823 1824 1825 1825 1825 1828 1824 1822 1816 1808 1801 1792 1782 1770 1766 1765 1778 1781 1776 1773 1767 1757 1741 1710 1683 1674 1678 1703 1721 1737 1753 1769 1773 1771 1763 1756 1750 1739 1720 1701 1678 1648 1639 1644 1637 1642 1647 1637 1630 1624 1624 1621 1612 1597 1581 1566 1565 1562 1559 1547 1541 1540 1528 1518 1503 1507 1520 1532 1534 1529 1518 1502 1486 1462 1448 1455 1471 1499 1524 1533 1529 1516 1502 1490 1478 1466 1453 1438 1420 1405 1391 1378 1364 1355 1348 1344 1340 1338 1335 1329 1321 1319 1322 1325 1320 1323 1189 1195 1202 1210 1215 1222 1228 1233 1240 1247 1254 1261 1268 1275 1281 1286 1291 1297 1302 1306 1306 1304 1306 1318 1330 1337 1344 1352 1359 1367 1373 1379 1382 1386 1389 1392 1387 1376 1363 1353 1338 1339 1356 1377 1401 1424 1437 1445 1437 1441 1457 1470 1479 1483 1489 1494 1498 1502 1508 1514 1513 1512 1533 1560 1580 1589 1598 1601 1614 1633 1646 1658 1675 1679 1669 1671 1677 1674 1690 1703 1714 1726 1733 1739 1746 1748 1746 1751 1761 1769 1780 1789 1795 1800 1801 1797 1800 1805 1807 1806 1806 1803 1800 1794 1789 1781 1768 1764 1752 1744 1745 1754 1757 1757 1755 1752 1746 1730 1703 1678 1652 1654 1680 1698 1714 1729 1745 1750 1749 1742 1732 1721 1705 1692 1679 1665 1645 1617 1616 1622 1622 1627 1623 1610 1608 1603 1602 1603 1589 1580 1567 1558 1551 1551 1541 1532 1526 1515 1509 1494 1490 1497 1508 1511 1505 1498 1485 1465 1444 1431 1437 1462 1488 1513 1530 1530 1516 1501 1486 1470 1457 1445 1432 1419 1408 1396 1382 1370 1360 1353 1346 1341 1337 1335 1328 1321 1322 1323 1322 1322 1321 1193 1200 1206 1211 1216 1222 1229 1235 1243 1251 1255 1262 1269 1274 1281 1284 1285 1292 1298 1296 1294 1299 1306 1318 1329 1334 1339 1348 1355 1363 1368 1374 1376 1378 1379 1375 1360 1349 1338 1335 1332 1334 1354 1378 1404 1425 1435 1430 1421 1434 1455 1465 1470 1475 1480 1481 1484 1490 1498 1500 1494 1515 1540 1559 1572 1581 1588 1592 1602 1625 1641 1650 1658 1655 1651 1663 1663 1653 1677 1697 1703 1710 1716 1721 1727 1730 1729 1733 1743 1756 1768 1775 1777 1780 1781 1779 1782 1787 1791 1791 1787 1783 1780 1774 1769 1761 1749 1748 1737 1728 1729 1730 1736 1743 1745 1743 1735 1717 1695 1668 1637 1644 1659 1678 1694 1708 1721 1725 1724 1722 1713 1697 1683 1675 1665 1653 1633 1601 1606 1605 1609 1614 1609 1598 1591 1588 1594 1595 1585 1577 1566 1551 1543 1544 1539 1526 1516 1510 1502 1489 1482 1479 1483 1483 1479 1476 1467 1447 1423 1413 1428 1453 1477 1499 1514 1516 1502 1489 1472 1453 1443 1437 1425 1415 1411 1404 1392 1383 1374 1365 1356 1347 1340 1335 1329 1323 1322 1321 1317 1311 1309 1192 1199 1205 1210 1216 1221 1227 1233 1241 1248 1254 1260 1266 1274 1282 1284 1279 1285 1293 1286 1282 1296 1308 1318 1326 1332 1339 1346 1353 1359 1362 1366 1371 1374 1376 1360 1341 1331 1319 1324 1335 1352 1375 1394 1411 1419 1417 1412 1420 1438 1455 1461 1463 1466 1469 1471 1473 1479 1476 1474 1493 1511 1530 1546 1558 1566 1567 1575 1593 1614 1630 1637 1632 1628 1633 1648 1644 1643 1663 1678 1683 1690 1697 1703 1709 1712 1711 1715 1726 1739 1752 1759 1760 1761 1764 1765 1766 1767 1772 1773 1774 1770 1765 1755 1748 1747 1735 1719 1718 1708 1699 1703 1715 1725 1732 1728 1715 1696 1678 1657 1630 1615 1634 1654 1670 1682 1692 1694 1691 1685 1678 1670 1660 1653 1644 1635 1620 1594 1589 1593 1590 1600 1596 1587 1581 1575 1576 1583 1580 1572 1564 1551 1540 1533 1531 1521 1508 1501 1490 1480 1471 1465 1457 1451 1451 1452 1448 1431 1404 1393 1418 1443 1467 1484 1498 1502 1489 1478 1462 1443 1434 1431 1420 1409 1405 1398 1390 1380 1372 1368 1361 1352 1346 1339 1327 1317 1317 1319 1314 1304 1308 1191 1197 1203 1209 1214 1219 1224 1228 1233 1241 1247 1251 1260 1265 1271 1272 1272 1275 1280 1275 1276 1290 1302 1311 1321 1331 1337 1341 1346 1350 1354 1358 1365 1368 1366 1344 1323 1312 1308 1324 1344 1365 1388 1401 1408 1411 1406 1395 1412 1434 1446 1453 1457 1458 1457 1463 1466 1463 1466 1476 1493 1503 1518 1536 1544 1549 1548 1557 1584 1602 1613 1614 1604 1605 1616 1630 1629 1642 1651 1657 1663 1670 1678 1684 1691 1695 1693 1699 1713 1723 1732 1737 1741 1748 1750 1747 1747 1752 1755 1756 1756 1755 1752 1734 1728 1737 1717 1698 1699 1684 1684 1691 1695 1708 1723 1723 1703 1685 1671 1649 1622 1596 1614 1633 1649 1660 1668 1669 1663 1657 1653 1650 1640 1629 1621 1619 1608 1584 1577 1582 1576 1589 1584 1574 1569 1564 1565 1572 1572 1567 1560 1551 1536 1524 1522 1516 1503 1490 1479 1472 1457 1453 1440 1427 1422 1427 1426 1415 1393 1378 1396 1428 1450 1470 1488 1490 1479 1465 1452 1443 1429 1419 1414 1405 1396 1392 1389 1377 1364 1363 1360 1351 1345 1339 1332 1324 1314 1312 1304 1298 1299 1192 1196 1203 1209 1214 1218 1222 1226 1231 1239 1243 1251 1257 1261 1259 1253 1263 1263 1261 1276 1289 1300 1307 1313 1319 1324 1330 1335 1339 1343 1346 1351 1356 1360 1351 1318 1299 1301 1310 1327 1353 1376 1392 1394 1389 1390 1399 1404 1418 1432 1438 1444 1450 1447 1449 1456 1454 1452 1467 1480 1481 1488 1499 1518 1527 1527 1530 1543 1571 1588 1589 1585 1581 1588 1601 1615 1622 1636 1641 1646 1653 1658 1663 1671 1678 1681 1682 1684 1699 1707 1715 1721 1725 1729 1731 1730 1726 1729 1731 1732 1733 1731 1727 1717 1712 1708 1707 1686 1671 1671 1656 1662 1671 1684 1704 1704 1690 1677 1659 1637 1611 1591 1591 1608 1622 1633 1642 1643 1641 1638 1635 1629 1619 1609 1603 1601 1593 1577 1567 1569 1562 1574 1572 1562 1555 1552 1559 1562 1562 1561 1557 1546 1531 1520 1516 1507 1498 1487 1476 1469 1459 1450 1440 1426 1407 1406 1407 1399 1376 1379 1399 1427 1450 1469 1485 1483 1473 1456 1443 1438 1425 1409 1404 1400 1392 1388 1385 1375 1361 1355 1350 1342 1337 1332 1328 1318 1303 1303 1300 1289 1299 1191 1196 1201 1207 1211 1216 1220 1224 1229 1236 1242 1247 1251 1262 1258 1249 1254 1244 1251 1270 1285 1294 1300 1307 1313 1319 1327 1332 1334 1338 1341 1346 1350 1353 1339 1305 1289 1293 1307 1323 1353 1376 1383 1378 1365 1365 1390 1410 1419 1428 1433 1438 1443 1439 1444 1447 1438 1454 1468 1468 1462 1470 1476 1493 1507 1503 1508 1531 1550 1565 1558 1555 1564 1578 1588 1599 1610 1618 1624 1631 1639 1646 1652 1658 1664 1662 1666 1675 1688 1696 1701 1705 1708 1714 1718 1718 1717 1717 1717 1717 1718 1717 1715 1710 1696 1693 1696 1678 1653 1657 1638 1646 1656 1667 1684 1688 1682 1669 1650 1628 1605 1586 1572 1589 1601 1610 1617 1620 1620 1620 1618 1610 1601 1596 1589 1582 1579 1572 1555 1555 1546 1557 1561 1552 1545 1536 1539 1548 1548 1548 1550 1539 1529 1521 1511 1493 1487 1479 1468 1467 1458 1450 1436 1419 1402 1392 1385 1373 1366 1367 1386 1410 1438 1457 1477 1475 1461 1449 1439 1427 1416 1406 1394 1386 1384 1379 1375 1368 1357 1347 1337 1330 1323 1316 1311 1302 1288 1286 1289 1271 1286 1191 1196 1201 1205 1210 1214 1218 1222 1227 1235 1243 1250 1254 1251 1238 1234 1246 1250 1263 1275 1285 1293 1299 1305 1311 1318 1324 1328 1327 1329 1334 1340 1343 1343 1327 1300 1289 1288 1299 1319 1347 1360 1358 1363 1358 1359 1385 1400 1408 1417 1425 1433 1436 1437 1435 1434 1430 1455 1459 1457 1455 1464 1467 1485 1500 1500 1493 1512 1527 1539 1534 1538 1551 1563 1565 1584 1600 1605 1610 1617 1622 1630 1638 1646 1651 1651 1655 1668 1678 1683 1687 1691 1696 1699 1702 1701 1700 1700 1699 1700 1699 1699 1698 1694 1680 1678 1679 1667 1648 1639 1627 1631 1640 1646 1657 1670 1668 1655 1636 1618 1600 1580 1566 1574 1586 1594 1597 1600 1600 1597 1596 1594 1588 1582 1574 1570 1568 1550 1543 1537 1532 1550 1553 1547 1534 1523 1530 1543 1542 1538 1535 1524 1515 1511 1502 1482 1476 1466 1455 1459 1454 1442 1423 1407 1390 1385 1378 1365 1357 1364 1383 1406 1426 1440 1456 1459 1449 1439 1432 1416 1407 1401 1386 1375 1373 1369 1362 1354 1344 1335 1323 1313 1308 1302 1295 1285 1275 1269 1265 1248 1261 1192 1196 1200 1204 1208 1212 1216 1220 1225 1231 1238 1243 1245 1241 1227 1221 1239 1256 1270 1278 1283 1291 1296 1301 1308 1313 1319 1321 1318 1319 1325 1333 1335 1331 1316 1292 1282 1283 1298 1321 1341 1342 1330 1347 1367 1382 1394 1401 1409 1413 1415 1418 1425 1427 1419 1429 1440 1444 1442 1449 1452 1458 1468 1486 1494 1485 1480 1493 1501 1505 1504 1524 1538 1547 1558 1570 1581 1589 1594 1601 1609 1617 1626 1634 1637 1637 1643 1654 1663 1666 1671 1676 1682 1685 1685 1684 1682 1680 1681 1682 1683 1681 1678 1675 1670 1661 1660 1653 1643 1624 1613 1607 1619 1616 1626 1644 1647 1633 1613 1598 1588 1576 1563 1548 1558 1570 1572 1573 1573 1573 1572 1570 1567 1562 1558 1554 1550 1542 1536 1534 1518 1532 1546 1537 1527 1519 1513 1523 1529 1526 1522 1515 1505 1494 1487 1482 1466 1444 1438 1443 1432 1427 1415 1400 1385 1382 1377 1370 1363 1364 1365 1377 1392 1407 1426 1444 1440 1428 1422 1412 1405 1395 1383 1371 1365 1358 1350 1341 1329 1319 1308 1293 1289 1291 1283 1270 1260 1262 1243 1230 1243 1194 1197 1200 1202 1206 1210 1212 1216 1219 1226 1233 1233 1227 1221 1223 1222 1240 1256 1266 1273 1278 1284 1289 1296 1301 1305 1306 1308 1309 1312 1318 1327 1331 1322 1305 1286 1274 1270 1296 1319 1329 1325 1314 1326 1358 1378 1386 1394 1401 1404 1408 1411 1415 1414 1407 1425 1439 1435 1431 1441 1447 1447 1463 1480 1483 1472 1467 1472 1468 1468 1478 1505 1525 1539 1553 1560 1567 1572 1578 1587 1593 1601 1612 1620 1625 1626 1627 1638 1645 1651 1656 1660 1665 1669 1670 1670 1664 1659 1663 1668 1670 1668 1665 1664 1660 1648 1642 1636 1629 1618 1607 1604 1609 1601 1615 1632 1638 1623 1597 1584 1573 1561 1561 1542 1541 1556 1558 1559 1558 1555 1553 1552 1550 1548 1546 1544 1542 1532 1526 1530 1510 1522 1538 1532 1523 1508 1499 1507 1504 1508 1513 1507 1496 1483 1476 1481 1466 1437 1424 1427 1412 1414 1413 1400 1389 1381 1375 1374 1372 1359 1350 1353 1364 1374 1399 1428 1430 1424 1414 1405 1403 1390 1377 1369 1357 1342 1334 1328 1314 1298 1287 1279 1268 1258 1251 1243 1235 1227 1214 1195 1190 1191 1196 1199 1197 1200 1207 1214 1220 1223 1228 1231 1226 1208 1193 1211 1231 1247 1260 1268 1273 1278 1284 1291 1298 1300 1300 1297 1291 1296 1303 1313 1322 1320 1300 1280 1262 1261 1274 1295 1313 1314 1323 1331 1350 1370 1381 1388 1393 1394 1393 1399 1405 1399 1401 1409 1424 1425 1426 1429 1433 1440 1445 1462 1470 1464 1458 1452 1449 1450 1460 1475 1493 1513 1528 1539 1546 1553 1559 1566 1572 1577 1584 1596 1607 1616 1617 1615 1625 1632 1639 1645 1647 1650 1652 1653 1652 1642 1638 1642 1644 1647 1648 1648 1644 1637 1631 1622 1617 1613 1607 1601 1591 1597 1589 1598 1613 1610 1607 1592 1576 1565 1552 1548 1547 1537 1534 1528 1535 1537 1535 1533 1533 1532 1531 1531 1532 1532 1520 1517 1524 1504 1507 1526 1530 1520 1502 1492 1488 1471 1481 1497 1495 1483 1472 1465 1471 1463 1440 1419 1415 1404 1406 1407 1396 1390 1379 1371 1371 1367 1362 1350 1350 1357 1361 1372 1388 1404 1413 1410 1395 1391 1383 1369 1359 1347 1326 1316 1312 1301 1276 1263 1260 1246 1248 1236 1221 1214 1209 1190 1167 1175 1179 1188 1190 1179 1182 1191 1206 1218 1225 1225 1217 1208 1196 1195 1216 1228 1236 1246 1257 1265 1269 1273 1279 1282 1284 1285 1288 1289 1286 1294 1307 1311 1304 1286 1271 1256 1248 1266 1287 1278 1278 1302 1326 1359 1379 1382 1385 1384 1380 1379 1394 1398 1386 1396 1410 1415 1407 1415 1424 1427 1431 1445 1461 1460 1450 1445 1436 1432 1452 1474 1484 1493 1503 1511 1519 1525 1534 1544 1553 1560 1566 1572 1582 1593 1601 1604 1609 1616 1620 1625 1629 1631 1636 1638 1638 1634 1629 1630 1633 1635 1636 1636 1635 1632 1627 1621 1616 1613 1606 1603 1596 1578 1574 1575 1594 1601 1596 1595 1583 1570 1557 1540 1545 1544 1537 1523 1503 1513 1520 1520 1517 1518 1519 1517 1516 1521 1518 1508 1514 1515 1497 1498 1516 1524 1516 1506 1493 1470 1445 1453 1473 1480 1470 1456 1450 1457 1448 1433 1419 1407 1398 1400 1393 1382 1382 1376 1366 1357 1357 1358 1350 1345 1345 1348 1341 1348 1374 1397 1406 1393 1383 1373 1360 1344 1329 1313 1299 1284 1265 1253 1239 1228 1216 1222 1206 1190 1185 1182 1166 1140 1149 1178 1182 1179 1182 1194 1202 1209 1216 1220 1214 1187 1164 1183 1202 1220 1233 1242 1249 1255 1262 1264 1269 1279 1279 1275 1271 1276 1286 1290 1300 1307 1298 1282 1262 1255 1253 1251 1261 1277 1272 1277 1301 1326 1357 1377 1379 1381 1374 1370 1375 1391 1389 1381 1396 1406 1398 1396 1408 1414 1418 1423 1439 1454 1452 1444 1433 1425 1428 1457 1474 1477 1492 1502 1503 1503 1511 1521 1529 1538 1546 1556 1566 1575 1583 1587 1589 1593 1601 1606 1612 1619 1623 1626 1626 1624 1621 1617 1613 1611 1621 1624 1620 1619 1617 1615 1609 1602 1597 1591 1590 1583 1570 1550 1563 1590 1592 1584 1584 1573 1559 1548 1534 1537 1534 1528 1518 1499 1501 1500 1504 1504 1505 1506 1507 1506 1513 1500 1495 1513 1502 1486 1499 1509 1513 1510 1505 1500 1469 1434 1440 1452 1463 1469 1456 1448 1451 1444 1429 1413 1399 1397 1395 1380 1377 1379 1372 1362 1357 1356 1353 1347 1342 1346 1346 1329 1322 1346 1374 1399 1400 1381 1369 1351 1330 1312 1300 1285 1255 1226 1229 1222 1202 1199 1190 1168 1162 1161 1145 1122 1110 1117 1166 1160 1158 1169 1183 1194 1201 1204 1206 1199 1177 1158 1178 1202 1215 1229 1238 1244 1248 1256 1264 1271 1278 1277 1266 1257 1267 1278 1291 1300 1296 1279 1261 1242 1237 1239 1243 1249 1262 1280 1299 1320 1340 1358 1365 1370 1375 1370 1370 1379 1382 1374 1379 1391 1396 1383 1395 1403 1406 1408 1419 1433 1446 1447 1434 1419 1414 1427 1448 1456 1464 1479 1485 1490 1498 1509 1516 1520 1525 1535 1547 1554 1563 1570 1575 1578 1581 1587 1593 1597 1603 1606 1607 1607 1607 1608 1602 1595 1597 1605 1608 1605 1604 1604 1602 1600 1593 1586 1580 1575 1566 1563 1535 1552 1582 1583 1571 1571 1561 1545 1540 1529 1520 1524 1514 1512 1507 1488 1475 1486 1491 1493 1489 1493 1497 1499 1481 1483 1503 1492 1474 1486 1499 1505 1504 1495 1492 1469 1431 1421 1424 1441 1469 1457 1444 1436 1432 1420 1402 1396 1393 1384 1380 1379 1375 1364 1358 1357 1354 1351 1347 1339 1338 1341 1331 1320 1320 1342 1378 1393 1372 1356 1336 1316 1295 1279 1257 1225 1192 1182 1187 1186 1183 1165 1146 1142 1138 1116 1083 1085 1096 1165 1153 1150 1162 1177 1187 1188 1187 1191 1188 1164 1160 1186 1208 1221 1227 1234 1242 1244 1251 1261 1269 1266 1264 1257 1253 1264 1272 1281 1277 1272 1255 1243 1236 1232 1233 1234 1242 1257 1276 1300 1323 1343 1351 1352 1354 1358 1359 1363 1369 1370 1364 1374 1384 1377 1371 1386 1390 1397 1399 1408 1428 1439 1438 1424 1410 1407 1415 1419 1435 1456 1466 1474 1484 1490 1499 1507 1511 1516 1522 1531 1537 1544 1551 1556 1562 1565 1572 1579 1584 1588 1591 1592 1592 1593 1595 1587 1582 1586 1587 1590 1590 1591 1593 1591 1588 1585 1581 1575 1567 1553 1553 1528 1532 1569 1574 1562 1554 1543 1531 1526 1517 1512 1514 1509 1512 1500 1473 1474 1485 1486 1485 1478 1476 1483 1485 1469 1479 1492 1477 1466 1484 1485 1494 1495 1489 1484 1456 1416 1399 1407 1431 1460 1461 1451 1436 1424 1405 1394 1388 1386 1378 1380 1378 1371 1361 1357 1357 1354 1352 1348 1339 1334 1336 1334 1317 1301 1316 1351 1371 1359 1338 1317 1301 1276 1251 1216 1186 1154 1122 1143 1172 1160 1147 1141 1119 1108 1105 1082 1070 1073 1163 1158 1150 1159 1168 1169 1171 1174 1179 1174 1150 1154 1187 1212 1225 1229 1232 1235 1241 1247 1253 1255 1243 1245 1252 1257 1262 1271 1261 1249 1246 1231 1225 1232 1237 1240 1244 1253 1268 1286 1315 1335 1347 1351 1349 1346 1350 1355 1358 1358 1353 1354 1369 1372 1366 1379 1374 1379 1384 1390 1403 1420 1427 1425 1417 1397 1397 1408 1414 1433 1447 1454 1463 1472 1478 1487 1493 1497 1503 1510 1515 1521 1527 1533 1538 1545 1550 1557 1564 1571 1576 1579 1580 1580 1580 1580 1574 1571 1568 1567 1572 1573 1576 1580 1577 1569 1568 1566 1561 1563 1553 1540 1524 1502 1539 1556 1556 1546 1531 1512 1501 1506 1500 1496 1503 1502 1492 1473 1458 1467 1467 1469 1470 1470 1472 1475 1464 1474 1485 1471 1451 1472 1477 1479 1486 1478 1463 1435 1407 1392 1394 1418 1448 1461 1445 1426 1413 1396 1387 1377 1379 1372 1371 1372 1368 1359 1355 1353 1353 1350 1347 1341 1338 1336 1332 1315 1295 1300 1327 1360 1354 1334 1312 1288 1254 1219 1180 1145 1113 1106 1133 1159 1159 1139 1113 1084 1085 1076 1055 1048 1065 1152 1150 1147 1151 1149 1143 1153 1162 1158 1151 1147 1156 1182 1203 1211 1220 1222 1217 1228 1241 1242 1230 1222 1231 1244 1245 1250 1257 1242 1231 1226 1228 1226 1226 1233 1238 1246 1255 1270 1291 1311 1329 1336 1341 1341 1339 1341 1345 1348 1348 1341 1349 1360 1356 1365 1373 1361 1366 1372 1378 1391 1408 1414 1414 1409 1390 1386 1405 1421 1436 1442 1448 1455 1459 1467 1475 1479 1483 1491 1500 1506 1512 1518 1523 1528 1533 1539 1544 1550 1556 1561 1562 1562 1562 1562 1562 1560 1558 1554 1555 1557 1557 1562 1565 1566 1561 1558 1552 1546 1554 1551 1535 1516 1471 1497 1528 1550 1544 1528 1499 1488 1498 1487 1482 1491 1489 1481 1463 1455 1461 1459 1460 1460 1460 1463 1466 1451 1462 1473 1458 1444 1466 1468 1472 1476 1464 1451 1428 1406 1386 1385 1408 1436 1450 1428 1406 1401 1391 1378 1370 1372 1361 1361 1365 1360 1352 1349 1343 1347 1344 1342 1337 1331 1329 1321 1311 1292 1267 1306 1351 1351 1325 1301 1278 1238 1206 1164 1131 1111 1096 1087 1086 1124 1127 1096 1074 1068 1059 1048 1038 1051 1145 1147 1148 1141 1133 1130 1139 1144 1137 1137 1152 1177 1200 1209 1205 1209 1215 1221 1230 1235 1227 1227 1230 1235 1243 1241 1247 1240 1225 1214 1214 1223 1223 1226 1234 1243 1257 1268 1280 1298 1315 1327 1331 1334 1334 1330 1327 1334 1341 1336 1339 1348 1352 1353 1365 1356 1354 1359 1367 1374 1384 1399 1406 1407 1399 1382 1378 1401 1419 1431 1439 1444 1447 1449 1457 1463 1468 1476 1484 1493 1500 1507 1513 1517 1520 1524 1527 1530 1535 1541 1546 1548 1549 1549 1549 1550 1549 1547 1543 1540 1537 1540 1544 1547 1552 1549 1546 1543 1538 1544 1546 1524 1510 1467 1469 1504 1533 1533 1518 1494 1477 1483 1476 1469 1473 1470 1466 1455 1452 1450 1452 1452 1451 1451 1454 1457 1438 1450 1463 1447 1440 1461 1459 1464 1465 1452 1449 1436 1410 1379 1380 1400 1421 1434 1418 1395 1392 1384 1370 1365 1361 1350 1353 1354 1346 1346 1347 1334 1332 1332 1337 1331 1323 1317 1301 1290 1277 1276 1300 1343 1350 1314 1270 1232 1198 1165 1134 1110 1094 1070 1056 1068 1102 1124 1111 1082 1066 1045 1037 1040 1050 1150 1151 1133 1124 1122 1124 1133 1137 1133 1134 1154 1184 1201 1202 1198 1193 1201 1215 1223 1225 1213 1206 1214 1227 1232 1236 1239 1225 1210 1203 1209 1216 1221 1228 1237 1250 1265 1281 1297 1308 1313 1317 1322 1324 1325 1323 1321 1327 1332 1324 1335 1342 1347 1355 1358 1343 1348 1357 1367 1376 1385 1394 1399 1401 1389 1367 1371 1395 1413 1423 1430 1432 1436 1439 1444 1446 1454 1465 1474 1481 1489 1497 1503 1507 1510 1514 1518 1521 1525 1528 1532 1537 1539 1540 1540 1539 1535 1530 1529 1528 1527 1529 1531 1535 1539 1537 1535 1534 1529 1530 1534 1507 1495 1453 1455 1484 1510 1513 1503 1486 1469 1473 1464 1456 1461 1458 1452 1453 1445 1439 1445 1446 1444 1444 1446 1447 1432 1441 1452 1445 1431 1448 1453 1448 1454 1440 1431 1434 1421 1394 1370 1373 1399 1413 1401 1384 1373 1368 1358 1350 1348 1352 1346 1343 1340 1335 1339 1333 1321 1313 1330 1324 1311 1298 1287 1281 1268 1271 1294 1329 1335 1298 1257 1215 1181 1149 1120 1095 1075 1054 1044 1054 1061 1095 1118 1088 1070 1043 1036 1037 1050 1146 1136 1113 1114 1128 1141 1151 1152 1150 1159 1175 1191 1198 1191 1193 1198 1207 1215 1213 1212 1206 1207 1216 1224 1225 1232 1226 1209 1197 1198 1204 1212 1219 1228 1241 1255 1269 1283 1300 1307 1304 1303 1308 1312 1314 1317 1319 1320 1318 1318 1326 1333 1341 1346 1344 1335 1339 1352 1357 1364 1375 1386 1391 1393 1379 1363 1356 1385 1408 1418 1424 1425 1431 1438 1440 1438 1441 1451 1460 1469 1477 1483 1489 1493 1496 1501 1504 1508 1513 1517 1520 1524 1525 1525 1524 1522 1520 1517 1516 1516 1517 1519 1520 1520 1524 1525 1525 1524 1517 1515 1520 1497 1474 1437 1440 1468 1491 1485 1483 1468 1461 1466 1450 1447 1456 1453 1445 1448 1440 1440 1442 1441 1438 1435 1438 1439 1424 1432 1437 1439 1426 1445 1440 1445 1448 1434 1419 1430 1422 1400 1366 1362 1384 1397 1385 1368 1351 1350 1352 1343 1349 1347 1337 1338 1336 1334 1336 1333 1318 1296 1309 1311 1294 1282 1278 1275 1268 1269 1289 1317 1330 1300 1259 1213 1173 1139 1110 1084 1064 1049 1034 1030 1029 1067 1107 1093 1070 1037 1023 1024 1041 1143 1120 1103 1110 1135 1155 1167 1168 1171 1177 1184 1187 1187 1182 1186 1195 1209 1212 1203 1198 1198 1211 1220 1215 1217 1225 1210 1194 1189 1195 1202 1208 1216 1225 1240 1260 1274 1289 1301 1306 1301 1298 1301 1307 1307 1305 1305 1309 1314 1317 1324 1334 1339 1338 1325 1328 1338 1340 1347 1364 1376 1384 1389 1381 1361 1345 1354 1379 1395 1408 1414 1416 1420 1424 1425 1427 1432 1441 1449 1459 1468 1474 1478 1480 1483 1486 1491 1495 1500 1504 1507 1511 1511 1511 1509 1507 1507 1507 1505 1504 1505 1506 1504 1505 1512 1515 1515 1512 1503 1504 1509 1492 1465 1435 1420 1454 1473 1456 1460 1449 1448 1447 1437 1434 1445 1441 1435 1432 1426 1428 1424 1427 1429 1425 1425 1431 1417 1417 1429 1426 1418 1438 1430 1432 1435 1428 1414 1413 1411 1396 1371 1353 1363 1381 1368 1353 1343 1336 1340 1340 1344 1342 1330 1337 1336 1331 1328 1325 1315 1294 1291 1283 1271 1266 1267 1268 1267 1269 1286 1311 1334 1308 1264 1220 1176 1131 1101 1079 1062 1045 1023 1017 1035 1064 1089 1091 1064 1026 1011 1014 1032 1138 1105 1101 1115 1142 1161 1172 1180 1179 1178 1179 1176 1175 1175 1182 1192 1199 1200 1191 1189 1196 1202 1205 1197 1205 1210 1196 1184 1185 1191 1198 1204 1211 1222 1238 1255 1271 1283 1290 1291 1289 1284 1285 1292 1296 1298 1301 1300 1302 1308 1313 1320 1328 1326 1313 1324 1337 1340 1342 1355 1371 1376 1378 1370 1355 1337 1346 1374 1388 1398 1405 1406 1410 1414 1415 1418 1425 1431 1437 1443 1455 1464 1469 1469 1471 1473 1479 1484 1487 1491 1495 1500 1499 1499 1498 1496 1495 1494 1494 1494 1493 1490 1489 1494 1504 1508 1505 1499 1490 1499 1497 1482 1467 1436 1413 1431 1452 1448 1444 1434 1441 1439 1425 1427 1436 1434 1432 1425 1419 1419 1418 1422 1424 1417 1417 1423 1407 1407 1419 1412 1414 1427 1422 1424 1424 1421 1408 1398 1394 1394 1379 1348 1346 1365 1353 1340 1337 1332 1337 1341 1336 1333 1329 1336 1335 1328 1323 1318 1312 1302 1284 1258 1256 1260 1258 1264 1267 1268 1280 1302 1324 1304 1272 1226 1182 1144 1113 1089 1067 1048 1034 1017 1005 1016 1040 1052 1059 1055 1030 1012 987 1125 1097 1098 1122 1149 1169 1182 1189 1186 1183 1177 1169 1167 1171 1179 1187 1192 1189 1184 1188 1198 1206 1203 1201 1203 1197 1185 1184 1190 1198 1208 1219 1229 1241 1253 1266 1276 1283 1288 1285 1283 1286 1286 1288 1287 1290 1300 1300 1302 1312 1319 1324 1320 1315 1316 1324 1333 1334 1339 1350 1363 1370 1372 1365 1346 1335 1346 1371 1382 1387 1397 1397 1403 1409 1410 1413 1415 1417 1425 1428 1439 1450 1454 1456 1461 1464 1469 1474 1476 1481 1486 1489 1486 1484 1484 1482 1481 1480 1479 1478 1478 1475 1475 1473 1490 1497 1492 1485 1473 1480 1478 1464 1448 1431 1414 1410 1431 1434 1430 1421 1428 1424 1412 1415 1424 1422 1421 1418 1413 1410 1414 1409 1414 1411 1407 1410 1401 1396 1407 1397 1404 1417 1411 1413 1412 1412 1404 1392 1378 1379 1374 1353 1342 1346 1342 1332 1329 1330 1338 1339 1331 1322 1334 1336 1330 1327 1325 1322 1314 1305 1283 1260 1265 1265 1258 1259 1266 1268 1272 1286 1305 1311 1270 1223 1182 1146 1115 1089 1068 1048 1030 1005 993 1007 1016 1028 1041 1052 1032 986 940 1109 1090 1096 1121 1147 1165 1173 1175 1177 1173 1164 1158 1161 1168 1176 1180 1179 1176 1180 1189 1196 1200 1200 1197 1192 1182 1175 1177 1187 1196 1208 1219 1230 1242 1256 1268 1276 1280 1283 1279 1268 1277 1282 1285 1285 1286 1294 1295 1300 1313 1323 1326 1312 1308 1317 1320 1324 1325 1330 1346 1359 1367 1370 1360 1337 1331 1346 1362 1369 1375 1387 1385 1393 1399 1401 1405 1403 1403 1415 1422 1424 1432 1432 1441 1454 1456 1458 1465 1468 1472 1477 1479 1478 1476 1474 1469 1472 1475 1471 1466 1467 1464 1458 1462 1480 1489 1485 1474 1466 1475 1461 1452 1435 1422 1416 1399 1413 1418 1423 1412 1413 1406 1408 1413 1416 1414 1413 1413 1406 1403 1406 1396 1403 1403 1398 1398 1393 1389 1390 1387 1398 1410 1397 1404 1401 1403 1401 1392 1372 1357 1360 1356 1345 1331 1336 1332 1326 1318 1319 1327 1318 1317 1331 1334 1326 1322 1321 1324 1315 1303 1289 1274 1260 1258 1252 1254 1262 1267 1268 1276 1297 1316 1281 1235 1195 1161 1130 1102 1079 1059 1039 1018 1004 1003 988 982 1012 1040 1017 978 939 1092 1087 1103 1124 1143 1161 1170 1170 1166 1159 1152 1149 1154 1163 1169 1167 1164 1166 1176 1183 1184 1182 1190 1184 1175 1168 1172 1177 1184 1193 1205 1218 1231 1242 1253 1262 1268 1269 1266 1266 1260 1267 1276 1279 1282 1284 1290 1292 1298 1309 1316 1312 1298 1303 1310 1308 1312 1320 1323 1341 1357 1364 1363 1351 1335 1321 1328 1341 1348 1361 1372 1374 1380 1386 1391 1393 1392 1387 1392 1400 1404 1408 1413 1427 1442 1446 1443 1453 1456 1460 1465 1468 1466 1462 1463 1460 1458 1458 1456 1453 1454 1453 1450 1451 1463 1476 1473 1465 1459 1459 1452 1438 1420 1410 1409 1396 1397 1406 1415 1406 1400 1391 1407 1412 1412 1410 1408 1406 1399 1396 1396 1388 1390 1391 1392 1391 1379 1386 1375 1384 1403 1399 1386 1402 1394 1392 1387 1387 1374 1353 1349 1344 1343 1334 1334 1329 1324 1317 1313 1319 1311 1312 1320 1323 1321 1324 1325 1323 1319 1306 1292 1277 1257 1252 1246 1254 1265 1271 1270 1281 1304 1323 1299 1252 1213 1179 1149 1119 1093 1072 1054 1036 1022 1005 977 957 986 1015 997 974 947 1082 1086 1102 1124 1140 1149 1155 1156 1153 1146 1141 1141 1145 1153 1158 1154 1154 1162 1172 1174 1173 1173 1175 1168 1160 1158 1164 1170 1178 1189 1202 1218 1230 1239 1246 1253 1257 1255 1246 1251 1258 1265 1269 1270 1271 1281 1294 1299 1303 1308 1308 1294 1285 1299 1301 1297 1307 1316 1328 1339 1349 1355 1354 1343 1329 1313 1318 1328 1336 1357 1361 1366 1375 1379 1383 1376 1371 1372 1373 1378 1386 1393 1401 1418 1429 1426 1432 1443 1448 1453 1459 1459 1457 1454 1454 1450 1446 1444 1441 1443 1443 1443 1439 1440 1451 1462 1457 1452 1444 1436 1444 1427 1406 1400 1398 1389 1388 1397 1400 1398 1389 1385 1401 1403 1404 1403 1399 1395 1392 1387 1391 1382 1369 1378 1383 1378 1369 1376 1365 1372 1394 1389 1371 1392 1384 1376 1362 1368 1364 1345 1341 1341 1335 1328 1327 1322 1321 1316 1313 1312 1306 1307 1311 1311 1316 1322 1322 1319 1320 1313 1303 1291 1272 1257 1240 1251 1266 1273 1271 1277 1301 1330 1311 1271 1235 1197 1164 1130 1103 1082 1064 1047 1033 1014 990 969 969 977 974 957 935 1085 1098 1114 1135 1149 1153 1152 1149 1146 1142 1136 1136 1141 1148 1149 1146 1148 1159 1166 1162 1163 1167 1161 1156 1154 1154 1161 1170 1181 1193 1206 1221 1228 1235 1242 1244 1247 1248 1238 1244 1252 1257 1261 1262 1263 1280 1294 1302 1305 1305 1300 1285 1272 1287 1290 1288 1298 1311 1315 1329 1337 1342 1343 1336 1322 1311 1303 1306 1326 1344 1350 1361 1367 1368 1370 1364 1358 1362 1365 1368 1371 1376 1386 1405 1411 1412 1421 1431 1436 1443 1449 1449 1447 1447 1445 1441 1436 1433 1430 1431 1431 1431 1425 1428 1442 1448 1443 1435 1427 1420 1427 1419 1400 1394 1390 1375 1381 1388 1389 1386 1376 1385 1394 1392 1390 1389 1388 1387 1382 1378 1382 1377 1362 1369 1375 1367 1370 1365 1361 1373 1377 1363 1363 1370 1369 1363 1351 1354 1349 1337 1337 1337 1330 1322 1323 1319 1316 1313 1312 1310 1306 1302 1307 1309 1317 1319 1316 1316 1320 1319 1313 1302 1280 1253 1240 1252 1265 1272 1271 1273 1296 1327 1320 1288 1255 1216 1182 1146 1115 1091 1072 1052 1033 1017 994 974 954 954 955 937 927 1091 1113 1128 1141 1149 1151 1147 1146 1142 1136 1131 1137 1144 1145 1141 1138 1143 1155 1162 1156 1156 1155 1149 1146 1148 1152 1161 1171 1187 1202 1214 1225 1231 1237 1236 1228 1224 1236 1239 1246 1252 1253 1257 1264 1277 1292 1293 1300 1307 1301 1277 1263 1267 1279 1284 1288 1293 1306 1315 1329 1339 1340 1335 1325 1317 1307 1293 1300 1318 1328 1344 1355 1359 1354 1356 1353 1349 1354 1360 1364 1363 1360 1371 1387 1394 1403 1412 1419 1424 1430 1434 1435 1437 1437 1437 1432 1426 1422 1421 1419 1417 1416 1414 1415 1426 1432 1429 1417 1417 1408 1393 1399 1396 1385 1382 1371 1364 1373 1381 1379 1371 1370 1380 1379 1377 1376 1377 1375 1376 1369 1369 1375 1367 1362 1360 1354 1361 1354 1354 1370 1364 1346 1340 1349 1353 1347 1340 1338 1334 1332 1330 1327 1323 1318 1319 1315 1312 1311 1310 1308 1304 1297 1305 1312 1316 1315 1311 1312 1314 1313 1307 1295 1272 1243 1240 1255 1270 1269 1270 1282 1304 1326 1325 1291 1252 1224 1193 1159 1129 1104 1082 1059 1038 1014 994 974 953 933 916 895 892 1098 1122 1134 1136 1136 1138 1142 1142 1136 1129 1129 1137 1142 1141 1134 1132 1138 1148 1155 1156 1151 1146 1143 1137 1139 1146 1154 1165 1183 1201 1212 1218 1223 1220 1215 1208 1218 1229 1233 1238 1244 1246 1250 1261 1273 1283 1286 1293 1298 1289 1265 1253 1254 1267 1278 1284 1288 1296 1313 1326 1333 1332 1328 1317 1307 1299 1287 1299 1308 1315 1333 1341 1340 1333 1338 1340 1339 1343 1348 1356 1356 1351 1360 1374 1384 1394 1405 1412 1415 1417 1420 1422 1426 1427 1426 1422 1419 1415 1412 1409 1404 1400 1406 1410 1416 1424 1412 1400 1401 1390 1372 1378 1380 1377 1371 1356 1362 1370 1377 1376 1367 1365 1375 1375 1371 1370 1373 1373 1369 1361 1363 1370 1369 1356 1348 1349 1352 1344 1354 1363 1356 1343 1331 1335 1338 1337 1331 1327 1328 1328 1323 1319 1317 1315 1313 1311 1310 1311 1308 1302 1296 1293 1302 1308 1310 1310 1307 1304 1298 1296 1293 1287 1274 1250 1238 1247 1260 1266 1270 1283 1307 1327 1320 1291 1266 1241 1206 1174 1146 1121 1097 1074 1052 1032 1019 998 974 951 925 901 885 1107 1131 1147 1141 1128 1129 1133 1134 1131 1126 1128 1134 1136 1133 1127 1126 1131 1134 1139 1146 1139 1135 1134 1133 1138 1148 1160 1177 1193 1202 1204 1203 1197 1198 1209 1214 1214 1226 1232 1236 1242 1249 1255 1268 1280 1287 1283 1287 1292 1277 1253 1247 1248 1260 1269 1276 1284 1294 1309 1319 1322 1324 1321 1312 1297 1289 1282 1296 1302 1309 1315 1318 1314 1313 1320 1326 1327 1331 1333 1340 1345 1344 1354 1367 1379 1386 1396 1400 1401 1405 1408 1410 1411 1412 1412 1410 1406 1403 1401 1398 1394 1389 1386 1388 1398 1406 1395 1382 1374 1371 1361 1352 1359 1364 1364 1353 1351 1361 1367 1368 1360 1357 1364 1367 1364 1362 1361 1363 1360 1352 1350 1359 1361 1352 1340 1341 1342 1336 1353 1354 1349 1344 1338 1329 1325 1327 1324 1322 1324 1319 1320 1319 1317 1312 1306 1309 1309 1309 1308 1298 1289 1292 1298 1303 1307 1310 1309 1304 1293 1291 1295 1288 1274 1243 1233 1241 1255 1267 1274 1289 1313 1340 1330 1304 1268 1237 1211 1185 1159 1135 1112 1089 1068 1047 1030 1010 985 961 937 914 889 1108 1128 1135 1126 1120 1122 1125 1127 1127 1125 1126 1129 1129 1124 1118 1117 1125 1131 1136 1132 1124 1122 1123 1124 1130 1142 1158 1175 1185 1191 1187 1185 1178 1193 1212 1219 1208 1221 1229 1233 1239 1249 1261 1274 1286 1290 1280 1281 1288 1271 1245 1241 1246 1254 1256 1269 1282 1295 1305 1311 1315 1320 1314 1305 1291 1282 1284 1292 1302 1305 1302 1299 1305 1310 1317 1319 1320 1321 1324 1330 1338 1345 1352 1362 1372 1378 1383 1389 1394 1401 1404 1404 1402 1402 1401 1397 1395 1392 1387 1384 1381 1378 1368 1371 1381 1385 1377 1363 1351 1348 1347 1339 1348 1355 1357 1349 1341 1352 1359 1357 1350 1350 1354 1357 1357 1354 1347 1349 1351 1341 1335 1347 1349 1346 1334 1327 1332 1333 1347 1345 1342 1340 1336 1329 1314 1312 1320 1317 1310 1307 1310 1313 1311 1308 1307 1302 1301 1304 1302 1295 1291 1286 1285 1298 1304 1305 1306 1302 1293 1286 1282 1281 1268 1245 1231 1235 1245 1261 1279 1297 1320 1335 1319 1294 1264 1240 1218 1195 1172 1148 1124 1102 1081 1059 1037 1018 995 971 949 926 903 1107 1127 1127 1118 1116 1119 1122 1124 1125 1124 1126 1127 1125 1118 1110 1115 1126 1133 1128 1120 1117 1118 1120 1121 1125 1136 1149 1159 1165 1171 1173 1176 1184 1209 1216 1213 1210 1219 1227 1233 1240 1250 1264 1276 1280 1280 1268 1273 1280 1269 1249 1240 1237 1240 1247 1260 1275 1287 1294 1296 1301 1304 1300 1296 1286 1277 1272 1279 1283 1286 1287 1289 1293 1299 1305 1307 1308 1309 1314 1320 1326 1334 1340 1347 1354 1361 1367 1373 1381 1386 1388 1389 1388 1388 1387 1386 1385 1382 1377 1374 1370 1366 1356 1355 1357 1361 1359 1347 1338 1333 1331 1336 1342 1346 1347 1343 1336 1340 1351 1350 1339 1343 1349 1351 1350 1348 1344 1343 1343 1333 1334 1340 1342 1339 1329 1323 1334 1340 1341 1337 1336 1334 1333 1329 1312 1309 1319 1314 1301 1306 1311 1314 1313 1311 1304 1293 1294 1297 1298 1294 1289 1283 1283 1296 1302 1302 1302 1299 1288 1276 1281 1281 1265 1240 1222 1232 1243 1260 1281 1303 1318 1315 1294 1276 1262 1247 1227 1207 1185 1161 1136 1111 1088 1066 1048 1030 1009 988 966 942 919 1099 1114 1115 1111 1111 1113 1117 1119 1121 1122 1124 1125 1120 1111 1107 1117 1126 1128 1116 1111 1112 1118 1122 1124 1127 1134 1143 1152 1161 1169 1181 1200 1213 1221 1212 1203 1207 1217 1231 1243 1252 1259 1268 1279 1281 1277 1259 1269 1278 1261 1236 1239 1236 1236 1250 1265 1278 1289 1293 1291 1291 1293 1292 1287 1277 1264 1262 1268 1271 1272 1277 1284 1291 1292 1295 1300 1304 1306 1309 1315 1320 1324 1328 1334 1342 1350 1357 1364 1373 1377 1378 1378 1378 1379 1377 1375 1375 1372 1370 1366 1361 1356 1349 1342 1338 1342 1341 1335 1332 1327 1322 1330 1333 1331 1335 1341 1328 1322 1337 1346 1335 1324 1334 1341 1339 1337 1336 1334 1334 1332 1326 1327 1332 1330 1322 1313 1316 1330 1331 1327 1325 1322 1320 1318 1310 1305 1303 1309 1300 1296 1294 1299 1302 1303 1298 1290 1288 1287 1286 1288 1286 1282 1279 1291 1298 1300 1300 1297 1285 1274 1278 1274 1260 1235 1223 1232 1247 1269 1288 1308 1313 1293 1276 1266 1258 1243 1226 1209 1186 1163 1137 1112 1086 1067 1054 1038 1018 998 975 948 920 1094 1102 1105 1103 1102 1105 1110 1113 1116 1118 1120 1119 1112 1102 1103 1115 1118 1111 1108 1107 1110 1118 1122 1124 1126 1129 1136 1150 1167 1187 1203 1217 1214 1200 1193 1194 1200 1217 1229 1239 1246 1252 1258 1264 1265 1260 1250 1256 1265 1254 1235 1230 1229 1232 1247 1265 1276 1281 1280 1279 1283 1282 1277 1275 1269 1258 1256 1258 1263 1267 1270 1277 1282 1283 1285 1289 1295 1299 1305 1310 1315 1318 1321 1327 1335 1343 1350 1358 1366 1370 1371 1370 1370 1371 1368 1366 1364 1362 1360 1358 1353 1348 1342 1336 1332 1330 1327 1325 1326 1321 1321 1326 1326 1322 1326 1331 1323 1322 1338 1342 1335 1321 1330 1333 1332 1330 1327 1323 1324 1326 1316 1323 1322 1322 1317 1305 1307 1321 1325 1324 1322 1318 1317 1315 1311 1301 1295 1305 1303 1293 1283 1292 1294 1295 1293 1289 1288 1283 1276 1282 1285 1281 1277 1288 1297 1300 1301 1295 1280 1270 1259 1253 1246 1238 1229 1220 1229 1247 1263 1286 1297 1278 1262 1251 1238 1227 1217 1198 1180 1164 1142 1118 1096 1071 1052 1036 1017 1005 987 964 934 1092 1097 1098 1096 1097 1100 1103 1107 1110 1111 1110 1108 1101 1093 1102 1115 1111 1102 1103 1105 1111 1118 1120 1121 1124 1128 1133 1143 1162 1190 1211 1218 1198 1182 1184 1195 1207 1220 1239 1244 1251 1255 1259 1265 1262 1251 1238 1251 1259 1252 1229 1225 1225 1232 1247 1264 1270 1271 1274 1276 1274 1267 1267 1267 1264 1255 1254 1256 1262 1266 1267 1271 1272 1277 1280 1284 1288 1293 1299 1303 1307 1311 1317 1321 1326 1334 1340 1344 1349 1353 1355 1355 1356 1357 1358 1358 1356 1352 1349 1346 1343 1339 1332 1327 1323 1320 1318 1316 1312 1314 1314 1310 1314 1314 1316 1314 1311 1312 1325 1331 1331 1315 1317 1325 1325 1321 1317 1315 1315 1318 1315 1313 1311 1315 1313 1303 1294 1305 1315 1314 1312 1307 1306 1306 1303 1296 1294 1297 1299 1294 1286 1289 1288 1290 1289 1288 1290 1285 1276 1279 1280 1276 1279 1290 1297 1301 1301 1291 1267 1248 1239 1234 1232 1232 1231 1232 1241 1254 1266 1283 1283 1261 1242 1231 1220 1214 1202 1179 1170 1162 1146 1129 1109 1083 1063 1046 1028 1010 991 968 941 1090 1094 1092 1090 1093 1095 1098 1102 1103 1102 1101 1099 1095 1091 1100 1107 1101 1097 1100 1101 1104 1108 1111 1122 1137 1145 1140 1140 1150 1175 1198 1198 1183 1171 1177 1193 1209 1221 1227 1233 1240 1243 1248 1252 1251 1243 1233 1242 1251 1246 1225 1220 1221 1231 1247 1258 1263 1267 1273 1271 1262 1255 1264 1264 1258 1251 1249 1255 1256 1261 1265 1268 1269 1275 1281 1286 1288 1291 1293 1295 1297 1303 1310 1313 1319 1325 1330 1334 1338 1342 1345 1346 1348 1350 1350 1348 1347 1346 1344 1342 1335 1328 1325 1324 1321 1319 1316 1316 1309 1307 1307 1306 1308 1309 1312 1309 1304 1307 1318 1322 1321 1309 1315 1323 1321 1315 1311 1311 1309 1311 1309 1303 1305 1309 1308 1300 1282 1292 1306 1304 1299 1295 1295 1294 1293 1292 1289 1286 1288 1292 1286 1279 1277 1282 1283 1286 1286 1281 1278 1274 1268 1269 1268 1284 1290 1293 1287 1276 1261 1246 1238 1230 1225 1221 1219 1222 1233 1236 1250 1270 1258 1237 1222 1212 1202 1193 1179 1163 1152 1139 1125 1113 1100 1084 1063 1044 1022 999 977 952 922 1090 1092 1087 1086 1090 1093 1096 1097 1097 1097 1096 1093 1089 1096 1106 1100 1094 1097 1100 1096 1099 1105 1116 1137 1155 1166 1160 1147 1144 1158 1175 1175 1172 1176 1185 1206 1220 1226 1229 1233 1237 1242 1245 1246 1245 1236 1229 1235 1243 1236 1221 1216 1216 1229 1243 1250 1259 1266 1268 1261 1252 1252 1261 1261 1254 1245 1240 1245 1243 1251 1258 1260 1260 1264 1268 1272 1274 1277 1280 1283 1286 1291 1298 1303 1308 1314 1317 1323 1328 1332 1334 1336 1337 1338 1336 1335 1333 1331 1329 1328 1325 1320 1317 1312 1308 1306 1306 1303 1299 1298 1299 1302 1301 1303 1304 1303 1300 1298 1309 1309 1305 1302 1309 1317 1315 1309 1305 1307 1306 1303 1297 1298 1300 1302 1300 1292 1277 1290 1301 1299 1296 1293 1297 1295 1292 1291 1284 1281 1287 1286 1276 1277 1279 1280 1278 1280 1282 1280 1278 1274 1267 1263 1269 1277 1284 1288 1278 1271 1259 1240 1227 1225 1222 1219 1219 1220 1228 1231 1247 1265 1246 1222 1205 1197 1186 1172 1160 1147 1128 1107 1099 1093 1086 1074 1053 1029 1007 983 958 932 901 1082 1082 1082 1083 1086 1090 1090 1089 1092 1092 1089 1084 1084 1093 1099 1092 1087 1093 1096 1091 1095 1109 1124 1144 1158 1167 1169 1161 1154 1154 1160 1158 1162 1177 1197 1213 1223 1229 1232 1235 1236 1244 1248 1244 1241 1231 1222 1233 1238 1229 1213 1211 1218 1236 1245 1248 1257 1261 1261 1255 1250 1252 1259 1260 1255 1237 1231 1238 1242 1245 1249 1254 1256 1258 1260 1262 1266 1269 1275 1282 1287 1292 1296 1301 1306 1310 1313 1317 1323 1326 1326 1327 1324 1324 1327 1326 1322 1319 1318 1317 1316 1313 1310 1304 1298 1296 1295 1293 1292 1291 1292 1293 1292 1295 1294 1296 1294 1290 1297 1296 1291 1293 1295 1303 1304 1299 1293 1299 1298 1293 1292 1290 1292 1294 1292 1279 1271 1284 1293 1289 1287 1287 1287 1285 1281 1281 1279 1277 1276 1276 1273 1273 1272 1271 1272 1276 1278 1278 1274 1270 1267 1259 1256 1270 1278 1280 1269 1262 1250 1239 1233 1223 1216 1215 1215 1219 1222 1229 1242 1252 1234 1214 1198 1186 1170 1153 1138 1124 1106 1085 1076 1071 1061 1059 1047 1022 1000 980 955 931 907 1078 1077 1081 1080 1083 1082 1081 1083 1088 1086 1080 1077 1084 1092 1088 1087 1087 1089 1088 1087 1100 1121 1132 1143 1152 1164 1174 1178 1177 1173 1167 1163 1172 1182 1210 1221 1226 1228 1230 1234 1238 1242 1241 1233 1226 1221 1219 1225 1229 1223 1211 1208 1218 1230 1240 1244 1246 1252 1254 1251 1247 1246 1248 1252 1248 1236 1226 1231 1237 1238 1242 1245 1248 1250 1247 1250 1257 1260 1262 1267 1273 1278 1282 1285 1290 1297 1301 1306 1312 1314 1316 1317 1313 1313 1318 1318 1315 1313 1312 1309 1308 1306 1304 1301 1296 1292 1291 1291 1290 1287 1284 1284 1283 1286 1292 1295 1289 1290 1292 1293 1290 1283 1293 1297 1295 1291 1289 1289 1286 1281 1286 1288 1288 1289 1286 1273 1277 1287 1289 1287 1286 1284 1283 1283 1280 1276 1276 1278 1277 1276 1274 1270 1269 1269 1270 1272 1272 1272 1270 1268 1265 1253 1249 1263 1269 1271 1264 1258 1250 1247 1242 1219 1210 1212 1216 1218 1219 1227 1241 1247 1225 1205 1189 1174 1155 1136 1114 1098 1093 1079 1058 1041 1027 1044 1054 1032 1007 989 970 950 926 1074 1074 1075 1074 1078 1078 1080 1083 1082 1075 1070 1075 1085 1090 1082 1083 1087 1087 1081 1086 1106 1124 1130 1129 1136 1150 1164 1179 1190 1193 1194 1198 1210 1224 1231 1238 1237 1230 1229 1236 1243 1244 1237 1222 1212 1209 1216 1224 1227 1220 1206 1206 1222 1231 1232 1240 1250 1254 1251 1249 1248 1250 1251 1250 1242 1227 1225 1230 1236 1239 1236 1237 1241 1245 1242 1242 1248 1252 1254 1258 1262 1266 1270 1273 1277 1285 1291 1296 1300 1303 1306 1308 1307 1306 1307 1309 1308 1307 1306 1302 1301 1299 1296 1294 1290 1286 1285 1283 1280 1279 1277 1276 1274 1277 1284 1288 1282 1273 1282 1284 1275 1266 1283 1288 1284 1283 1282 1277 1279 1277 1274 1281 1283 1282 1280 1268 1269 1279 1282 1279 1277 1275 1275 1275 1273 1271 1272 1271 1270 1268 1269 1269 1268 1266 1265 1265 1267 1267 1267 1267 1262 1250 1246 1247 1247 1249 1252 1254 1255 1251 1236 1216 1208 1215 1223 1217 1217 1227 1244 1251 1226 1197 1173 1160 1142 1127 1108 1086 1075 1071 1056 1037 1028 1035 1041 1029 1009 991 970 945 920 1071 1070 1070 1068 1069 1076 1077 1077 1073 1067 1067 1073 1078 1076 1074 1078 1083 1083 1079 1082 1091 1103 1107 1111 1120 1134 1151 1171 1190 1206 1216 1223 1226 1231 1237 1244 1243 1236 1230 1230 1233 1231 1223 1212 1201 1193 1191 1202 1215 1214 1206 1203 1217 1225 1227 1232 1241 1245 1244 1243 1242 1243 1245 1245 1239 1224 1221 1226 1234 1238 1233 1229 1232 1235 1237 1236 1239 1245 1251 1257 1258 1261 1267 1272 1276 1281 1287 1292 1295 1297 1299 1301 1301 1296 1297 1301 1299 1297 1295 1294 1291 1288 1287 1286 1283 1280 1276 1276 1275 1274 1267 1267 1269 1272 1279 1282 1279 1267 1273 1277 1255 1264 1280 1282 1278 1273 1272 1273 1271 1270 1269 1274 1276 1278 1278 1269 1264 1275 1278 1275 1273 1271 1270 1270 1268 1268 1269 1261 1261 1263 1263 1264 1264 1262 1259 1260 1262 1263 1263 1261 1256 1250 1236 1224 1220 1221 1230 1238 1243 1236 1222 1215 1212 1211 1217 1217 1220 1232 1238 1230 1212 1195 1178 1155 1127 1110 1099 1081 1064 1055 1042 1027 1015 998 994 1003 998 983 965 943 920 1069 1070 1073 1070 1067 1072 1071 1068 1064 1062 1067 1074 1072 1069 1072 1075 1077 1078 1078 1080 1087 1095 1101 1108 1117 1131 1148 1170 1193 1214 1229 1240 1246 1251 1255 1253 1249 1238 1225 1218 1219 1221 1215 1204 1184 1173 1177 1190 1206 1209 1206 1208 1217 1220 1222 1228 1233 1237 1238 1237 1233 1234 1238 1239 1235 1226 1214 1220 1229 1235 1229 1222 1221 1221 1225 1228 1230 1234 1240 1245 1247 1248 1254 1262 1268 1271 1274 1279 1283 1285 1286 1287 1288 1289 1289 1287 1287 1289 1289 1283 1280 1278 1276 1275 1274 1272 1270 1268 1266 1265 1265 1264 1263 1268 1274 1275 1273 1267 1268 1272 1247 1256 1274 1273 1270 1267 1267 1267 1262 1264 1267 1269 1272 1272 1272 1268 1263 1268 1272 1273 1272 1270 1267 1266 1267 1268 1265 1257 1260 1265 1260 1256 1258 1261 1259 1259 1258 1257 1257 1255 1252 1245 1227 1218 1222 1222 1223 1223 1221 1213 1207 1211 1214 1213 1215 1219 1228 1245 1255 1239 1217 1194 1169 1146 1124 1103 1088 1075 1062 1046 1027 1022 1015 1002 995 996 991 976 959 939 918 1059 1063 1066 1069 1068 1064 1064 1065 1062 1059 1064 1069 1067 1067 1072 1073 1072 1074 1076 1079 1083 1089 1096 1103 1111 1124 1144 1167 1192 1213 1233 1249 1263 1268 1264 1256 1246 1231 1226 1218 1214 1211 1206 1198 1179 1169 1170 1174 1193 1202 1205 1215 1217 1215 1217 1226 1233 1235 1233 1231 1228 1233 1239 1238 1232 1219 1210 1217 1224 1231 1220 1215 1217 1217 1220 1227 1231 1233 1236 1239 1244 1249 1254 1257 1263 1267 1271 1274 1277 1281 1283 1282 1279 1280 1283 1282 1281 1281 1279 1276 1273 1272 1268 1267 1266 1266 1265 1261 1254 1256 1259 1258 1258 1262 1264 1267 1270 1263 1264 1265 1241 1249 1265 1261 1261 1265 1265 1257 1254 1259 1261 1264 1266 1265 1262 1262 1258 1254 1261 1266 1265 1262 1260 1259 1262 1265 1263 1258 1255 1253 1253 1255 1256 1257 1253 1256 1258 1254 1253 1256 1255 1247 1235 1226 1218 1211 1213 1216 1213 1208 1204 1203 1206 1208 1213 1222 1239 1257 1254 1230 1208 1185 1158 1135 1117 1096 1076 1060 1046 1028 1012 1009 1003 995 987 980 972 956 939 922 901 1060 1063 1064 1065 1062 1059 1060 1061 1058 1056 1061 1063 1063 1066 1069 1070 1069 1070 1072 1075 1079 1085 1089 1095 1105 1119 1139 1163 1187 1209 1229 1249 1268 1272 1259 1246 1229 1218 1228 1223 1212 1200 1191 1185 1171 1155 1147 1145 1172 1191 1203 1207 1204 1204 1212 1217 1225 1227 1222 1224 1223 1227 1229 1230 1222 1213 1201 1207 1215 1220 1217 1212 1211 1212 1215 1220 1224 1227 1229 1231 1236 1242 1246 1249 1253 1258 1261 1265 1270 1274 1275 1275 1272 1271 1269 1270 1274 1274 1272 1269 1266 1266 1262 1260 1259 1258 1258 1254 1245 1243 1246 1250 1254 1255 1256 1259 1265 1256 1256 1251 1234 1250 1259 1253 1255 1260 1259 1254 1248 1253 1256 1257 1259 1261 1260 1260 1253 1250 1261 1264 1263 1259 1256 1256 1262 1263 1262 1258 1250 1251 1253 1251 1246 1251 1253 1255 1255 1251 1251 1252 1252 1248 1236 1219 1212 1212 1212 1213 1207 1206 1207 1206 1206 1211 1219 1234 1253 1255 1234 1207 1183 1162 1139 1116 1098 1080 1060 1038 1019 1008 1001 992 984 975 962 952 946 931 916 906 895 1053 1055 1059 1062 1054 1050 1050 1052 1053 1053 1054 1054 1057 1060 1062 1063 1063 1067 1069 1071 1073 1078 1083 1088 1098 1114 1134 1156 1176 1198 1218 1239 1260 1267 1254 1234 1213 1208 1214 1211 1208 1198 1179 1159 1140 1124 1124 1139 1158 1179 1193 1198 1196 1204 1212 1217 1224 1224 1221 1224 1228 1230 1229 1227 1218 1205 1197 1202 1210 1219 1217 1206 1204 1209 1212 1214 1216 1218 1223 1225 1230 1235 1238 1242 1247 1249 1252 1256 1263 1265 1266 1266 1265 1260 1257 1260 1266 1267 1266 1262 1259 1257 1255 1254 1252 1251 1250 1246 1240 1232 1235 1243 1249 1252 1254 1254 1252 1246 1238 1239 1231 1247 1251 1246 1245 1245 1246 1247 1242 1247 1252 1252 1254 1255 1253 1250 1246 1243 1252 1257 1258 1255 1249 1246 1253 1258 1259 1254 1247 1244 1246 1248 1246 1247 1250 1252 1248 1246 1248 1248 1247 1243 1234 1216 1207 1207 1209 1211 1205 1203 1204 1206 1208 1216 1233 1258 1266 1245 1217 1191 1166 1145 1122 1100 1081 1065 1047 1029 1009 1006 1003 993 982 967 948 939 942 933 920 919 921 1046 1048 1051 1050 1046 1043 1044 1046 1051 1049 1047 1048 1053 1056 1058 1058 1058 1063 1065 1065 1065 1069 1074 1080 1091 1106 1126 1147 1166 1187 1210 1233 1249 1256 1246 1231 1218 1205 1188 1183 1191 1184 1168 1152 1136 1120 1113 1118 1137 1158 1178 1189 1191 1202 1206 1211 1220 1222 1220 1220 1224 1226 1227 1222 1208 1196 1184 1187 1204 1212 1209 1201 1194 1202 1208 1209 1209 1209 1214 1218 1223 1228 1233 1237 1240 1242 1244 1248 1253 1256 1257 1257 1256 1250 1251 1255 1260 1260 1256 1254 1253 1250 1248 1248 1247 1246 1244 1238 1233 1232 1234 1239 1243 1246 1246 1242 1247 1243 1232 1233 1238 1250 1247 1244 1248 1246 1243 1244 1246 1246 1245 1245 1246 1250 1250 1246 1242 1246 1250 1251 1251 1248 1244 1243 1249 1255 1254 1250 1244 1241 1242 1243 1246 1246 1246 1247 1243 1243 1242 1241 1240 1234 1224 1213 1205 1201 1204 1207 1205 1203 1198 1201 1208 1218 1237 1259 1255 1224 1203 1183 1164 1143 1121 1101 1084 1066 1054 1049 1041 1034 1023 1011 992 971 950 948 955 952 944 947 952 1045 1048 1045 1036 1038 1042 1045 1045 1042 1041 1044 1050 1054 1054 1057 1061 1062 1062 1059 1056 1061 1063 1067 1078 1092 1108 1126 1145 1164 1186 1210 1235 1256 1268 1254 1231 1212 1192 1175 1172 1174 1163 1144 1132 1124 1121 1117 1114 1132 1153 1170 1183 1190 1195 1203 1207 1212 1216 1217 1218 1221 1222 1223 1218 1199 1186 1177 1175 1189 1201 1199 1191 1184 1190 1197 1200 1202 1202 1205 1207 1213 1218 1223 1228 1231 1234 1237 1240 1241 1245 1248 1248 1248 1243 1242 1243 1252 1254 1249 1246 1244 1243 1243 1241 1238 1238 1238 1233 1229 1225 1221 1227 1234 1237 1235 1232 1236 1236 1224 1222 1230 1240 1241 1239 1238 1236 1235 1236 1237 1240 1238 1235 1237 1243 1242 1238 1234 1238 1243 1244 1245 1241 1239 1241 1247 1250 1248 1244 1239 1237 1237 1238 1241 1242 1241 1241 1239 1239 1237 1236 1233 1228 1211 1204 1206 1205 1205 1204 1197 1199 1202 1204 1211 1222 1245 1272 1261 1224 1195 1171 1153 1139 1123 1111 1098 1082 1073 1070 1064 1056 1040 1017 997 991 988 987 988 987 983 982 983 1040 1042 1040 1036 1035 1035 1031 1029 1025 1033 1039 1043 1046 1049 1053 1056 1056 1056 1056 1054 1055 1056 1060 1073 1090 1105 1122 1140 1160 1183 1209 1234 1254 1265 1257 1236 1217 1196 1177 1166 1162 1152 1134 1119 1113 1115 1116 1116 1127 1144 1159 1174 1190 1193 1198 1203 1203 1208 1213 1216 1220 1220 1219 1212 1191 1178 1174 1173 1183 1200 1199 1181 1180 1188 1191 1194 1196 1201 1206 1210 1214 1217 1219 1224 1228 1229 1230 1230 1231 1236 1242 1243 1239 1233 1236 1244 1249 1249 1247 1245 1241 1239 1237 1234 1231 1231 1231 1223 1220 1222 1223 1227 1229 1229 1229 1229 1233 1230 1219 1217 1224 1233 1237 1233 1229 1226 1228 1232 1231 1234 1234 1232 1235 1240 1234 1228 1229 1229 1234 1238 1239 1238 1235 1238 1243 1245 1244 1238 1233 1229 1230 1235 1236 1236 1235 1237 1232 1231 1234 1237 1232 1227 1214 1206 1201 1200 1199 1200 1195 1194 1199 1206 1214 1229 1252 1274 1259 1226 1197 1172 1158 1151 1135 1118 1107 1099 1093 1092 1085 1073 1053 1025 1005 1013 1021 1022 1019 1018 1012 1010 1011 1036 1036 1036 1035 1036 1037 1036 1036 1039 1042 1043 1042 1044 1045 1050 1053 1054 1053 1053 1047 1047 1053 1058 1069 1084 1099 1115 1134 1154 1177 1201 1226 1246 1262 1258 1236 1216 1197 1176 1158 1153 1146 1129 1115 1112 1114 1116 1116 1122 1138 1156 1172 1188 1194 1191 1197 1195 1201 1208 1213 1217 1218 1215 1201 1182 1171 1160 1166 1180 1199 1187 1169 1174 1183 1185 1187 1188 1191 1193 1194 1199 1203 1204 1206 1211 1215 1217 1218 1220 1223 1227 1231 1229 1225 1225 1234 1238 1238 1238 1237 1233 1231 1231 1229 1226 1226 1225 1220 1215 1218 1225 1227 1223 1221 1222 1224 1228 1224 1217 1214 1216 1224 1230 1226 1223 1221 1223 1227 1229 1229 1230 1230 1233 1236 1229 1225 1227 1228 1232 1236 1234 1233 1235 1236 1240 1243 1242 1235 1229 1230 1231 1231 1232 1238 1238 1235 1227 1229 1232 1236 1229 1220 1207 1193 1193 1194 1194 1196 1196 1196 1201 1208 1220 1239 1264 1278 1257 1224 1195 1179 1175 1165 1151 1140 1130 1127 1124 1119 1104 1081 1059 1046 1037 1043 1048 1048 1046 1045 1037 1035 1035 1029 1030 1029 1032 1035 1036 1036 1037 1035 1032 1036 1037 1038 1040 1044 1046 1046 1047 1047 1043 1044 1052 1058 1069 1082 1097 1114 1132 1152 1174 1197 1218 1236 1253 1251 1229 1210 1191 1173 1159 1151 1138 1120 1109 1110 1115 1120 1123 1127 1139 1158 1175 1182 1188 1190 1190 1193 1199 1205 1211 1215 1215 1209 1196 1176 1155 1149 1157 1178 1201 1193 1173 1172 1175 1178 1181 1184 1186 1189 1190 1192 1196 1199 1201 1204 1207 1209 1213 1216 1218 1220 1222 1222 1222 1223 1229 1230 1230 1229 1228 1225 1224 1224 1224 1222 1220 1219 1215 1213 1216 1222 1222 1219 1217 1216 1216 1220 1217 1211 1206 1206 1214 1221 1220 1216 1214 1215 1217 1220 1221 1221 1220 1219 1221 1223 1221 1218 1219 1223 1227 1227 1227 1229 1232 1234 1235 1235 1234 1229 1223 1221 1228 1230 1229 1228 1230 1229 1226 1224 1226 1228 1220 1208 1197 1192 1191 1193 1194 1195 1194 1200 1209 1226 1249 1276 1280 1261 1229 1197 1190 1195 1176 1165 1170 1159 1155 1155 1140 1116 1086 1064 1063 1071 1074 1077 1080 1080 1078 1074 1067 1060 1017 1019 1019 1020 1021 1023 1026 1027 1024 1021 1025 1029 1030 1032 1035 1036 1037 1040 1043 1043 1041 1050 1055 1065 1079 1094 1110 1129 1150 1172 1195 1217 1235 1248 1243 1227 1213 1201 1186 1171 1155 1136 1116 1105 1104 1109 1116 1118 1121 1133 1154 1172 1181 1184 1194 1189 1187 1194 1198 1203 1208 1207 1196 1180 1168 1154 1140 1143 1168 1182 1177 1164 1164 1169 1172 1174 1177 1181 1184 1187 1189 1190 1193 1196 1198 1200 1203 1207 1211 1213 1214 1215 1214 1215 1217 1221 1223 1221 1217 1218 1218 1219 1218 1217 1216 1215 1212 1206 1207 1212 1215 1216 1216 1216 1213 1211 1216 1210 1202 1202 1206 1215 1218 1218 1215 1212 1214 1218 1219 1219 1219 1219 1219 1218 1217 1214 1215 1216 1220 1222 1220 1223 1226 1228 1233 1233 1232 1231 1226 1220 1223 1228 1231 1228 1226 1227 1228 1222 1215 1218 1223 1217 1204 1192 1186 1190 1190 1191 1192 1194 1201 1215 1238 1264 1287 1283 1264 1238 1216 1210 1208 1190 1187 1197 1184 1180 1180 1155 1125 1099 1082 1080 1092 1095 1094 1105 1114 1118 1112 1100 1088 1014 1015 1015 1012 1012 1013 1015 1016 1019 1020 1022 1024 1025 1026 1029 1031 1031 1034 1041 1040 1038 1050 1056 1067 1080 1095 1112 1130 1152 1174 1199 1218 1235 1251 1244 1225 1214 1204 1193 1178 1159 1135 1113 1102 1102 1107 1113 1116 1122 1138 1158 1167 1171 1181 1187 1187 1188 1193 1197 1201 1206 1197 1189 1176 1160 1140 1129 1137 1161 1176 1168 1155 1158 1164 1166 1168 1171 1174 1177 1180 1181 1182 1184 1188 1190 1192 1196 1201 1203 1204 1206 1206 1205 1203 1200 1206 1209 1209 1207 1209 1210 1210 1210 1211 1211 1211 1210 1206 1199 1196 1203 1207 1208 1207 1208 1209 1213 1209 1202 1198 1196 1201 1201 1209 1211 1208 1208 1207 1204 1206 1212 1212 1213 1214 1213 1212 1208 1210 1215 1216 1215 1217 1221 1223 1225 1227 1226 1225 1223 1219 1220 1226 1228 1226 1223 1222 1223 1219 1214 1213 1214 1211 1198 1186 1183 1186 1182 1182 1188 1196 1210 1229 1252 1276 1297 1291 1266 1247 1242 1230 1208 1202 1215 1218 1205 1206 1204 1175 1137 1115 1114 1122 1130 1139 1137 1134 1134 1139 1133 1119 1102 1019 1020 1019 1016 1015 1016 1013 1014 1020 1021 1021 1023 1024 1028 1029 1031 1031 1032 1034 1035 1035 1042 1051 1061 1074 1089 1106 1125 1149 1174 1198 1218 1235 1247 1242 1226 1215 1210 1200 1190 1174 1151 1130 1113 1105 1104 1111 1116 1121 1137 1157 1169 1166 1179 1184 1186 1188 1190 1194 1198 1195 1180 1175 1171 1156 1134 1122 1129 1154 1173 1163 1151 1154 1157 1160 1163 1167 1168 1170 1171 1171 1173 1175 1179 1182 1183 1188 1194 1196 1196 1197 1197 1197 1196 1192 1194 1198 1206 1208 1209 1207 1203 1203 1208 1208 1207 1203 1197 1195 1196 1200 1202 1200 1198 1203 1204 1206 1202 1194 1192 1192 1196 1198 1201 1201 1203 1206 1202 1200 1202 1206 1207 1211 1213 1210 1204 1204 1207 1210 1212 1213 1216 1218 1219 1222 1223 1222 1221 1220 1216 1216 1220 1222 1221 1218 1218 1219 1217 1213 1207 1208 1206 1199 1194 1186 1183 1181 1183 1190 1203 1220 1241 1263 1286 1302 1296 1276 1266 1260 1240 1214 1208 1224 1231 1216 1220 1219 1189 1153 1131 1127 1138 1142 1151 1149 1149 1158 1159 1152 1137 1128 1021 1021 1019 1014 1014 1016 1017 1023 1024 1020 1019 1019 1020 1021 1024 1029 1030 1030 1029 1022 1031 1038 1048 1059 1072 1087 1103 1124 1150 1178 1204 1223 1240 1255 1247 1230 1225 1219 1212 1203 1190 1172 1145 1119 1104 1104 1110 1113 1119 1135 1154 1165 1163 1174 1183 1182 1180 1180 1185 1190 1180 1161 1155 1161 1151 1133 1120 1122 1146 1159 1152 1146 1146 1150 1153 1158 1163 1164 1163 1164 1164 1165 1167 1169 1172 1174 1178 1181 1184 1186 1187 1187 1189 1190 1188 1189 1190 1196 1198 1199 1197 1194 1194 1198 1200 1198 1197 1194 1189 1192 1197 1198 1197 1196 1195 1195 1197 1197 1192 1188 1187 1186 1184 1189 1191 1195 1198 1196 1196 1196 1198 1201 1206 1209 1205 1195 1198 1204 1205 1206 1209 1211 1213 1215 1220 1221 1220 1219 1216 1211 1213 1214 1216 1221 1219 1217 1214 1207 1199 1197 1197 1194 1190 1188 1181 1179 1185 1193 1202 1216 1232 1254 1277 1298 1313 1306 1289 1280 1267 1243 1230 1232 1247 1246 1238 1241 1230 1193 1166 1159 1159 1167 1175 1182 1182 1183 1190 1186 1174 1163 1156 1014 1015 1015 1015 1016 1012 1010 1016 1018 1018 1017 1018 1019 1022 1023 1025 1026 1026 1026 1024 1027 1034 1045 1057 1069 1083 1100 1124 1154 1184 1212 1232 1247 1257 1249 1234 1230 1224 1218 1211 1201 1181 1150 1121 1105 1106 1108 1110 1118 1136 1152 1159 1159 1170 1179 1178 1169 1171 1176 1180 1171 1148 1141 1149 1137 1121 1115 1127 1148 1160 1148 1136 1144 1147 1149 1153 1158 1161 1159 1159 1161 1163 1164 1166 1170 1174 1174 1173 1175 1177 1180 1185 1187 1188 1185 1182 1185 1190 1190 1191 1190 1189 1190 1193 1195 1194 1194 1189 1183 1186 1190 1193 1195 1193 1190 1190 1190 1194 1192 1185 1181 1178 1175 1183 1188 1189 1190 1191 1190 1189 1191 1194 1199 1200 1198 1191 1191 1196 1199 1201 1201 1201 1203 1206 1208 1210 1211 1211 1211 1209 1209 1205 1210 1212 1209 1205 1201 1196 1188 1184 1181 1178 1176 1177 1175 1181 1193 1206 1217 1228 1243 1267 1293 1314 1324 1317 1299 1286 1271 1257 1255 1260 1270 1268 1263 1263 1246 1204 1179 1183 1196 1205 1210 1215 1218 1214 1213 1210 1191 1173 1166 1011 1011 1011 1009 1010 1008 1008 1010 1013 1015 1017 1018 1019 1020 1021 1022 1024 1025 1025 1023 1024 1033 1043 1055 1069 1084 1103 1129 1161 1190 1211 1228 1240 1244 1239 1233 1229 1222 1215 1210 1200 1180 1149 1121 1106 1102 1104 1108 1117 1134 1149 1159 1154 1172 1175 1178 1168 1170 1172 1171 1159 1142 1131 1131 1124 1112 1111 1128 1149 1152 1140 1129 1136 1141 1142 1146 1148 1150 1152 1152 1156 1156 1155 1161 1165 1169 1169 1169 1171 1172 1172 1179 1183 1182 1180 1179 1181 1182 1182 1186 1185 1183 1182 1187 1191 1190 1188 1184 1180 1180 1180 1184 1189 1185 1186 1187 1185 1189 1185 1179 1177 1180 1181 1181 1186 1188 1188 1189 1190 1190 1192 1194 1197 1196 1192 1189 1190 1196 1201 1201 1201 1200 1201 1204 1206 1209 1211 1209 1208 1205 1208 1214 1215 1215 1210 1197 1185 1183 1178 1176 1170 1162 1168 1174 1180 1192 1205 1218 1230 1245 1263 1287 1313 1333 1342 1329 1299 1291 1284 1276 1272 1277 1287 1290 1286 1284 1263 1222 1204 1206 1215 1228 1233 1232 1237 1235 1229 1218 1193 1174 1180 1004 1004 1004 1004 1003 1003 1004 1005 1005 1006 1010 1013 1014 1013 1013 1015 1021 1024 1021 1018 1023 1032 1037 1044 1055 1072 1096 1126 1158 1187 1209 1225 1235 1239 1239 1233 1227 1219 1210 1201 1189 1167 1139 1112 1099 1097 1098 1107 1123 1139 1150 1153 1154 1165 1168 1169 1166 1166 1165 1161 1151 1130 1117 1118 1111 1108 1114 1132 1148 1145 1128 1129 1133 1136 1137 1142 1146 1147 1148 1145 1147 1151 1151 1157 1162 1165 1163 1165 1167 1168 1167 1171 1174 1174 1176 1176 1172 1172 1173 1181 1180 1176 1174 1178 1183 1183 1182 1181 1180 1174 1172 1177 1182 1180 1176 1177 1180 1182 1180 1172 1173 1177 1174 1170 1179 1183 1182 1182 1180 1180 1183 1186 1188 1188 1185 1183 1185 1191 1194 1192 1191 1193 1196 1198 1196 1199 1203 1202 1202 1200 1201 1200 1205 1206 1199 1190 1181 1174 1168 1168 1164 1162 1168 1179 1194 1209 1222 1234 1250 1268 1288 1310 1335 1352 1354 1333 1297 1301 1302 1292 1283 1292 1303 1305 1310 1302 1273 1236 1238 1245 1233 1249 1261 1250 1257 1267 1251 1216 1194 1201 1201 999 999 999 999 999 999 1002 1003 1002 1003 1007 1009 1011 1008 1008 1011 1016 1018 1015 1012 1022 1029 1032 1037 1046 1065 1093 1124 1154 1182 1204 1221 1231 1235 1233 1229 1222 1216 1210 1201 1188 1165 1136 1114 1097 1090 1089 1101 1125 1142 1149 1147 1151 1165 1169 1168 1164 1159 1157 1151 1143 1128 1118 1109 1097 1097 1115 1135 1142 1133 1122 1123 1128 1130 1130 1139 1142 1142 1143 1140 1139 1142 1146 1151 1157 1159 1159 1159 1158 1160 1162 1166 1169 1168 1170 1168 1163 1162 1164 1171 1175 1172 1170 1171 1174 1177 1179 1180 1176 1170 1169 1173 1177 1176 1174 1176 1175 1173 1175 1172 1168 1170 1174 1174 1180 1177 1171 1178 1182 1182 1183 1183 1182 1178 1177 1179 1180 1185 1190 1187 1184 1190 1194 1194 1191 1196 1200 1200 1198 1194 1195 1196 1199 1194 1185 1181 1176 1166 1162 1158 1161 1166 1178 1195 1215 1230 1245 1258 1272 1291 1307 1327 1353 1365 1353 1329 1313 1317 1318 1313 1303 1310 1318 1324 1322 1306 1285 1263 1256 1267 1261 1251 1276 1277 1267 1270 1255 1230 1204 1202 1204 998 998 997 995 994 996 1001 1003 1005 1010 1011 1012 1012 1013 1013 1014 1014 1013 1010 1008 1014 1019 1024 1033 1047 1066 1092 1119 1146 1174 1198 1216 1228 1231 1228 1224 1217 1209 1203 1196 1185 1163 1136 1114 1093 1083 1089 1106 1126 1140 1145 1146 1150 1161 1165 1164 1161 1154 1151 1147 1141 1133 1121 1103 1092 1098 1118 1135 1138 1129 1122 1121 1127 1128 1127 1135 1134 1135 1136 1137 1136 1134 1136 1144 1147 1150 1153 1151 1147 1150 1154 1161 1167 1164 1162 1163 1162 1158 1155 1161 1165 1165 1167 1162 1164 1169 1170 1171 1170 1166 1163 1165 1170 1171 1167 1165 1167 1168 1165 1163 1160 1163 1167 1171 1177 1170 1164 1166 1174 1178 1179 1182 1178 1173 1171 1174 1178 1182 1185 1184 1182 1187 1190 1188 1186 1190 1195 1195 1192 1189 1192 1201 1199 1190 1181 1175 1168 1163 1159 1156 1164 1177 1195 1217 1237 1256 1274 1292 1304 1317 1324 1340 1363 1376 1359 1335 1346 1348 1347 1337 1336 1344 1353 1356 1342 1317 1302 1301 1297 1296 1285 1285 1299 1300 1290 1280 1252 1227 1223 1205 1201 992 994 993 992 989 988 991 996 1000 1002 1003 1003 1004 1008 1011 1010 1010 1010 1006 1004 1004 1008 1014 1026 1044 1063 1086 1111 1137 1164 1191 1210 1221 1223 1217 1211 1206 1200 1192 1185 1177 1166 1145 1120 1096 1081 1090 1114 1131 1140 1142 1144 1148 1155 1157 1155 1152 1148 1146 1145 1142 1135 1118 1100 1091 1099 1119 1135 1137 1132 1120 1125 1131 1129 1128 1130 1132 1133 1130 1133 1135 1136 1135 1138 1145 1150 1146 1145 1146 1149 1153 1155 1156 1156 1157 1159 1161 1160 1156 1156 1160 1161 1163 1161 1162 1164 1165 1167 1167 1161 1159 1161 1166 1165 1159 1157 1163 1165 1161 1160 1156 1158 1161 1169 1174 1168 1165 1162 1166 1170 1173 1176 1172 1169 1168 1170 1175 1178 1177 1178 1181 1183 1182 1179 1179 1183 1185 1186 1185 1183 1188 1193 1193 1188 1178 1170 1165 1160 1156 1160 1173 1193 1216 1238 1255 1270 1289 1305 1317 1328 1340 1354 1370 1379 1372 1364 1373 1374 1375 1363 1361 1367 1368 1364 1352 1330 1312 1316 1318 1315 1302 1303 1317 1312 1302 1287 1266 1246 1242 1222 1213 992 996 996 994 991 989 993 1001 1005 1005 1006 1005 1005 1006 1007 1007 1007 1007 1005 1001 1003 1006 1012 1027 1045 1066 1089 1115 1141 1168 1193 1210 1215 1215 1212 1206 1205 1200 1192 1185 1179 1172 1154 1128 1102 1081 1087 1113 1129 1138 1139 1136 1141 1150 1152 1149 1145 1143 1143 1141 1138 1133 1120 1101 1086 1091 1113 1122 1124 1122 1115 1104 1116 1123 1122 1124 1125 1125 1126 1127 1125 1128 1132 1134 1138 1145 1144 1136 1133 1137 1143 1147 1149 1148 1145 1149 1155 1155 1151 1147 1148 1153 1156 1157 1157 1158 1159 1161 1162 1157 1153 1154 1159 1159 1153 1152 1156 1155 1155 1155 1149 1153 1159 1164 1164 1163 1165 1163 1161 1164 1168 1168 1165 1164 1164 1167 1169 1174 1171 1172 1176 1178 1177 1174 1180 1186 1187 1187 1179 1178 1186 1190 1187 1178 1163 1161 1160 1150 1156 1165 1185 1210 1237 1266 1272 1268 1274 1287 1298 1308 1320 1334 1351 1358 1367 1377 1386 1397 1400 1388 1377 1370 1356 1344 1349 1353 1348 1348 1343 1337 1323 1324 1337 1327 1312 1296 1287 1271 1254 1246 1240 ================================================ FILE: 2020年/2020.12.05日历/日历_EasyShu.rmd ================================================ --- title: "Calendar plot in R using ggplot2" author: "庄亮亮" date: "`r Sys.Date()`" output: prettydoc::html_pretty: theme: cayman highlight: github vignette: > %\VignetteIndexEntry{Vignette Title} %\VignetteEncoding{UTF-8} %\VignetteEngine{knitr::rmarkdown} editor_options: chunk_output_type: console --- # 1. ggTimeSeries绘图 R中ggTimeSeries包[1]的`ggplot_calendar_heatmap()`函数可以绘制如图6-2-2(a)所示的日历图,但是不能设定日历图每个时间单元的边框格式。 使用`stat_calendar_heatmap()`函数和`ggplot2`包的`ggplot()`函数可以调整日历图每个时间单元的边框格式,具体代码如下所示。其关键是使用`as.integer(strftime())`日期型处理组合函数获取某天对应所在的年份、月份、周数等数据信息。 ```{r message=FALSE, warning=FALSE} library(ggplot2) library(data.table) # 数据格式依赖 library(ggTimeSeries) library(RColorBrewer) ``` ## 构造随机数据 ```{r} set.seed(2134) dat <- data.table( date = seq(as.Date("2016-01-01"), as.Date("2019-12-31"), "days"), ValueCol = runif(1461) ) dat[, ValueCol := ValueCol + (strftime(date, "%u") %in% c(6,7)*runif(1)*0.75) ][, ValueCol := ValueCol + (abs(as.numeric(strftime(date, "%m")) - 6.5))*runif(1)*0.75 ][, ':='(Year = as.integer(strftime(date, "%Y")), # add new column month = as.integer(strftime(date, "%m")), week = as.integer(strftime(date, "%W")))] # 添加列 MonthLabels <- dat[, list(meanWkofYr = mean(week)), by = c("month") ][, month := month.abb[month]] ``` ```{r} ggplot(data = dat, aes(date = date, fill = ValueCol)) + stat_calendar_heatmap() + scale_fill_gradientn(colours = rev(brewer.pal(11, "Spectral"))) + scale_y_continuous(name = NULL, breaks = seq(7, 1, -1), labels = c("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")) + scale_x_continuous(name = NULL, breaks = MonthLabels$meanWkofYr, labels = MonthLabels$month, expand = c(0,0)) + facet_wrap(~Year, ncol = 1, strip.position = "right") + theme(panel.background = element_blank(), panel.border = element_blank(), strip.background = element_blank(), strip.text = element_text(size = 13, face = "plain", color = "black"), axis.line = element_line(colour = "black", size = 0.25), axis.title = element_text(size = 10, face = "plain", color = "black"), axis.text = element_text(size = 10, face = "plain", color = "black")) ``` # 2.`geom_tile()` 使用R中`ggplot2`包的`geom_tile()`函数,借助`facet_wrap()`函数分面,就可以绘制如图6-2-2(b)所示的以月为单位的日历图,具体代码如下所示。 ```{r} label_mons <- c("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec") label_wik <- c("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun") dat19 <- dat[Year == 2017, list(date, ValueCol, month, week) ][, ':='(weekday = as.integer(strftime(date, "%u")), # 周数 yearmonth = strftime(date, "%m%Y"), # 月数 day = strftime(date, "%d")) # 天数 ][, ':='(monthf = factor(x = month, levels = as.character(1:12), labels = label_mons, ordered = TRUE), weekdayf = factor(x = weekday, levels = 1:7, labels = label_wik, ordered = TRUE), yearmonthf = factor(x = yearmonth)) ][, ':='(monthweek = 1 + week - min(week)), by = .(monthf)] # 分组聚合 ``` ```{r} ggplot(dat19, aes(weekdayf, monthweek, fill = ValueCol)) + geom_tile(color = "white") + geom_text(aes(label = day), size = 3) + scale_fill_gradientn(colours = rev(brewer.pal(11, "Spectral"))) + facet_wrap(~monthf, nrow = 3) + scale_y_reverse(name = "Week of the month") + xlab("Day") + theme(strip.text = element_text(size = 11, face = "plain", color = "black"), panel.grid = element_blank()) ``` ================================================ FILE: 2020年/2020.12.05日历/日历教程.md ================================================ ## 前言 前两天给大家派送了小编自己定制的2021年日历和月历,看到好多读者下载了,小编表示很欣慰😁。上期推送可见:[R可视乎|2021年日历大派送](https://mp.weixin.qq.com/s?__biz=MzI1NjUwMjQxMQ==&mid=2247487678&idx=1&sn=4ddebccf2214e8e20a2a798ab23d002f&chksm=ea24ef5add53664c274d47a677804251052135c609cd6207e17c94b49ed6b7908321c8b7890f&token=1431845296&lang=zh_CN#rd) 今天来说说这个包吧,非常简单,比起`ggplot2包`绘制日历要简单的多。 ## R中的年历图 该软件包非常易容易使用,因为它仅包含一个命名函数`calendR`。默认情况下,如果未指定任何参数,则该函数将以**横向形式**创建**当年的日历**,并且所有文本将**使用系统的语言**,如下所示: ```{r message=FALSE, warning=FALSE} # install.packages("calendR") #直接install安装包 library(calendR) calendR() # 默认为当前年份 ``` ![](https://imgkr2.cn-bj.ufileos.com/4ff54b53-cba3-4bfa-8855-770096aed79d.jpg?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=gml5s7P6A4jqQATn1kadTtRImnc%253D&Expires=1608013809) 如果不希望日历使用操作系统的语言,则可以对其进行修改。例如,使用英语: ```{r} Sys.setlocale("LC_ALL","English") ``` 如果想创建其他年份的年度日历图,则可以在`year`参数上设定,如下所示: ```{r eval=FALSE, include=FALSE} calendR(year = 2021) ``` ### 日历周开始的设定 默认情况下,日历的周数将从星期日开始。设定参数`start="M"`可以获得从星期一开始日历图。 ```{r} calendR(year = 2021, start = "M") ``` ![](https://imgkr2.cn-bj.ufileos.com/cc39ef13-5589-476a-8c61-a61b6faa4f2e.jpg?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=mu8GKTP6cC4RG7vsi2AKz708EhA%253D&Expires=1608013834) ### 为日子增添色彩 `special.days`参数可以为指定的日期添加颜色,`special.col`设置颜色,`low.col`设置其他日期的颜色。 比如下面就是将第9,19等日子设置为特定时间,其颜色为淡蓝色,其他颜色设置为白色。 ```{r} calendR(year = 2021, start = "M", special.days = c(9, 19, 56, 79, 102, # Days to color 126, 257, 300, 342), special.col = "lightblue", # Color of the specified days low.col = "white") # Background color of the rest of the days ``` ![](https://imgkr2.cn-bj.ufileos.com/679fe6e8-6bfa-4d08-ab4e-1c8c5e57461d.jpg?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=mu%252B%252BgQHoZAcTbjr3uPtI1ZepZPY%253D&Expires=1608013854) > **技巧**:如果要突出日历中所有的周末,可以将`special.days`参数设置为`"weekend"`,此快捷方式将立即为它们全部着色。 ```{r} calendR(year = 2025, start = "M", special.days = "weekend") # Color all weekends ``` ![](https://imgkr2.cn-bj.ufileos.com/2a0d3258-eac2-43a3-a7ba-45f513feb48c.jpg?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=H2lVusnh33GCFRMU7hq7RFsg9iI%253D&Expires=1608013868) 为了添加多个事件,您将需要创建一个NA值向量,该向量的长度与相应年份的天数相同。然后将事件添加到相应的日期,你需要在`special.days`参数中指定。 ```{r} events <- rep(NA, 365) # Set the corresponding events events[40:45] <- "Trip" events[213:240] <- "Holidays" events[252] <- "Birthday" events[359] <- "Christmas" # Creating the calendar with a legend calendR(year = 2025, special.days = events, special.col = c("pink", "lightblue", # Colors "lightgreen", "lightsalmon"), legend.pos = "right") # Legend to the right ``` ![](https://imgkr2.cn-bj.ufileos.com/dfd4d4c3-a806-4c1b-b790-f7e0c9e94ca1.jpg?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=L%252FLyY8DPPAQS8IeNfMybOV0ttTk%253D&Expires=1608013883) ## R中的月历图 年度日历前面描述的功能也可用于月度日历中。但是月度日历还可以将文本添加到每月的某几天中。 为了创建月度日历,你需要指定年份和月份。 ```{r} calendR(year = 2021, month = 8) ``` ![](https://imgkr2.cn-bj.ufileos.com/b9c9b5e2-1f38-4967-86a8-5ffd1657785d.jpg?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=%252FQBfqHVceMMdCIcefdoFM%252Bp%252BgEY%253D&Expires=1608013893) ### 为日子增添色彩 与前面相同,使用`special.days`参数给指定日期加上颜色。 ```{r} calendR(year = 2021, month = 8, special.days = c(1, 9, 12, 23, 28), special.col = "#bfe2f2", low.col = "white") ``` ### 在日子里添加文字 使用月度日历图时,可以使用`text`参数向日期添加一些文本,并使用参数`text.pos`指定其位置。使用`text.size`和`text.col`参数修改文本的大小和颜色。 ```{r} calendR(year = 2021, month = 8, # Year and month start = "M", # Start the week on Monday text = c("Running", "Running", # Add text (only for monthly calendars) "Class"), text.pos = c(5, 16, 25), # Days of the month where to put the texts text.size = 4.5, # Font size of the text text.col = 4) # Color of the texts ``` ![](https://imgkr2.cn-bj.ufileos.com/f7315f70-bc22-47f8-91a8-8eba7c2f1c86.jpg?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=9V2XPe84pqaIZ7j7Dl8w4%252FXjVUs%253D&Expires=1608013907) ### 添加月相 设置`lunar = TRUE`可以将月相添加到其日期中。`lunar.col`参数设置隐藏区域的颜色,`lunar.size `设置大小。 ```{r} calendR(month = 2, lunar = TRUE, # Add moons to the calendar lunar.col = "gray60", # Color of the non-visible area of the moons lunar.size = 7) # Size of the moons ``` ![](https://imgkr2.cn-bj.ufileos.com/1cc52168-4064-491c-ba8d-1192386950b6.jpg?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=mOBSYAaXy%252F27GUVhb7fes2z2CvU%253D&Expires=1608013914) ## 学术日历 使用`start_date`和`end_date`创建学术日历。如果你想设置某个时间段(下面是2020年9月-2021年5月31日)的日历,非常使用科研人员,学生。请参阅以下示例: ```{r} calendR(start_date = "2020-09-01", # Custom start date end_date = "2021-05-31", # Custom end date start = "M", # Start the weeks on Monday mbg.col = 4, # Color of the background of the names of the months months.col = "white", # Color text of the names of the months special.days = "weekend", # Color the weekends special.col = "lightblue", # Color of the special.days lty = 0, # Line type bg.col = "#f4f4f4", # Background color title = "Academic calendar 2020-2021", # Title title.size = 30, # Title size orientation = "p") # Vertical orientation ``` ![](https://imgkr2.cn-bj.ufileos.com/87407c79-7a9a-4b88-9237-645d3284824d.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=FxuzUzaVlw2XTdNIiXqMNz8Beoo%253D&Expires=1608013924) > 当然,我觉得打印出来可能效果更好用吧。这里只是给出一个简单的例子,你可以在这个基础上加上背景以及你喜欢的颜色,可以继续往下看。 ## 私人定制 接下来,就是给日历加了背景以及根据**直男审美**把其他颜色进行了调整。下面给出上次大家说还不错的日历的源代码(具体pdf版本可在公众号中回复“**日历**”免费获得)。 > 可以使用`pdf = TRUE`将日历进行导出(默认为A4格式)。可以在`doc_name`参数中指定生成的PDF文件的名称。此外,你可以在几种纸张尺寸之间进行选择以保存日历,从"A6"到,"A0"。但是注意,可能需要微调一些字体尺寸来获得所需的输出。 如果想制作自己的日历,只需修改img的图片,存储的路径(默认在**我的文档**里)。 ### 日历 ```{r} img <- "C:/Users/ZLL/Desktop/5.jpg" calendR(year = 2021, start = "M", title.col = "white", # Weeks start on Monday mbg.col = "#cd853f", # Background color of the month names months.col = "white", # Color of the text of the month names weeknames.col = "white", special.days = "weekend", # Color the weekends special.col = "#a9a9a9", # Color of the special.days lty = 0, # Line type (no line) weeknames = c("Mo", "Tu", # Week names "We", "Th", "Fr", "Sa", "Su"), title.size = 40, # Title size orientation = "p", bg.img = img, pdf = TRUE, doc_name = "My_calendar_brown" ) ``` ![](https://imgkr2.cn-bj.ufileos.com/e618a4ce-2ec8-4669-bae7-47a07cdf624d.jpg?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=blpbAmUFbNBMRoDDQLID3bRXz7A%253D&Expires=1608013937) ### 月历 这里和日历区别最大的点就是:月历要把每个月都输出,可以使用`sapply`函数,把所有月份输出。前面的`invisible`指的是:不显示图片(显示的话太费事了!保存再看更快)。 最后使用`paste0()`将字符串进行粘合(**这个方法非常好用!**),而这里的i是变化的,所以最后生成的pdf文件名不一样但很有规律(除了i不一样)。 ```{r} img <- "C:/Users/ZLL/Desktop/5.jpg" invisible(sapply(1:12 , function(i) calendR(year = 2021,month = i, pdf = TRUE, title.col = "white", # Weeks start on Monday mbg.col = "#cd853f", # Background color of the month names months.col = "white", # Color of the text of the month names weeknames.col = "white", special.days = "weekend", # Color the weekends special.col = "gray60", # Color of the special.days lty = 0, # Line type (no line) bg.img = img, doc_name = file.path("C:\\Users\\ZLL\\Documents\\calendar", paste0("Calendar(gray)_2021_", i)))) ) ``` ![](https://imgkr2.cn-bj.ufileos.com/02f9a33d-7bc6-48c9-810d-8cdcbd749ff5.jpg?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=iiPYDJAkD5Ur%252F88xqhLUSpkuJKA%253D&Expires=1608013946) ### 拓展阅读 其他相关资料,小编收集了一些,想继续研究的可见: [Calendar plot in R using ggplot2](https://r-coder.com/calendar-plot-r/ "Calendar plot in R using ggplot2") [对应的github](https://rdrr.io/github/houyunhuang/ggcor/man/ "对应的github") [calendar详细介绍](https://cran.r-project.org/web/packages/calendar/calendar.pdf "calendar详细介绍") >> 各位可视化爱好者可以根据教程设置私人化日历,也欢迎后台和小编联系,分享你制作的日历,我们可以制作一期私人日历展示活动! 对应代码与相关数据,请在我的github中获取(文末原文)。喜欢请**一键三连,创作不易,感恩不尽**😄。 ================================================ FILE: 2020年/2020.12.05日历/日历教程.rmd ================================================ --- title: "Calendar plot in R using ggplot2" author: "庄亮亮" date: "`r Sys.Date()`" output: prettydoc::html_pretty: theme: cayman highlight: github vignette: > %\VignetteIndexEntry{Vignette Title} %\VignetteEncoding{UTF-8} %\VignetteEngine{knitr::rmarkdown} editor_options: chunk_output_type: console --- ## 前言 前两天给大家派送了小编自己定制的2021年日历和月历,看到好多读者下载了,小编表示很欣慰😁。上期推送可见:[R可视乎|2021年日历大派送](https://mp.weixin.qq.com/s?__biz=MzI1NjUwMjQxMQ==&mid=2247487678&idx=1&sn=4ddebccf2214e8e20a2a798ab23d002f&chksm=ea24ef5add53664c274d47a677804251052135c609cd6207e17c94b49ed6b7908321c8b7890f&token=1431845296&lang=zh_CN#rd) 今天来说说这个包吧,非常简单,比起`ggplot2包`绘制日历要简单很多。 ## R中的年历图 该软件包非常易容易使用,因为它仅包含一个命名函数`calendR`。默认情况下,如果未指定任何参数,则该函数将以横向形式创建当年的日历,并且所有文本将使用系统的语言,如下所示: ```{r message=FALSE, warning=FALSE} # install.packages("calendR") #直接install安装包 library(calendR) calendR() # 默认为当前年份 ``` 如果您不希望日历使用操作系统的语言,则可以对其进行修改。例如,如果您希望日历使用英语,则在执行calendR之前输入: ```{r} Sys.setlocale("LC_ALL","English") ``` 如果您希望创建其他年份的年度日历图,则可以在`year`参数上设定,如下所示: ```{r eval=FALSE, include=FALSE} calendR(year = 2021) ``` ### 日历周开始的设定 默认情况下,日历的周数将从星期日开始。设定参数`start="M"`可以获得从星期一开始日历图。 ```{r} calendR(year = 2021, start = "M") ``` ### 为日子增添色彩 `special.days`参数可以为指定的日期添加颜色,`special.col`设置颜色,`low.col`设置其他日期的颜色。 比如下面就是将第9,19等日子设置为特定时间,其颜色为淡蓝色,其他颜色设置为白色。 ```{r} calendR(year = 2021, start = "M", special.days = c(9, 19, 56, 79, 102, # Days to color 126, 257, 300, 342), special.col = "lightblue", # Color of the specified days low.col = "white") # Background color of the rest of the days ``` > **技巧**:如果要突出日历中所有的周末,可以将`special.days`参数设置为`"weekend"`,此快捷方式将立即为它们全部着色。 ```{r} calendR(year = 2025, start = "M", special.days = "weekend") # Color all weekends ``` 为了添加多个事件,您将需要创建一个NA值向量,该向量的长度与相应年份的天数相同。然后将事件添加到相应的日期,你需要在`special.days`参数中指定。 ```{r} events <- rep(NA, 365) # Set the corresponding events events[40:45] <- "Trip" events[213:240] <- "Holidays" events[252] <- "Birthday" events[359] <- "Christmas" # Creating the calendar with a legend calendR(year = 2025, special.days = events, special.col = c("pink", "lightblue", # Colors "lightgreen", "lightsalmon"), legend.pos = "right") # Legend to the right ``` ## R中的月历图 年度日历前面描述的功能也可用于月度日历中。但是月度日历还可以将文本添加到每月的某几天中。 为了创建月度日历,您需要指定年份和月份,如下所示: ```{r} calendR(year = 2021, month = 8) ``` ### 为日子增添色彩 与前面相同,使用`special.days`参数给指定日期加上颜色。 ```{r} calendR(year = 2021, month = 8, special.days = c(1, 9, 12, 23, 28), special.col = "#bfe2f2", low.col = "white") ``` ### 在日子里添加文字 使用月度日历图时,可以使用`text`参数向日期添加一些文本,并使用参数`text.pos`指定其位置。使用`text.size`和`text.col`参数修改文本的大小和颜色。 ```{r} calendR(year = 2021, month = 8, # Year and month start = "M", # Start the week on Monday text = c("Running", "Running", # Add text (only for monthly calendars) "Class"), text.pos = c(5, 16, 25), # Days of the month where to put the texts text.size = 4.5, # Font size of the text text.col = 4) # Color of the texts ``` ### 添加月相 设置`lunar = TRUE`可以将月相添加到其日期中。`lunar.col`参数设置隐藏区域的颜色,`lunar.size `设置大小。 ```{r} calendR(month = 2, lunar = TRUE, # Add moons to the calendar lunar.col = "gray60", # Color of the non-visible area of the moons lunar.size = 7) # Size of the moons ``` ## 学术日历 使用`start_date`和`end_date`创建学术日历。如果你想设置某个时间段(下面是2020年9月-2021年5月31日)的日历,非常使用科研人员。请参阅以下示例: ```{r} calendR(start_date = "2020-09-01", # Custom start date end_date = "2021-05-31", # Custom end date start = "M", # Start the weeks on Monday mbg.col = 4, # Color of the background of the names of the months months.col = "white", # Color text of the names of the months special.days = "weekend", # Color the weekends special.col = "lightblue", # Color of the special.days lty = 0, # Line type bg.col = "#f4f4f4", # Background color title = "Academic calendar 2020-2021", # Title title.size = 30, # Title size orientation = "p") # Vertical orientation ``` > 当然,我觉得打印出来可能效果更好用吧。这里只是给出一个简单的例子,你可以在这个基础上加上背景以及你喜欢的颜色,可以继续往下看。 ## 私人定制 接下来,这里就是给日历加了背景以及根据**直男审美**把其他颜色进行了调整。下面给出上次大家说还不错的日历的源代码(具体pdf版本可在公众号中回复“日历”免费获得)。 > 可以使用`pdf = TRUE`将日历进行导出(默认为A4格式)。可以在`doc_name`参数中指定生成的PDF文件的名称。此外,你可以在几种纸张尺寸之间进行选择以保存日历,从"A6"到,"A0"。但是注意,可能需要微调一些字体尺寸来获得所需的输出。 ### 日历 ```{r} img <- "C:/Users/ZLL/Desktop/wechat/庄闪闪原创/R/R可视乎/2020.11.13日历/wechat/5.jpg" calendR(year = 2021, start = "M", title.col = "white", # Weeks start on Monday mbg.col = "#cd853f", # Background color of the month names months.col = "white", # Color of the text of the month names weeknames.col = "white", special.days = "weekend", # Color the weekends special.col = "#a9a9a9", # Color of the special.days lty = 0, # Line type (no line) weeknames = c("Mo", "Tu", # Week names "We", "Th", "Fr", "Sa", "Su"), title.size = 40, # Title size orientation = "p", bg.img = img, pdf = TRUE, doc_name = "My_calendar_brown" ) ``` ### 月历 这里和日历区别最大的点就是:月历要把每个月都输出,可以使用`sapply`函数,把所有月份输出。前面的`invisible`指的是:不显示图片(太费事了!保存再看更快)。 最后使用`paste0()`将字符串进行粘合(这个方法非常好用!),而这里的i是变化的,所以最后生成的pdf文件名不一样但很有规律。 ```{r} img <- "C:/Users/ZLL/Desktop/5.jpg" invisible(sapply(1:12 , function(i) calendR(year = 2021,month = i, pdf = TRUE, title.col = "white", # Weeks start on Monday mbg.col = "#cd853f", # Background color of the month names months.col = "white", # Color of the text of the month names weeknames.col = "white", special.days = "weekend", # Color the weekends special.col = "gray60", # Color of the special.days lty = 0, # Line type (no line) bg.img = img, doc_name = file.path("C:\\Users\\ZLL\\Documents\\calendar", paste0("Calendar(gray)_2021_", i)))) ) ``` ### 拓展阅读 其他相关资料,小编收集了一些,想继续研究的可见: [Calendar plot in R using ggplot2](https://r-coder.com/calendar-plot-r/ "Calendar plot in R using ggplot2") [对应的github](https://rdrr.io/github/houyunhuang/ggcor/man/ "对应的github") [calendar详细介绍](https://cran.r-project.org/web/packages/calendar/calendar.pdf "calendar详细介绍") ================================================ FILE: 2020年/2020.12.07瀑布图/Facting_Data.csv ================================================ X_Axis,60,55,50,45,40,35,30,25 360,7.6821,7.3053,6.0619,7.6628,8.3848,9.2971,9.2372,8.6967 370,7.1166,7.0108,6.5378,7.7374,8.4002,9.159,9.0612,7.8567 380,6.2423,6.3366,6.1613,6.9001,7.4425,8.1681,7.7771,6.9062 390,5.3379,5.5059,5.4587,5.8385,6.2378,6.7344,6.3799,5.7448 400,4.4369,4.5943,4.5685,4.7075,4.9636,5.3273,5.0153,4.4864 410,3.5337,3.6765,3.6402,3.7,3.8173,4.1257,3.8898,3.4693 420,2.8664,3.0402,3.0192,3.0142,3.0933,3.3515,3.1961,2.8586 430,2.4889,2.7031,2.677,2.6541,2.7015,2.9365,2.8073,2.5205 440,2.259,2.4977,2.4587,2.4136,2.4313,2.6138,2.5083,2.261 450,2.1903,2.4267,2.369,2.2875,2.259,2.4194,2.3193,2.0908 460,2.2336,2.4609,2.3726,2.2276,2.1406,2.2789,2.1713,1.9664 470,2.4132,2.6218,2.4909,2.252,2.0713,2.1753,2.0677,1.8747 480,2.8172,2.9937,2.7968,2.3905,2.0528,2.1075,1.9865,1.8026 490,3.2794,3.4094,3.1387,2.5632,2.0549,2.0669,1.931,1.759 500,4.0475,4.1306,3.7575,2.9351,2.1385,2.0811,1.909,1.7449 510,5.1939,5.2194,4.7275,3.5788,2.3427,2.1603,1.9435,1.7703 520,6.4268,6.4104,5.8418,4.4074,2.6653,2.3288,2.0293,1.8465 530,7.6299,7.5689,6.9601,5.3072,3.0684,2.5597,2.1563,1.9548 540,8.603,8.5318,7.9234,6.1732,3.503,2.8177,2.3077,2.0799 550,9.462,9.3866,8.7283,6.9871,3.948,3.0762,2.4634,2.2032 560,10.2074,10.0775,9.4402,7.7211,4.3929,3.3475,2.6319,2.3239 570,10.4668,10.38,9.7358,8.0937,4.6863,3.5456,2.7499,2.4151 580,10.6801,10.5651,9.9439,8.4002,4.9343,3.7077,2.8533,2.4826 590,10.8896,10.8426,10.3084,8.8249,5.2337,3.9041,2.9636,2.5708 600,10.9422,10.9354,10.3768,8.8843,5.266,3.8775,2.9292,2.5464 610,10.5836,10.5202,9.9223,8.3873,4.8423,3.4813,2.6388,2.2992 620,9.4338,9.3364,8.9144,7.0977,3.8649,2.7702,2.1032,1.8811 630,7.7169,7.6263,7.1268,5.3149,2.7358,1.9857,1.5521,1.4281 640,5.4489,5.4942,4.9482,3.4699,1.7938,1.3687,1.1237,1.0436 650,3.1697,3.3857,2.9798,2.0419,1.1621,0.9553,0.825,0.7715 660,1.6842,1.9811,1.7494,1.2512,0.827,0.7299,0.659,0.6182 670,0.8644,1.2072,1.0891,0.8506,0.6589,0.6025,0.561,0.5258 680,0.4683,0.8124,0.7565,0.6471,0.5664,0.5217,0.4929,0.4651 690,0.28,0.6149,0.5859,0.5363,0.5038,0.4631,0.4401,0.4158 700,0.1846,0.5057,0.4905,0.47,0.4586,0.4177,0.4004,0.3769 710,0.1373,0.4475,0.4384,0.4311,0.4304,0.3854,0.3691,0.3489 720,0.1095,0.4121,0.4062,0.405,0.4102,0.3616,0.3458,0.3268 730,0.0909,0.3897,0.3852,0.3868,0.3971,0.341,0.3276,0.3103 740,0.0791,0.3749,0.37,0.3743,0.3865,0.3293,0.3159,0.2969 ================================================ FILE: 2020年/2020.12.07瀑布图/瀑布图.rmd ================================================ --- title: "瀑布图" author: - 庄闪闪 documentclass: ctexart keywords: - 中文 - R Markdown output: rticles::ctex: fig_caption: yes number_sections: yes toc: yes editor_options: chunk_output_type: console --- # 简介 **瀑布图(waterfall plot)**用于展示拥有相同的X轴变量数据(如相同的时间序列)、不同的Y 轴离散型变量(如不同的类别变量)和Z轴数值变量,可以清晰地展示不同变量之间的数据变化关系。 # 三维瀑布图 三维瀑布图可以看成是多数据系列三维面积图。R中`plot3D`包的`polygon3D()`函数和`segments3D()`函数可以绘制三维面积图,`lines3D()`函数可以绘制三维曲线图,所以,综合这几个函数可以绘制三维瀑布图,该代码,数据来源[R语言书可视化之美](https://github.com/EasyChart/Beautiful-Visualization-with-R)。 > 这是一本非常棒的R可视化书籍,小编预计在年底进行一次抽奖送这本书的活动,进行期待。 ## 数据介绍 原始数据如下所示:一共39行,9列数据。列表示不同组别,行表示不同x坐标下的数值大小,其中第一列表示x坐标位置。 ```{r message=FALSE, warning=FALSE} library(plot3D) library(RColorBrewer) mydata0 <- read.csv("Facting_Data.csv",check.names =FALSE) head(mydata0) ``` 之后对数据进行一个变换,变成我们绘图所需要的数据格式(这里最费时间了)。因为从行来看,数据是离散的绘制出来效果不是很好,于是使用插值样条函数(`spline`)对原始数据进行插值,变成了300行数据(`n=300`)。这里做了一个for循环,把所有数据都进行了插值,列名存在了`variable`中。`mydata`的前6行结果如下所示: ```{r message=FALSE, warning=FALSE} N <- ncol(mydata0)-1 mydata <- data.frame(x=numeric(),y=numeric(),variable=character()) for(i in 1:N){ newdata <- data.frame(spline(mydata0[,1],mydata0[,i+1],n=300,method= "natural")) #进行插值 newdata$variable<-colnames(mydata0)[i+1] mydata <- rbind(mydata,newdata) } mydata$variable <- as.numeric(mydata$variable) head(mydata) group <- unique(mydata$variable) #每组的名称 M <- length(group) #组数 ``` 进行颜色的处理,以及图片版式的设置。 ```{r message=FALSE, warning=FALSE} gg_color_hue <- function(n) { hues = seq(15, 375, length = n + 1) hcl(h = hues, l = 65, c = 100)[1:n] } colormap <- rev(gg_color_hue(M))#brewer.pal(M,'RdYlGn') pmar <- par(mar = c(5.1, 4.1, 4.1, 6.1)) ``` ## 基础版本 这里先构建一个空的立方体,注意x,y,z轴的坐标范围,所以你得看看原始数据,再定范围,不能一股脑地拿来用。该函数的内部参数,在[R可视乎|等高线](等高线)有提过一些。或者将光标放在该函数,按F1寻求帮助文档,在这里就不做过多解释。 ```{r message=FALSE, warning=FALSE} perspbox(z=as.vector(0),#add=TRUE, xlim=c(20,70),ylim=c(360,750),zlim=c(0,15), ticktype = "detailed",bty = "f",box = TRUE, colkey = FALSE,theta = -110, phi = 20, d=3) ``` 使用`polygon3D`函数和`lines3D`函数将每一类的数据填充到立方体中。这里代码主要还是用base包写的,你可以试试tidyverse流写。 ```{r message=FALSE, warning=FALSE} for (i in 1:M){ df0<-mydata[mydata$variable==group[i],] Ndf<-nrow(df0) df<-rbind(df0,c(df0$x[1],df0$y[Ndf],df0$variable[Ndf])) with(df,polygon3D(x=variable,y=x, z=y, alpha=0.6, col=colormap[i],lwd = 3,add=TRUE,colkey = FALSE)) with(df0,lines3D(x=variable,y=x, z=y, lwd = 0.5,col="black",add=TRUE)) } ``` 在此,就完成这个三位瀑布图了,美观度极佳,可解释性也不错。 ## 添加第四个变量 如果想加入第四变量也是没问题的,具体不再重复。完整代码可见[R语言书可视化之美](https://github.com/EasyChart/Beautiful-Visualization-with-R)或者我的github中。 ```{r echo=FALSE, message=FALSE, warning=FALSE} mydata0<-read.csv("Facting_Data.csv",check.names =FALSE) N<-ncol(mydata0)-1 mydata<-data.frame(x=numeric(),y=numeric(),variable=character()) for (i in 1:N){ newdata<-data.frame(spline(mydata0[,1],mydata0[,i+1],n=300,method= "natural")) newdata$variable<-colnames(mydata0)[i+1] mydata<-rbind(mydata,newdata) } mydata$variable<-as.numeric(mydata$variable) group<-unique(mydata$variable) M<-length(group) #------------ colormap <- colorRampPalette(rev(brewer.pal(11,'Spectral')),alpha = TRUE)(32) #colormap <- colorRampPalette(rev(brewer.pal(7,'RdYlGn')),alpha = TRUE)(32) pmar <- par(mar = c(5.1, 4.1, 4.1, 6.1)) perspbox(z=as.vector(0),#add=TRUE, xlim=c(20,70),ylim=c(360,750),zlim=c(0,15), ticktype = "detailed",bty = "f",box = TRUE, colkey = FALSE,theta = -110, phi = 20, d=3) for (i in 1:M){ df0<-mydata[mydata$variable==group[i],] df<-cbind(df0,z0=rep(0,nrow(df0))) df<-df[df$y>0.05,] with(df,segments3D(x0=variable, y0=x,z0=z0, x1=variable,y1=x, z1=y, colvar =y, alpha=0.5,col=ramp.col(colormap,alpha = 0.9),lwd = 3,add=TRUE,colkey = FALSE)) with(df0,lines3D(x=variable,y=x, z=y, lwd = 1.5,col="black",add=TRUE)) } colkey (col=colormap,clim=range(mydata$y),clab = "Z Value", add=TRUE, length=0.5,side = 4) ``` # 行分面的带填充的曲线图 使用分面图的可视化方法也可以展示瀑布图的数据信息,关于分面图可视化方法我已经在[R可视乎|分面一页多图](https://mp.weixin.qq.com/s?__biz=MzI1NjUwMjQxMQ==&mid=2247484186&idx=1&sn=c913a65f88132b3611e580b0318404d9&chksm=ea24fcfedd5375e87adfc3028850ee4034a0a0d34dd3855cf155b28eea9c71bfedb381d2c9e9&token=1309493585&lang=zh_CN#rd)介绍过。 下面进行行分面的带填充的曲线图绘制,所有数据共用X轴坐标,每个数据类别是用的Y轴坐标。 >相对三维瀑布图,分面瀑布图的**优点**是: 可以更好地展示数据信息,避免不同类别之间数据重叠引起的遮挡问题,但是不能很直接地比较不同类别之间的数据差异。 ## 基础版本 这里不做过多解释,用`geom_area()`绘制面积,用`facet_grid()`进行分面,最后就是对主题进行设置。主题的设置有很多有趣的技巧,以后整理一篇完整的。 ```{r message=FALSE, warning=FALSE} library(reshape2) library(ggplot2) mydata0<-read.csv("Facting_Data.csv",stringsAsFactors=FALSE) colnames(mydata0)<-c("X_Axis",seq(60,25,-5)) mydata<-melt(mydata0,id.vars = "X_Axis") ggplot(mydata,aes(X_Axis,value,fill=variable))+ geom_area(color="black",size=0.25)+ facet_grid(variable~.)+ theme( text=element_text(size=15,face="plain",color="black"), axis.title=element_text(size=10,face="plain",color="black"), axis.text = element_text(size=10,face="plain",color="black"), legend.position="none" ) ``` ## 加入第四个变量 同理,在上图的基础上可以将每个数据的Z变量进行颜色映射,这样有利于比较不同类别之间的数据差异,该图如下所示: ```{r message=FALSE, warning=FALSE} library(RColorBrewer) colormap <- colorRampPalette(rev(brewer.pal(11,'Spectral')))(32) mydata0<-read.csv("Facting_Data.csv",stringsAsFactors=FALSE) N<-ncol(mydata0)-1 colnames(mydata0)<-c("X_Axis",seq(60,25,-5)) mydata<-data.frame(x=numeric(),y=numeric(),variable=character()) for (i in 1:N){ newdata<-data.frame(spline(mydata0[,1],mydata0[,i+1],n=300,method= "natural")) newdata$variable<-colnames(mydata0)[i+1] mydata<-rbind(mydata,newdata) } mydata$variable<-factor(mydata$variable,levels=seq(60,25,-5)) ggplot(mydata,aes(x,y,group=variable))+ geom_bar(aes(fill=y),color=NA,size=0.25,stat="identity")+ geom_line(color="black",size=0.5)+ scale_fill_gradientn(colours=colormap)+ facet_grid(variable~.)+ theme( text=element_text(size=15,face="plain",color="black"), axis.title=element_text(size=10,face="plain",color="black"), axis.text = element_text(size=10,face="plain",color="black"), legend.position="right" ) ``` ================================================ FILE: 2020年/2020.12.21esquisse包/esquisse包.md ================================================ ## 简介 最近学习可视化时发现了一个好用的包,可以直接使用“拖拽”的方式生成绘图,**不需要写任何代码!** 这个包是esquisse,具体介绍可以见[对应的github](https://github.com/dreamRs/esquisse "esquisse包")。这是建立在[ggplot2包](https://github.com/tidyverse/ggplot2 "ggplot2包")基础上设计的。 你可以通过生成ggplot2图表以交互方式探索esquisse环境中的数据。入门门槛极低,有点类似tableau的感觉。 ## 安装 可以通过CRAN直接下载,也可以通过github中下载,然后将其进行加载即可。 ``` # From CRAN install.packages("esquisse") # remotes::install_github("dreamRs/esquisse") #Load the package in R library(esquisse) ``` ## 使用方式 使用方式由以下两种,推荐使用窗口操作,因为不用记住代码,也很好找到。 ### 1. 输入以下代码 ``` esquisse::esquisser() #helps in launching the add-in ``` ![代码打开界面](https://imgkr2.cn-bj.ufileos.com/96e53f2f-a5cb-45a5-b674-19b07e840e7a.gif?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=dd6c5rVWW8v17z%252BdHGvcGZLF4xw%253D&Expires=1608642502) ### 2. 窗口操作 通过RStudio菜单启动插件(推荐) >**注意**:如果您的环境中没有data.frame,则可以使用ggplot2中的数据集。推荐还是自己前面已经导入数据了,界面才会有显示可以使用的数据。 - 加载该包之后,在窗口的左上方有个Addins,点击打开找到对应包的函数点击即可。 ![打开方式1](https://imgkr2.cn-bj.ufileos.com/46e23df4-76a5-422f-aa6f-56c0b7965fe6.jpg?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=Io88OxOXooyRyqfjqKFDl%252Bo%252BdL8%253D&Expires=1608642673) ## 窗口详细说明 导入自己的数据,就可以对其进行分析了!这里咱们对`iris`数据作为例子。窗口都是互动形式的,你可以根据自己所需进行绘制对应的图形,不需要输入代码。我们给出操作图,如下所示。之后对界面下面的四个小窗口进行详细介绍。 ![具体操作](https://imgkr2.cn-bj.ufileos.com/31b82c98-1553-4a8f-9848-80c9f0e182c6.gif?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=h%252FoeHlvI%252F1S6VbTLI6Cm0RNZWkc%253D&Expires=1608646813) ### Lables&Title ![添加各种标签题目](https://imgkr2.cn-bj.ufileos.com/771f7c69-927e-4ca8-b008-a86c33c3a336.jpg?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=gr0ZI5D53%252BqEXYxkNkJQFGsvJg0%253D&Expires=1608644653) ### Plot options 可以设计geom_xxx中的各种参数(颜色,尺寸),legend摆放的位置,主题形式等等; ![设计各种参数](https://imgkr2.cn-bj.ufileos.com/d23c37df-10fd-49f9-9aa0-cceb3d26b255.jpg?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=u8pdjVoXk0IW3v3qrd%252FEX2Jt%252B44%253D&Expires=1608643705) ### Data ![改变输入数据的范围](https://imgkr2.cn-bj.ufileos.com/56bb4d45-fb81-4f95-be79-fc99c9d6cf5d.jpg?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=9mBnHsMSJhSjGVJoEYDIlJ%252B5fkQ%253D&Expires=1608644852) ### Export&code 这可以显示操作后图对应的ggplot的代码!(非常管用!)你可以按( Insert code in script )将自动导入你的代码中。 ![代码、图片导出](https://imgkr2.cn-bj.ufileos.com/24149f1d-b729-4508-8061-38f5851a0311.jpg?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=s6mAPWoNrQhhTJvVS0bC%252BZ2r2%252F0%253D&Expires=1608643830) 当然可以导出pptx或者png格式,操作如下所示: ![导出pptx格式,在线修改图片](https://imgkr2.cn-bj.ufileos.com/b83417e0-9749-473d-9fd5-44e220f057a5.gif?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=hu3nMbXOCx2Qg%252FyF77XOGsn2r%252Bs%253D&Expires=1608644529) > **注意**:导出pptx可能还需要两个包(`rvg , officer`),你可以先安装,在使用界面操作导出pptx格式。 pptx格式可以修改图片内部的任何地方,非常方便。 ## 小编有话说 - 这个包对想学习ggplot语法的读者来说,也非常合适。可以直接导出你做图的代码,根据代码反过来学习对应语法,从实践中学习也是不错的选择。 - 小编最近在准备毕业的开题答辩,书籍翻译和论文撰写,所以更新的比较慢。不过可视化系列一直在逐步推进,已经准备几期了初稿了,但是感觉不够系统,所以还打算打磨下再发出来。[上次里的flag](https://mp.weixin.qq.com/s?__biz=MzI1NjUwMjQxMQ==&mid=2247487940&idx=1&sn=02e087fdb8c7ec192ea3297dadda702d&chksm=ea24ee20dd536736997620b3a7b6d008475503a8997476d97941e71cc5d6adab9549a8f3b9a5&token=1926271128&lang=zh_CN#rd)也会继续下去的,尽情期待。也欢迎加小编微信一起沟通交流,也感谢各位博士大大们对小编的建议和厚爱❤。 ================================================ FILE: 2020年/2020.12.24Mandalas/Mandalas/.Rproj.user/9B97F8EE/sources/prop/34FB05E2 ================================================ { "tempName": "Untitled1", "cursorPosition": "14,3", "scrollLine": "0", "chunk_output_type": "console" } ================================================ FILE: 2020年/2020.12.24Mandalas/Mandalas/.Rproj.user/9B97F8EE/sources/prop/5C967418 ================================================ { "cursorPosition": "16,98", "scrollLine": "0" } ================================================ FILE: 2020年/2020.12.24Mandalas/Mandalas/.Rproj.user/9B97F8EE/sources/prop/B38F6FEB ================================================ { "chunk_output_type": "console", "cursorPosition": "7,14", "scrollLine": "0" } ================================================ FILE: 2020年/2020.12.24Mandalas/Mandalas/.Rproj.user/9B97F8EE/sources/prop/D25723BC ================================================ { "cursorPosition": "63,0", "scrollLine": "49" } ================================================ FILE: 2020年/2020.12.24Mandalas/Mandalas/.Rproj.user/9B97F8EE/sources/prop/INDEX ================================================ C%3A%2FUsers%2FZLL%2FDesktop%2Fwechat%2F%E5%BA%84%E9%97%AA%E9%97%AA%E5%8E%9F%E5%88%9B%2FR%2F%E6%9C%AA%E5%81%9A%E6%8E%A8%E9%80%81%2F2020.12.05%E5%88%87%E9%9D%A2%E5%9B%BE%2F%E5%88%87%E9%9D%A2%E5%9B%BE.rmd="5C967418" C%3A%2FUsers%2FZLL%2FDesktop%2Fwechat%2F%E5%BA%84%E9%97%AA%E9%97%AA%E5%8E%9F%E5%88%9B%2FR%2F%E6%9C%AA%E5%81%9A%E6%8E%A8%E9%80%81%2F2020.12.07%E5%B3%B0%E5%B3%A6%E5%9B%BE%2F%E5%B3%B0%E5%B3%A6%E5%9B%BE.rmd="B38F6FEB" F%3A%2F%E6%88%91%E7%9A%84%E4%B9%A6%E7%B1%8D%2FR%E4%B9%A6%E7%B1%8D%2FR%E8%AF%AD%E8%A8%80%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96%E4%B9%8B%E7%BE%8E%2F%E7%AC%AC4%E7%AB%A0%20%E6%95%B0%E6%8D%AE%E5%85%B3%E7%B3%BB%E5%9E%8B%E5%9B%BE%E8%A1%A8%2F%E5%9B%BE4-7-3%20%E5%B3%B0%E5%B3%A6%E5%9B%BE.R="D25723BC" F%3A%2F%E6%88%91%E7%9A%84%E5%AD%A6%E4%B9%A0%2FR%2FR_example%2F2020.12.24Mandalas%2FMandalas%2FMandalas.rmd="34FB05E2" ================================================ FILE: 2020年/2020.12.24Mandalas/Mandalas/.Rproj.user/9B97F8EE/sources/s-75E8F375/17CC9D9C ================================================ { "id": "17CC9D9C", "path": "F:/我的学习/R/R_example/2020.12.24Mandalas/Mandalas/Mandalas.rmd", "project_path": "Mandalas.rmd", "type": "r_markdown", "hash": "0", "contents": "", "dirty": false, "created": 1608789639023.0, "source_on_save": false, "relative_order": 1, "properties": { "tempName": "Untitled1", "cursorPosition": "14,3", "scrollLine": "0", "chunk_output_type": "console" }, "folds": "", "lastKnownWriteTime": 1608790458, "encoding": "UTF-8", "collab_server": "", "source_window": "", "last_content_update": 1608790461297, "read_only": false, "read_only_alternatives": [] } ================================================ FILE: 2020年/2020.12.24Mandalas/Mandalas/.Rproj.user/9B97F8EE/sources/s-75E8F375/17CC9D9C-contents ================================================ --- title: "Mandalas" author: "庄闪闪" date: "`r Sys.Date()`" output: prettydoc::html_pretty: theme: cayman highlight: github vignette: > %\VignetteIndexEntry{Vignette Title} %\VignetteEncoding{UTF-8} %\VignetteEngine{knitr::rmarkdown} editor_options: chunk_output_type: console --- ## 参考文献 [Mandalas](https://github.com/aschinchon/mandalas) [R-blogger-Mandalas](https://www.r-bloggers.com/2018/02/mandalas/) [Mandalas](https://fronkonstin.com/2018/02/14/mandalas/) [Inspired by your work I created this](https://hrafnkelle.github.io/p5mandalas/) ## 简介 - 以(0,0)为中心的单位圆中获得n个等距点 - 对所有这些点重复该过程,再次获得每个点周围的n个点; 半径按比例缩放 - 舍弃了以前的(父)n分 我反复地重复这些步骤。如果我从n个点开始,迭代k次,最后我得到nk个点。然后,我计算它们的Voronoi镶嵌,并用ggplot绘制。 ```{r message=FALSE, warning=FALSE} # Load in libraries library(ggplot2) library(dplyr) library(deldir) # Parameters to change as you like iter=5 # Number of iterations (depth) points=8 # Number of points radius=4.8 # Factor of expansion/compression # Angles of points from center angles=seq(0, 2*pi*(1-1/points), length.out = points)+pi/2 # Initial center df=data.frame(x=0, y=0) # Iterate over centers again and again for (k in 1:iter) { temp=data.frame() for (i in 1:nrow(df)) { data.frame(x=df[i,"x"]+radius^(k-1)*cos(angles), y=df[i,"y"]+radius^(k-1)*sin(angles)) %>% rbind(temp) -> temp } df=temp } # Obtain Voronoi regions df %>% select(x,y) %>% deldir(sort=TRUE) %>% .$dirsgs -> data # Plot regions with geom_segmen data %>% ggplot() + geom_segment(aes(x = x1, y = y1, xend = x2, yend = y2), color="black") + scale_x_continuous(expand=c(0,0))+ scale_y_continuous(expand=c(0,0))+ coord_fixed() + theme(legend.position = "none", panel.background = element_rect(fill="white"), panel.border = element_rect(colour = "black", fill=NA), axis.ticks = element_blank(), panel.grid = element_blank(), axis.title = element_blank(), axis.text = element_blank())->plot plot # Do you like the result? Save it (change the name if you want) ggsave("mandala4.png", height=5, width=5, units='in', dpi=600) ``` ![](1.jpg) ================================================ FILE: 2020年/2020.12.24Mandalas/Mandalas/.Rproj.user/9B97F8EE/sources/s-75E8F375/20B6EE7D ================================================ { "id": "20B6EE7D", "path": null, "project_path": null, "type": "r_source", "hash": "0", "contents": "", "dirty": true, "created": 1608892229988.0, "source_on_save": false, "relative_order": 4, "properties": { "tempName": "Untitled1", "cursorPosition": "30,0", "scrollLine": "15" }, "folds": "", "lastKnownWriteTime": 723401879294118501, "encoding": "", "collab_server": "", "source_window": "", "last_content_update": 1608892231582, "read_only": false, "read_only_alternatives": [] } ================================================ FILE: 2020年/2020.12.24Mandalas/Mandalas/.Rproj.user/9B97F8EE/sources/s-75E8F375/20B6EE7D-contents ================================================ library(ggplot2) # set the `rel_min_height` argument to remove tails ggplot(iris, aes(x = Sepal.Length, y = Species)) + geom_density_ridges(rel_min_height = 0.005) + scale_y_discrete(expand = c(0.01, 0)) + scale_x_continuous(expand = c(0.01, 0)) + theme_ridges() # set the `scale` to determine how much overlap there is among the plots ggplot(diamonds, aes(x = price, y = cut)) + geom_density_ridges(scale = 4) + scale_y_discrete(expand = c(0.01, 0)) + scale_x_continuous(expand = c(0.01, 0)) + theme_ridges() # the same figure with colors, and using the ggplot2 density stat ggplot(diamonds, aes(x = price, y = cut, fill = cut, height = ..density..)) + geom_density_ridges(scale = 4, stat = "density") + scale_y_discrete(expand = c(0.01, 0)) + scale_x_continuous(expand = c(0.01, 0)) + scale_fill_brewer(palette = 4) + theme_ridges() + theme(legend.position = "none") # use geom_density_ridges2() instead of geom_density_ridges() for solid polygons ggplot(iris, aes(x = Sepal.Length, y = Species)) + geom_density_ridges2() + scale_y_discrete(expand = c(0.01, 0)) + scale_x_continuous(expand = c(0.01, 0)) + theme_ridges() ================================================ FILE: 2020年/2020.12.24Mandalas/Mandalas/.Rproj.user/9B97F8EE/sources/s-75E8F375/28FAC3B5 ================================================ { "id": "28FAC3B5", "path": "C:/Users/ZLL/Desktop/wechat/庄闪闪原创/R/未做推送/2020.12.07峰峦图/峰峦图.rmd", "project_path": null, "type": "r_markdown", "hash": "0", "contents": "", "dirty": false, "created": 1608885380862.0, "source_on_save": false, "relative_order": 3, "properties": { "chunk_output_type": "console", "cursorPosition": "7,14", "scrollLine": "0" }, "folds": "", "lastKnownWriteTime": 1608898862, "encoding": "UTF-8", "collab_server": "", "source_window": "", "last_content_update": 1608898863016, "read_only": false, "read_only_alternatives": [] } ================================================ FILE: 2020年/2020.12.24Mandalas/Mandalas/.Rproj.user/9B97F8EE/sources/s-75E8F375/28FAC3B5-contents ================================================ --- title: "峰峦图" author: - 庄闪闪 documentclass: ctexart keywords: - 中文 - R Markdown output: rticles::ctex: fig_caption: yes number_sections: yes toc: yes editor_options: chunk_output_type: console --- # 峰峦图 上次可视化系列说了[瀑布图](https://mp.weixin.qq.com/s?__biz=MzI1NjUwMjQxMQ==&mid=2247487383&idx=1&sn=43e2eaf6b7c6b24510ccadb79e766f07&chksm=ea24f073dd53796546fd4145ded4cddfe8779464ad9d0d674900a65484966cd5c3f6367dcecf&token=1431845296&lang=zh_CN#rd)。它可以用于展示拥有相同的X轴变量数据(如相同的时间序列)、不同的Y轴离散型变量(如不同的类别变量)和Z轴数值变量。 本节使用的**峰峦图**也可以很好地展示瀑布图的数据信息。它们对于可视化随时间或空间分布的变化非常有用。本节主要使用`ggridges`包中的`geom_density_ridges()`进行绘制峰峦图。详细介绍如下: ## 数据结构 这里使用`base`包中的`diamonds`数据集做例子。 ```{r message=FALSE, warning=FALSE} # library library(ggridges) # Ridgeline Plots in 'ggplot2', CRAN v0.5.2 library(ggplot2) # Create Elegant Data Visualisations Using the Grammar of Graphics, CRAN v3.3.2 head(diamonds) ``` ## 绘图教程 ### 基础版本 使用`price`作为x轴, `cut`为y轴,`fill`参数也是设定为`cut`。`geom_density_ridges()`内部全部使用默认参数。使用了ggridges包中的主题`theme_ridges()`。 ```{r message=FALSE, warning=FALSE} ggplot(diamonds, aes(x = price, y = cut, fill = cut)) + geom_density_ridges() + theme_ridges() + theme(legend.position = "none") ``` ### 形状变化 如果不想绘制密度图,则可以使用`stat="binline", bins=20`绘制柱形图,其中`bins=20`表示每格格子大小。为了防止上下图片重叠,这里使用了透明度参数:`alpha=0.6`。 ```{r message=FALSE, warning=FALSE} ggplot(diamonds, aes(x = price, y = cut, fill = cut)) + geom_density_ridges(alpha=0.7, stat="binline", bins=20) + theme_ridges() + theme(legend.position = "none") ``` ### 根据第三变量进行分面 ```{r} ggplot(diamonds, aes(x = price, y = cut,fill = cut)) + geom_density_ridges(alpha=0.7) + facet_wrap(~color) + theme_ridges() + theme(legend.position = "none") ``` ### 加入统计量 通过设置选项`quantile_lines = TRUE`,我们可以使`stat_density_ridges`计算指示分位数的线的位置。 默认情况下,绘制了三行,分别对应于第一,第二和第三四分位数: ```{r} ggplot(diamonds, aes(x = price, y = cut,fill = cut)) + geom_density_ridges(alpha=0.7,quantile_lines = TRUE) + theme_ridges() + theme(legend.position = "none") ``` > **注意**:`quantiles=2`意味着在两个分位数之间的边界上有一条线即,(中位数)。 我们还可以通过切点而不是数字来指定分位数。例如,我们可以指出2.5%和97.5%的尾巴。 ```{r} ggplot(diamonds, aes(x = price, y = cut,fill = cut)) + geom_density_ridges(alpha=0.7,quantile_lines = TRUE,quantiles = c(0.025, 0.975)) + theme_ridges() + theme(legend.position = "none") ``` 使用`stat_density_ridges`,计算`stat(quantile)`,通过分位数进行着色,。 注意,仅当`calc_ecdf = TRUE`时才能计算。 ```{r} ggplot(diamonds, aes(x = price, y = cut,fill = factor(stat(quantile)))) + stat_density_ridges( geom = "density_ridges_gradient", calc_ecdf = TRUE, quantiles = 4, quantile_lines = TRUE) + theme_ridges() + scale_fill_viridis_d(name = "Quartiles") ``` 我们可以使用相同的方法来突出分布的尾部。 ```{r} ggplot(diamonds, aes(x = price, y = cut,fill = factor(stat(quantile)))) + stat_density_ridges( geom = "density_ridges_gradient", calc_ecdf = TRUE, quantiles = c(0.025, 0.975)) + theme_ridges() + scale_fill_manual( name = "Probability", values = c("#FF0000A0", "#A0A0A0A0", "#0000FFA0"), labels = c("(0, 0.025]", "(0.025, 0.975]", "(0.975, 1]") ) ``` 最后,当`calc_ecdf = TRUE`时,我们还可以计算`stat(ecdf)`,它表示该分布的经验累积密度函数。 我们将其概率直接映射到颜色上。 ```{r} ggplot(diamonds, aes(x = price, y = cut,fill = 0.5 - abs(0.5 - stat(ecdf)))) + stat_density_ridges(geom = "density_ridges_gradient", calc_ecdf = TRUE) + scale_fill_viridis_c(name = "Tail probability", direction = -1) ``` ### 加入抖动点 `stat_density_ridges()`还提供了可视化生成分布的原始数据点的选项。可以通过设置`jittered_points = TRUE`实现。为了只管我们这里使用`iris`包。 ```{r} ggplot(iris, aes(x = Sepal.Length, y = Species)) + geom_density_ridges(jittered_points = TRUE)+ theme_ridges() + theme(legend.position = "none") ``` 当然可以将其放在密度函数的下方,通过使用`position = "raincloud"`参数。 ```{r} ggplot(iris, aes(x = Sepal.Length, y = Species)) + geom_density_ridges( jittered_points = TRUE, position = "raincloud", alpha = 0.7, scale = 0.9 ) ``` 我们还可以模拟地毯形式: ```{r} ggplot(iris, aes(x = Sepal.Length, y = Species)) + geom_density_ridges( jittered_points = TRUE, position = position_points_jitter(width = 0.05, height = 0), point_shape = '|', point_size = 3, point_alpha = 1, alpha = 0.7, ) ``` 可以使用ggridges提供的特殊比例来设置抖动点的样式。 首先,`scale_discrete_manual()`可用于制作具有任意形状和比例的图形。 `scale_point_color_hue()`。 ```{r} ggplot(iris, aes(x = Sepal.Length, y = Species, fill = Species)) + geom_density_ridges( aes(point_color = Species, point_fill = Species, point_shape = Species), alpha = .2, point_alpha = 1, jittered_points = TRUE ) + scale_point_color_hue(l = 40) + scale_discrete_manual(aesthetics = "point_shape", values = c(21, 22, 23)) ``` 如果你还想再加入一个变量进行可视化,可以在`geom_density_ridges()`加入,例如:`point_shape = Species, point_fill = Species, point_size = Petal.Length`。 ```{r} ggplot(iris, aes(x = Sepal.Length, y = Species, fill = Species)) + geom_density_ridges( aes(point_shape = Species, point_fill = Species, point_size = Petal.Length), alpha = .2, point_alpha = 1, jittered_points = TRUE ) + scale_point_color_hue(l = 40) + scale_point_size_continuous(range = c(0.5, 4)) + scale_discrete_manual(aesthetics = "point_shape", values = c(21, 22, 23)) ``` 另外一种有趣的可视化是通过`vline_xxx`构造以下图形。 ```{r} ggplot(iris, aes(x = Sepal.Length, y = Species)) + geom_density_ridges( jittered_points = TRUE, quantile_lines = TRUE, scale = 0.9, alpha = 0.7, vline_size = 1, vline_color = "red", point_size = 0.4, point_alpha = 1, position = position_raincloud(adjust_vlines = TRUE) ) ``` ## 其他资料 对于该包的其他有趣函数与可视化可参考以下资料: - [Introduction to ggridges](https://cran.r-project.org/web/packages/ggridges/vignettes/introduction.html "Introduction to ggridges") - [RDocumentation-ggridges](https://www.rdocumentation.org/packages/ggridges/versions/0.5.2 "RDocumentation-ggridges") - [Basic ridgeline plot](https://www.r-graph-gallery.com/294-basic-ridgeline-plot "Basic ridgeline plot") ================================================ FILE: 2020年/2020.12.24Mandalas/Mandalas/.Rproj.user/9B97F8EE/sources/s-75E8F375/4326A9CE ================================================ { "id": "4326A9CE", "path": "C:/Users/ZLL/Desktop/wechat/庄闪闪原创/R/未做推送/2020.12.05切面图/切面图.rmd", "project_path": null, "type": "r_markdown", "hash": "0", "contents": "", "dirty": false, "created": 1608883310237.0, "source_on_save": false, "relative_order": 2, "properties": { "cursorPosition": "16,98", "scrollLine": "0" }, "folds": "", "lastKnownWriteTime": 1606797294, "encoding": "UTF-8", "collab_server": "", "source_window": "", "last_content_update": 1606797294, "read_only": false, "read_only_alternatives": [] } ================================================ FILE: 2020年/2020.12.24Mandalas/Mandalas/.Rproj.user/9B97F8EE/sources/s-75E8F375/4326A9CE-contents ================================================ --- title: "切面图" author: - 庄亮亮 date: "2020/11/30" output: prettydoc::html_pretty: theme: cayman highlight: github --- # 切面图 切面图(slice chart)可以展示四维数据$v=f(x, y,z)$,将前三维数据展现在三维直角坐标系$f(x, y, z)$, 通过对图形的线型、立面、色彩、渲染、光线、视角等的控制,可形象地表现数据四维特性v。任何一个在三维坐标系中绘制的数据体,都可以使用分割得到平行于X-Y、X-Z和Y-Z的三个切面。然后每个切面上的数据点都可以通过3-D 插值获得,如图4-4-1 所示。 在切面图中,$v=f(x, y, z)$ 这个函数对于每一个给定的$(x, y, z)$都对应一个v,然后映射到渐变颜色,那么$v=f(x,y,z)$就可以得到一个有颜色变化(其颜色分布按给定的函数表达式变化)的立体图形。给定$(x,y,z)$中的某个值,就可以得到某一个切面上的颜色分布,根据颜色映射大致可以看出其函数值的变化。在图4-4-1中,展示了$x=0,y=(-4,0,4)$的4个切面颜色变化情况。 ```{r message=FALSE, warning=FALSE} library(grDevices) library(plot3D) library(RColorBrewer) x <- y <- z <- seq(-4, 4, by = 0.2) M <- mesh(x, y, z) #mesh 3d网 R <- with (M, sqrt(x^2 + y^2 + z^2)) p <- sin(2*R) /(R+1e-3) ``` ```{r} colormap <- colorRampPalette(rev(brewer.pal(11,'Spectral')),alpha = TRUE)(32) ``` ```{r} slice3D(x, y, z, colvar = p, facets = FALSE, col = ramp.col(colormap,alpha = 0.9), clab="p vlaue", xs = 0, ys = c(-4, 0, 4), zs = NULL, ticktype = "detailed",bty = "f",box = TRUE, theta = -120, phi = 30, d=3, colkey = list(length = 0.5, width = 1, cex.clab = 1)) ``` ```{r} slicecont3D(x, y, z, colvar = p, facets = FALSE, col = ramp.col(colormap,alpha = 0.9), clab="p vlaue", xs = 0, ys = c(-4, 0, 4), zs = NULL, ticktype = "detailed",bty = "f",box = TRUE, theta = -120, phi = 30, d=3, colkey = list(length = 0.5, width = 1, cex.clab = 1)) ``` ```{r} # save plotting parameters pm <- par("mfrow") pmar <- par("mar") ## ======================================================================= ## Simple slice3D examples ## ======================================================================= par(mfrow = c(2, 2)) x <- y <- z <- seq(-1, 1, by = 0.1) grid <- mesh(x, y, z) colvar <- with(grid, x*exp(-x^2 - y^2 - z^2)) # default is just the panels slice3D (x, y, z, colvar = colvar, theta = 60) # contour slices slicecont3D (x, y, z, ys = seq(-1, 1, by = 0.5), colvar = colvar, theta = 60, border = "black") slice3D (x, y, z, xs = c(-1, -0.5, 0.5), ys = c(-1, 0, 1), zs = c(-1, 0), colvar = colvar, theta = 60, phi = 40) ## ======================================================================= ## coloring on a surface ## ======================================================================= XY <- mesh(x, y) ZZ <- XY$x*XY$y slice3D (x, y, z, xs = XY$x, ys = XY$y, zs = ZZ, colvar = colvar, lighting = TRUE, lphi = 90, ltheta = 0) ## ======================================================================= ## Specifying transparent colors ## ======================================================================= par(mfrow = c(1, 1)) x <- y <- z <- seq(-4, 4, by = 0.2) M <- mesh(x, y, z) R <- with (M, sqrt(x^2 + y^2 + z^2)) p <- sin(2*R) /(R+1e-3) ## Not run: # This is very slow - alpha = 0.5 makes it transparent slice3D(x, y, z, colvar = p, col = jet.col(alpha = 0.5), xs = 0, ys = c(-4, 0, 4), zs = NULL, d = 2) ## End(Not run) slice3D(x, y, z, colvar = p, d = 2, theta = 60, border = "black", xs = c(-4, 0), ys = c(-4, 0, 4), zs = c(-4, 0)) ## ======================================================================= ## A section along a transect ## ======================================================================= data(Oxsat) Ox <- Oxsat$val[, Oxsat$lat > - 5 & Oxsat$lat < 5, ] slice3D(x = Oxsat$lon, z = -Oxsat$depth, y = 1:5, colvar = Ox, ys = 1:5, zs = NULL, NAcol = "black", expand = 0.4, theta = 45, phi = 45) ## ======================================================================= ## isosurf3D example - rather slow ## ======================================================================= par(mfrow = c(2, 2), mar = c(2, 2, 2, 2)) x <- y <- z <- seq(-2, 2, length.out = 15) xyz <- mesh(x, y, z) F <- with(xyz, log(x^2 + y^2 + z^2 + 10*(x^2 + y^2) * (y^2 + z^2) ^2)) # use shading for level = 1 - show triangulation with border isosurf3D(x, y, z, F, level = 1, shade = 0.9, col = "yellow", border = "orange") # lighting for level - 2 isosurf3D(x, y, z, F, level = 2, lighting = TRUE, lphi = 0, ltheta = 0, col = "blue", shade = NA) # three levels, transparency added isosurf3D(x, y, z, F, level = seq(0, 4, by = 2), col = c("red", "blue", "yellow"), clab = "F", alpha = 0.2, theta = 0, lighting = TRUE) # transparency can also be added afterwards with plotdev() ## Not run: isosurf3D(x, y, z, F, level = seq(0, 4, by = 2), col = c("red", "blue", "yellow"), shade = NA, plot = FALSE, clab = "F") plotdev(lighting = TRUE, alpha = 0.2, theta = 0) ## End(Not run) # use of creatisosurf iso <- createisosurf(x, y, z, F, level = 2) head(iso) triangle3D(iso, col = "green", shade = 0.3) ## Not run: # higher resolution x <- y <- z <- seq(-2, 2, length.out = 50) xyz <- mesh(x, y, z) F <- with(xyz, log(x^2 + y^2 + z^2 + 10*(x^2 + y^2) * (y^2 + z^2) ^2)) # three levels isosurf3D(x, y, z, F, level = seq(0, 4, by = 2), col = c("red", "blue", "yellow"), shade = NA, plot = FALSE, clab = "F") plotdev(lighting = TRUE, alpha = 0.2, theta = 0) ## End(Not run) ## ======================================================================= ## voxel3D example ## ======================================================================= par(mfrow = c(2, 2), mar = c(2, 2, 2, 2)) # fast but needs high resolution grid x <- y <- z <- seq(-2, 2, length.out = 70) xyz <- mesh(x, y, z) F <- with(xyz, log(x^2 + y^2 + z^2 + 10*(x^2 + y^2) * (y^2 + z^2) ^2)) voxel3D(x, y, z, F, level = 4, pch = ".", cex = 5) ## ======================================================================= ## rotation ## ======================================================================= plotdev(theta = 45, phi = 0) plotdev(theta = 90, phi = 10) # same using createvoxel - more flexible for coloring vox <- createvoxel(x, y, z, F, level = 4) scatter3D(vox$x, vox$y, vox$z, colvar = vox$y, bty = "g", colkey = FALSE) ## ======================================================================= ## voxel3D to show hypox sites ## ======================================================================= par(mfrow = c(1, 1), mar = c(2, 2, 2, 2)) Hypox <- createvoxel(Oxsat$lon, Oxsat$lat, Oxsat$depth[1:19], Oxsat$val[,,1:19], level = 40, operator = "<") panel <- function(pmat) { # an image at the bottom Nx <- length(Oxsat$lon) Ny <- length(Oxsat$lat) M <- mesh(Oxsat$lon, Oxsat$lat) xy <- trans3D(pmat = pmat, x = as.vector(M$x), y = as.vector(M$y), z = rep(-1000, length.out = Nx*Ny)) x <- matrix(nrow = Nx, ncol = Ny, data = xy$x) y <- matrix(nrow = Nx, ncol = Ny, data = xy$y) Bat <- Oxsat$val[,,1]; Bat[!is.na(Bat)] <- 1 image2D(x = x, y = y, z = Bat, NAcol = "black", col = "grey", add = TRUE, colkey = FALSE) } scatter3D(Hypox$x, Hypox$y, -Hypox$z, colvar = Hypox$cv, panel.first = panel, pch = ".", bty = "b", theta = 30, phi = 20, ticktype = "detailed", zlim = c(-1000,0), xlim = range(Oxsat$lon), ylim = range(Oxsat$lat) ) # restore plotting parameters par(mfrow = pm) par(mar = pmar) ``` ================================================ FILE: 2020年/2020.12.24Mandalas/Mandalas/.Rproj.user/9B97F8EE/sources/s-75E8F375/C7D0C74B ================================================ { "id": "C7D0C74B", "path": "F:/我的书籍/R书籍/R语言数据可视化之美/第4章 数据关系型图表/图4-7-3 峰峦图.R", "project_path": null, "type": "r_source", "hash": "0", "contents": "", "dirty": true, "created": 1608892371605.0, "source_on_save": false, "relative_order": 5, "properties": { "cursorPosition": "63,0", "scrollLine": "49" }, "folds": "", "lastKnownWriteTime": 1572340609, "encoding": "UTF-8", "collab_server": "", "source_window": "", "last_content_update": 1608892422939, "read_only": false, "read_only_alternatives": [] } ================================================ FILE: 2020年/2020.12.24Mandalas/Mandalas/.Rproj.user/9B97F8EE/sources/s-75E8F375/C7D0C74B-contents ================================================ #EasyCharts团队出品,如有商用必究, #如需使用与深入学习,请联系微信:EasyCharts setwd("F:\\我的书籍\\R书籍\\R语言数据可视化之美\\第4章 数据关系型图表") library(ggplot2) library(RColorBrewer) colormap <- colorRampPalette(rev(brewer.pal(11,'Spectral')))(32) mydata0<-read.csv("Facting_Data.csv",check.names =FALSE) N<-ncol(mydata0)-1 labels_Y<-colnames(mydata0)[1:N+1] colnames(mydata0)<-c("x",seq(1,N,1)) mydata<-data.frame(x=numeric(),y=numeric(),variable=character()) #创建空的Data.Frame for (i in 1:N){ newdata<-data.frame(spline(mydata0[,1],mydata0[,i+1],n=300,method= "natural")) newdata$variable<-colnames(mydata0)[i+1] mydata<-rbind(mydata,newdata) } Step<-5 mydata$offest<--as.numeric(mydata$variable)*Step mydata$V1_density_offest<-mydata$y+mydata$offest p<-ggplot() for (i in 1:N){ p<-p+ geom_linerange(data=mydata[mydata$variable==i,],aes(x=x,ymin=offest,ymax=V1_density_offest,group=variable,color=y),size =1, alpha =1) + geom_line(data=mydata[mydata$variable==i,],aes(x=x, y=V1_density_offest),color="black",size=0.5) } #ggplot() + # geom_linerange(aes(x=x,ymin=offest,ymax=V1_density_offest,group=variable,color=y),mydata,size =1, alpha =1) + p+scale_color_gradientn(colours=colormap)+ #geom_line(aes(x, V1_density_offest,group=variable),mydata,color="black")+ scale_y_continuous(breaks=seq(-Step*N,-Step,Step),labels=rev(labels_Y))+ xlab("Time")+ ylab("Class")+ theme( panel.background=element_rect(fill="white",colour=NA), panel.grid.major.x = element_line(colour = "grey80",size=.25), panel.grid.major.y = element_line(colour = "grey60",size=.25), axis.line = element_blank(), text=element_text(size=13), plot.title=element_text(size=15,hjust=.5), legend.position="right" ) #------------------------------------------------------------------------------------------------------ ggplot() + geom_ribbon(aes(x, ymin=offest,ymax=V1_density_offest, fill=variable),mydata, alpha=1,colour=NA)+ geom_line(aes(x, V1_density_offest, color=variable,group=variable),mydata, color="black")+ scale_y_continuous(breaks=seq(-40,-5,5),labels=rev(labels_Y))+ theme_classic()+ theme( panel.background=element_rect(fill="white",colour=NA), panel.grid.major.x = element_line(colour = "grey80",size=.25), panel.grid.major.y = element_line(colour = "grey60",size=.25), axis.line = element_blank(), text=element_text(size=15), plot.title=element_text(size=15,hjust=.5),#family="myfont", legend.position="none" ) ================================================ FILE: 2020年/2020.12.24Mandalas/Mandalas/.Rproj.user/9B97F8EE/sources/s-75E8F375/lock_file ================================================ ================================================ FILE: 2020年/2020.12.24Mandalas/Mandalas/.Rproj.user/shared/notebooks/40CC0FD6-Mandalas/1/9B97F8EE87974FA4/chunks.json ================================================ {"chunk_definitions":[{"row":93,"row_count":1,"visible":true,"expansion_state":0,"options":{"engine":"r","message":false,"warning":false,"label":"unnamed-chunk-11"},"document_id":"17CC9D9C","chunk_id":"cct2o5lt4yw4d","chunk_label":"unnamed-chunk-1"}],"doc_write_time":1608790344} ================================================ FILE: 2020年/2020.12.24Mandalas/Mandalas/.Rproj.user/shared/notebooks/40CC0FD6-Mandalas/1/s/cct2o5lt4yw4d/000011.csv ================================================ "0","# Load in libraries" "0","library(ggplot2)" "0","library(dplyr)" "0","library(deldir)" "0","" "0","# Parameters to change as you like" "0","iter=5 # Number of iterations (depth)" "0","points=8 # Number of points" "0","radius=4.8 # Factor of expansion/compression" "0","" "0","# Angles of points from center" "0","angles=seq(0, 2*pi*(1-1/points), length.out = points)+pi/2" "0","" "0","# Initial center" "0","df=data.frame(x=0, y=0)" "0","" "0","# Iterate over centers again and again" "0","for (k in 1:iter)" "0","{" "0"," temp=data.frame()" "0"," for (i in 1:nrow(df))" "0"," {" "0"," data.frame(x=df[i,""x""]+radius^(k-1)*cos(angles)," "0"," y=df[i,""y""]+radius^(k-1)*sin(angles)) %>% rbind(temp) -> temp" "0"," }" "0"," df=temp" "0","}" "0","" "0","# Obtain Voronoi regions" "0","df %>%" "0"," select(x,y) %>%" "0"," deldir(sort=TRUE) %>%" "0"," .$dirsgs -> data" ================================================ FILE: 2020年/2020.12.24Mandalas/Mandalas/.Rproj.user/shared/notebooks/40CC0FD6-Mandalas/1/s/chunks.json ================================================ {"chunk_definitions":[{"row":93,"row_count":1,"visible":true,"expansion_state":0,"options":{"engine":"r","message":false,"warning":false,"label":"unnamed-chunk-11"},"document_id":"17CC9D9C","chunk_id":"cct2o5lt4yw4d","chunk_label":"unnamed-chunk-1"}],"doc_write_time":1608790344} ================================================ FILE: 2020年/2020.12.24Mandalas/Mandalas/.Rproj.user/shared/notebooks/540673E1-峰峦图/1/9B97F8EE75E8F375/chunks.json ================================================ {"chunk_definitions":[],"doc_write_time":1608891772} ================================================ FILE: 2020年/2020.12.24Mandalas/Mandalas/.Rproj.user/shared/notebooks/540673E1-峰峦图/1/9B97F8EE87974FA4/chunks.json ================================================ {"chunk_definitions":[],"doc_write_time":1608886884} ================================================ FILE: 2020年/2020.12.24Mandalas/Mandalas/.Rproj.user/shared/notebooks/540673E1-峰峦图/1/s/chunks.json ================================================ {"chunk_definitions":[],"doc_write_time":1608891772} ================================================ FILE: 2020年/2020.12.24Mandalas/Mandalas/.Rproj.user/shared/notebooks/patch-chunk-names ================================================ ================================================ FILE: 2020年/2020.12.24Mandalas/Mandalas/.Rproj.user/shared/notebooks/paths ================================================ C:/Users/ZLL/Desktop/wechat/庄闪闪原创/R/未做推送/2020.12.05切面图/切面图.rmd="DA2E1EE7" C:/Users/ZLL/Desktop/wechat/庄闪闪原创/R/未做推送/2020.12.07峰峦图/峰峦图.rmd="540673E1" F:/我的学习/R/R_example/2020.12.24Mandalas/Mandalas/Mandalas.rmd="40CC0FD6" ================================================ FILE: 2020年/2020.12.24Mandalas/Mandalas/Mandalas.Rproj ================================================ Version: 1.0 RestoreWorkspace: Default SaveWorkspace: Default AlwaysSaveHistory: Default EnableCodeIndexing: Yes UseSpacesForTab: Yes NumSpacesForTab: 2 Encoding: UTF-8 RnwWeave: Sweave LaTeX: pdfLaTeX AutoAppendNewline: Yes StripTrailingWhitespace: Yes ================================================ FILE: 2020年/2020.12.24Mandalas/Mandalas/Mandalas.html ================================================ Mandalas

Mandalas

R-blogger-Mandalas

Mandalas

# Load in libraries
library(ggplot2)
library(dplyr)
library(deldir)

# Parameters to change as you like
iter=3 # Number of iterations (depth)
points=6 # Number of points
radius=3.8 # Factor of expansion/compression

# Angles of points from center
angles=seq(0, 2*pi*(1-1/points), length.out = points)+pi/2

# Initial center
df=data.frame(x=0, y=0)

# Iterate over centers again and again
for (k in 1:iter)
{
  temp=data.frame()
  for (i in 1:nrow(df))
  {
    data.frame(x=df[i,"x"]+radius^(k-1)*cos(angles),
               y=df[i,"y"]+radius^(k-1)*sin(angles)) %>% rbind(temp) -> temp
  }
  df=temp
}

# Obtain Voronoi regions
df %>%
  select(x,y) %>%
  deldir(sort=TRUE) %>%
  .$dirsgs -> data

# Plot regions with geom_segmen
data %>%
  ggplot() +
  geom_segment(aes(x = x1, y = y1, xend = x2, yend = y2), color="black") +
  scale_x_continuous(expand=c(0,0))+
  scale_y_continuous(expand=c(0,0))+
  coord_fixed() +
  theme(legend.position  = "none",
        panel.background = element_rect(fill="white"),
        panel.border     = element_rect(colour = "black", fill=NA),
        axis.ticks       = element_blank(),
        panel.grid       = element_blank(),
        axis.title       = element_blank(),
        axis.text        = element_blank())->plot

plot

# Do you like the result? Save it (change the name if you want)
ggsave("mandala.png", height=5, width=5, units='in', dpi=600)

================================================ FILE: 2020年/2020.12.24Mandalas/Mandalas/Mandalas.rmd ================================================ --- title: "Mandalas" author: "庄闪闪" date: "`r Sys.Date()`" output: prettydoc::html_pretty: theme: cayman highlight: github vignette: > %\VignetteIndexEntry{Vignette Title} %\VignetteEncoding{UTF-8} %\VignetteEngine{knitr::rmarkdown} editor_options: chunk_output_type: console --- ## 参考文献 [Mandalas](https://github.com/aschinchon/mandalas) [R-blogger-Mandalas](https://www.r-bloggers.com/2018/02/mandalas/) [Mandalas](https://fronkonstin.com/2018/02/14/mandalas/) [Inspired by your work I created this](https://hrafnkelle.github.io/p5mandalas/) ## 简介 - 以(0,0)为中心的单位圆中获得n个等距点 - 对所有这些点重复该过程,再次获得每个点周围的n个点; 半径按比例缩放 - 舍弃了以前的(父)n分 我反复地重复这些步骤。如果我从n个点开始,迭代k次,最后我得到nk个点。然后,我计算它们的Voronoi镶嵌,并用ggplot绘制。 ```{r message=FALSE, warning=FALSE} # Load in libraries library(ggplot2) library(dplyr) library(deldir) # Parameters to change as you like iter=5 # Number of iterations (depth) points=8 # Number of points radius=4.8 # Factor of expansion/compression # Angles of points from center angles=seq(0, 2*pi*(1-1/points), length.out = points)+pi/2 # Initial center df=data.frame(x=0, y=0) # Iterate over centers again and again for (k in 1:iter) { temp=data.frame() for (i in 1:nrow(df)) { data.frame(x=df[i,"x"]+radius^(k-1)*cos(angles), y=df[i,"y"]+radius^(k-1)*sin(angles)) %>% rbind(temp) -> temp } df=temp } # Obtain Voronoi regions df %>% select(x,y) %>% deldir(sort=TRUE) %>% .$dirsgs -> data # Plot regions with geom_segmen data %>% ggplot() + geom_segment(aes(x = x1, y = y1, xend = x2, yend = y2), color="black") + scale_x_continuous(expand=c(0,0))+ scale_y_continuous(expand=c(0,0))+ coord_fixed() + theme(legend.position = "none", panel.background = element_rect(fill="white"), panel.border = element_rect(colour = "black", fill=NA), axis.ticks = element_blank(), panel.grid = element_blank(), axis.title = element_blank(), axis.text = element_blank())->plot plot # Do you like the result? Save it (change the name if you want) ggsave("mandala4.png", height=5, width=5, units='in', dpi=600) ``` ![](1.jpg) ================================================ FILE: 2020年/2020.12.24圣诞节/1.json ================================================ {"layers":[{"name":"Heart","paths":[{"name":"PathItem","points":[[571.072881102838,203.421039185339],[570.314098994479,188.38173292578],[568.086929065528,173.776782567612],[564.46513591019,159.680135794406],[559.522484122663,146.165740289737],[553.332738297142,133.307543737177],[545.96966302783,121.179493820298],[537.507022908925,109.855538222674],[528.018582534627,99.4096246278768],[517.578106499133,89.9157007194799],[506.259359396643,81.4477141810548],[494.136105821357,74.079612696175],[481.282110367472,67.8853439484128],[467.77113762919,62.9388556213416],[453.676952200709,59.3140953985348],[439.073318676226,57.0850109635639],[424.034001649941,56.3255500000014],[414.026199372398,56.6614107724954],[404.203128773946,57.6545986793089],[394.585542916431,59.2835221044443],[385.194194861693,61.5265894319009],[376.049837671577,64.3622090456802],[367.173224407927,67.7687893297816],[358.585108132584,71.7247386682066],[350.306241907394,76.2084654449545],[342.3573787942,81.1983780440278],[334.759271854842,86.6728848494258],[327.532674151167,92.6103942451491],[320.698338745018,98.9893146151981],[314.277018698238,105.788054343574],[308.289467072667,112.985021814276],[302.756436930154,120.558625411308],[297.698681332538,128.487273518665],[292.638846960438,120.558625411308],[287.101439847285,112.985021814276],[281.107548340182,105.788054343574],[274.67826078623,98.9893146151981],[267.83466553253,92.6103942451491],[260.597850926187,86.6728848494258],[252.988905314302,81.1983780440278],[245.028917043975,76.2084654449545],[236.738974462309,71.7247386682066],[228.140165916408,67.7687893297816],[219.253579753373,64.3622090456802],[210.100304320305,61.5265894319009],[200.701427964306,59.2835221044443],[191.078039032481,57.6545986793089],[181.251225871928,56.6614107724954],[171.242076829752,56.3255500000014],[156.212777652664,57.0850109635639],[141.616671372942,59.3140953985348],[127.527777064187,62.9388556213416],[114.020113800001,67.8853439484128],[101.167700653986,74.079612696175],[89.0445566997432,81.4477141810548],[77.7247010108749,89.9157007194799],[67.2821526609823,99.4096246278768],[57.7909307236669,109.855538222674],[49.3250542725309,121.179493820298],[41.958542381175,133.307543737177],[35.7654141232015,146.165740289737],[30.8196885722118,159.680135794406],[27.1953848018074,173.776782567612],[24.9665218855907,188.38173292578],[24.2071188971622,203.421039185339],[26.5073517839446,236.556088978023],[33.0795420520199,268.907188314312],[43.4309271129796,300.294777674386],[57.0687443784182,330.539297538418],[73.5002312599263,359.461188386587],[92.2326251690956,386.880890699071],[112.773163517521,412.618844956043],[134.629083716793,436.495491637683],[157.307623178503,458.331271224166],[180.316019314247,477.946624195669],[203.161509535613,495.161991032366],[225.351331254196,509.79781221444],[246.392721881588,521.674528222062],[265.79291882938,530.612579535413],[283.059159509166,536.432406634665],[297.698681332538,538.954449999999],[312.336166247866,536.432406634665],[329.598148476867,530.612579535413],[348.992190097191,521.674528222062],[370.025853186491,509.79781221444],[392.206699822415,495.161991032366],[415.042292082613,477.946624195669],[438.040192044737,458.331271224166],[460.707961786436,436.495491637683],[482.553163385364,412.618844956043],[503.083358919168,386.880890699071],[521.806110465501,359.461188386587],[538.228980102011,330.539297538418],[551.859529906347,300.294777674386],[562.205321956166,268.907188314312],[568.773918329112,236.556088978023],[571.072881102838,203.421039185339],[571.072881102838,203.421039185339],[571.072881102838,203.421039185339],[571.072881102838,203.421039185339],[571.072881102838,203.421039185339],[571.072881102838,203.421039185339],[571.072881102838,203.421039185339],[571.072881102838,203.421039185339],[571.072881102838,203.421039185339],[571.072881102838,203.421039185339],[571.072881102838,203.421039185339],[571.072881102838,203.421039185339],[571.072881102838,203.421039185339],[571.072881102838,203.421039185339],[571.072881102838,203.421039185339],[571.072881102838,203.421039185339]]}]},{"name":"Merry","paths":[{"name":"PathItem","points":[[509.12109375,305.856064453124],[467.0927734375,241.708115234375],[497.7451171875,241.708115234375],[521.4453125,283.577744140625],[546.5673828125,241.708115234375],[575.796875,241.708115234375],[533.7685546875,305.856064453124],[533.7685546875,353.571884765624],[509.12109375,353.571884765624]]},{"name":"PathItem","points":[[409.73828125,288.002060546875],[424.2734375,288.002060546875],[431.3046875,287.764755859375],[438.01953125,286.342880859375],[442.9970703125,282.629990234375],[444.9716796875,275.520126953125],[443.2333984375,268.725693359375],[438.8095703125,264.855087890625],[432.6474609375,263.037705078125],[425.853515625,262.564072265625],[409.73828125,262.564072265625]]},{"name":"PathItem","points":[[385.08984375,241.708115234375],[428.3818359375,241.708115234375],[444.5771484375,243.366806640625],[458.0068359375,248.897080078125],[467.1708984375,259.324814453125],[470.5673828125,275.677841796875],[464.40625,295.822861328125],[446.3935546875,306.329697265624],[474.833984375,353.571884765624],[445.2880859375,353.571884765624],[421.904296875,308.858017578124],[409.73828125,308.858017578124],[409.73828125,353.571884765624],[385.08984375,353.571884765624]]},{"name":"PathItem","points":[[307.3544921875,288.002060546875],[321.890625,288.002060546875],[328.9208984375,287.764755859375],[335.6357421875,286.342880859375],[340.6142578125,282.629990234375],[342.5888671875,275.520126953125],[340.8505859375,268.725693359375],[336.4267578125,264.855087890625],[330.2646484375,263.037705078125],[323.4697265625,262.564072265625],[307.3544921875,262.564072265625]]},{"name":"PathItem","points":[[282.70703125,241.708115234375],[325.9990234375,241.708115234375],[342.1943359375,243.366806640625],[355.6240234375,248.897080078125],[364.7880859375,259.324814453125],[368.1845703125,275.677841796875],[362.0224609375,295.822861328125],[344.0107421875,306.329697265624],[372.4501953125,353.571884765624],[342.9052734375,353.571884765624],[319.5205078125,308.858017578124],[307.3544921875,308.858017578124],[307.3544921875,353.571884765624],[282.70703125,353.571884765624]]},{"name":"PathItem","points":[[184.11669921875,241.708115234375],[260.1142578125,241.708115234375],[260.1142578125,264.460068359375],[208.7646484375,264.460068359375],[208.7646484375,285.316025390625],[257.2705078125,285.316025390625],[257.2705078125,308.067978515624],[208.7646484375,308.067978515624],[208.7646484375,330.819931640624],[262.95849609375,330.819931640624],[262.95849609375,353.571884765624],[184.11669921875,353.571884765624]]},{"name":"PathItem","points":[[34.01904296875,241.708115234375],[71.30712890625,241.708115234375],[97.06103515625,314.703720703124],[97.376953125,314.703720703124],[123.2890625,241.708115234375],[160.4189453125,241.708115234375],[160.4189453125,353.571884765624],[135.77099609375,353.571884765624],[135.77099609375,267.777939453125],[135.455078125,267.777939453125],[106.06689453125,353.571884765624],[87.26513671875,353.571884765624],[58.98291015625,267.777939453125],[58.6669921875,267.777939453125],[58.6669921875,353.571884765624],[34.01904296875,353.571884765624]]}]},{"name":"X-MAS","paths":[{"name":"PathItem","points":[[534.083984375,269.04185546875],[525.947265625,263.43345703125],[516.23046875,261.61607421875],[510.7001953125,262.24791015625],[505.328125,264.22349609375],[501.2197265625,267.77818359375],[499.640625,273.15025390625],[503.4326171875,280.89244140625],[512.9912109375,285.47447265625],[525.39453125,289.26646484375],[537.796875,294.63853515625],[547.3564453125,303.959824218749],[551.1484375,319.602402343749],[547.671875,335.875839843749],[538.271484375,347.410019531249],[524.525390625,354.203964843749],[508.0146484375,356.415878906249],[487.7900390625,353.098496093749],[470.41015625,342.354355468749],[487.9482421875,323.077988281249],[497.5068359375,330.899277343749],[509.4365234375,333.663925781249],[515.51953125,332.952988281249],[521.048828125,330.820175781249],[524.9990234375,327.186386718749],[526.5,321.972519531249],[522.62890625,313.993027343749],[512.912109375,309.016464843749],[500.2724609375,304.908066406249],[487.6318359375,299.377792968749],[477.9150390625,290.21373046875],[474.0439453125,275.20396484375],[477.599609375,259.40416015625],[487.0791015625,248.02818359375],[500.74609375,241.15513671875],[516.7041015625,238.86412109375],[535.0322265625,241.54966796875],[550.990234375,250.55650390625]]},{"name":"PathItem","points":[[408.0009765625,274.25572265625],[394.4130859375,309.016464843749],[421.7470703125,309.016464843749]]},{"name":"PathItem","points":[[398.5205078125,241.70787109375],[418.9033203125,241.70787109375],[467.5673828125,353.572128906249],[439.7587890625,353.572128906249],[430.1201171875,329.871933593749],[386.6708984375,329.871933593749],[377.3486328125,353.572128906249],[350.1728515625,353.572128906249]]},{"name":"PathItem","points":[[212.556640625,241.70787109375],[249.8447265625,241.70787109375],[275.5986328125,314.703964843749],[275.9150390625,314.703964843749],[301.8271484375,241.70787109375],[338.95703125,241.70787109375],[338.95703125,353.572128906249],[314.30859375,353.572128906249],[314.30859375,267.77818359375],[313.9931640625,267.77818359375],[284.6044921875,353.572128906249],[265.802734375,353.572128906249],[237.5205078125,267.77818359375],[237.205078125,267.77818359375],[237.205078125,353.572128906249],[212.556640625,353.572128906249]]},{"name":"PathItem","points":[[197.232421875,323.709824218749],[158.365234375,323.709824218749],[158.365234375,304.749863281249],[197.232421875,304.749863281249]]},{"name":"PathItem","points":[[79.525390625,295.11216796875],[42.552734375,241.70787109375],[73.521484375,241.70787109375],[97.37890625,280.89244140625],[120.2890625,241.70787109375],[150.1513671875,241.70787109375],[113.96875,294.63853515625],[154.4169921875,353.572128906249],[123.44921875,353.572128906249],[96.115234375,308.541855468749],[69.5712890625,353.572128906249],[40.3408203125,353.572128906249]]}]},{"name":"back","paths":[{"name":"PathItem","points":[[595.280000000001,595.280000000001],[0,595.280000000001],[0,0],[595.280000000001,0]]}]}]} ================================================ FILE: 2020年/2020.12.24圣诞节/marry.R ================================================ # https://www.data-imaginist.com/2016/Data-driven-x-mas-card/ library(jsonlite) library(ggplot2) greet <- fromJSON(readLines('F:/我的学习/R/R_example/2020.12.24圣诞节/1.json')) layer_names <- greet$layers$name heart <- greet$layers$paths[[which(layer_names == 'Heart')]]$points merry <- greet$layers$paths[[which(layer_names == 'Merry')]]$points x_mas <- greet$layers$paths[[which(layer_names == 'X-MAS')]]$points range <- greet$layers$paths[[which(layer_names == 'back')]]$points[[1]] ggplot(as.data.frame(heart[[1]])) + geom_polygon(aes(V1, V2)) #============ library(mgcv) heart_points <- data.frame( x = runif(25000, min = min(range[,1]), max = max(range[, 1])), y = runif(25000, min = min(range[,2]), max = max(range[, 2])), colour = 'green', stringsAsFactors = FALSE ) heart_points$colour[ in.out( do.call(rbind, lapply(heart, rbind, c(NA, NA))), cbind(heart_points$x, heart_points$y) ) ] <- 'red' merry_points <- data.frame( x = runif(25000, min = min(range[,1]), max = max(range[, 1])), y = runif(25000, min = min(range[,2]), max = max(range[, 2])), colour = 'red', stringsAsFactors = FALSE ) merry_points$colour[ in.out( do.call(rbind, lapply(merry, rbind, c(NA, NA))), cbind(merry_points$x, merry_points$y) ) ] <- 'green' xmas_points <- data.frame( x = runif(25000, min = min(range[,1]), max = max(range[, 1])), y = runif(25000, min = min(range[,2]), max = max(range[, 2])), colour = 'red', stringsAsFactors = FALSE ) xmas_points$colour[ in.out( do.call(rbind, lapply(x_mas, rbind, c(NA, NA))), cbind(xmas_points$x, xmas_points$y) ) ] <- 'green' ggplot(merry_points) + geom_point(aes(x, y, colour = colour)) #=================== library(deldir) library(ggforce) heart_vor <- deldir(heart_points$x, heart_points$y) heart_con <- split(c(heart_points$colour[heart_vor$delsgs$ind2], heart_points$colour[heart_vor$delsgs$ind1]), c(heart_vor$delsgs$ind1, heart_vor$delsgs$ind2)) heart_boring <- lengths(lapply(heart_con, unique)) == 1 heart_remove <- c( sample(which(heart_boring & heart_points$colour == 'red'), sum(heart_boring & heart_points$colour == 'red') - (1000 - sum(!heart_boring & heart_points$colour == 'red'))), sample(which(heart_boring & heart_points$colour == 'green'), sum(heart_boring & heart_points$colour == 'green') - (1000 - sum(!heart_boring & heart_points$colour == 'green'))) ) heart_points <- heart_points[-heart_remove, ] merry_vor <- deldir(merry_points$x, merry_points$y) merry_con <- split(c(merry_points$colour[merry_vor$delsgs$ind2], merry_points$colour[merry_vor$delsgs$ind1]), c(merry_vor$delsgs$ind1, merry_vor$delsgs$ind2)) merry_boring <- lengths(lapply(merry_con, unique)) == 1 merry_remove <- c( sample(which(merry_boring & merry_points$colour == 'red'), sum(merry_boring & merry_points$colour == 'red') - (1000 - sum(!merry_boring & merry_points$colour == 'red'))), sample(which(merry_boring & merry_points$colour == 'green'), sum(merry_boring & merry_points$colour == 'green') - (1000 - sum(!merry_boring & merry_points$colour == 'green'))) ) merry_points <- merry_points[-merry_remove, ] xmas_vor <- deldir(xmas_points$x, xmas_points$y) xmas_con <- split(c(xmas_points$colour[xmas_vor$delsgs$ind2], xmas_points$colour[xmas_vor$delsgs$ind1]), c(xmas_vor$delsgs$ind1, xmas_vor$delsgs$ind2)) xmas_boring <- lengths(lapply(xmas_con, unique)) == 1 xmas_remove <- c( sample(which(xmas_boring & xmas_points$colour == 'red'), sum(xmas_boring & xmas_points$colour == 'red') - (1000 - sum(!xmas_boring & xmas_points$colour == 'red'))), sample(which(xmas_boring & xmas_points$colour == 'green'), sum(xmas_boring & xmas_points$colour == 'green') - (1000 - sum(!xmas_boring & xmas_points$colour == 'green'))) ) xmas_points <- xmas_points[-xmas_remove, ] ggplot(xmas_points) + geom_voronoi_tile(aes(x, y, fill = colour), colour = 'black') #===================== heart_points <- heart_points[order(heart_points$colour), ] heart_points$id <- seq_len(nrow(heart_points)) merry_points <- merry_points[order(merry_points$colour), ] merry_points$id <- seq_len(nrow(merry_points)) xmas_points <- xmas_points[order(xmas_points$colour), ] eu_dist <- function(x, y) { ifelse( merry_points$colour[x] != xmas_points$colour[y], 1e5, sqrt((merry_points$x[x] - xmas_points$x[y])^2 + (merry_points$y[x] - xmas_points$y[y])^2) ) } distance <- outer(seq_len(nrow(merry_points)), seq_len(nrow(merry_points)), eu_dist ) pair <- Reduce(function(l, r) { pair_order <- order(distance[r, ]) c(l, pair_order[which(!pair_order %in% l)[1]]) }, seq_len(nrow(merry_points)), init = integer()) xmas_points$id[pair] <- seq_len(nrow(xmas_points)) xmas_points <- xmas_points[order(xmas_points$id), ] #======================= library(tweenr) tween_points <- function(from, to, length, stagger) { leave <- sample(seq_len(stagger), nrow(from), replace = TRUE) arive <- sample(seq_len(stagger), nrow(from), replace = TRUE) x <- tween_t(Map(function(.f, .t) c(.f, .t), .f = from$x, .t = to$x), length - leave - arive) y <- tween_t(Map(function(.f, .t) c(.f, .t), .f = from$y, .t = to$y), length - leave - arive) points <- Map(function(x, y, l, a) { data.frame(x = x, y = y)[c(rep(1, l), seq_along(x), rep(length(x), a)), ] }, x = x, y = y, l = leave, a = arive) points <- do.call(rbind, points) points$frame <- rep(seq_len(length), nrow(from)) cbind( points, from[rep(seq_len(nrow(from)), each = length), !names(from) %in% c('x', 'y')]) } #================ n_frames_still <- 36 n_frames_trans <- 60 n_frames_stagger <- 20 n_frames_stage <- 96 heart_to_merry <- tween_points(heart_points, merry_points, n_frames_trans, n_frames_stagger) merry_to_xmas <- tween_points(merry_points, xmas_points, n_frames_trans, n_frames_stagger) xmas_to_heart <- tween_points(xmas_points, heart_points, n_frames_trans, n_frames_stagger) #================ heart_still <- heart_points[rep(seq_len(nrow(heart_points)), n_frames_still), ] heart_still$frame <- rep(seq_len(n_frames_still), each = nrow(heart_points)) heart_to_merry$frame <- heart_to_merry$frame + n_frames_still merry_still <- merry_points[rep(seq_len(nrow(merry_points)), n_frames_still), ] merry_still$frame <- rep(seq_len(n_frames_still), each = nrow(merry_points)) + n_frames_stage merry_to_xmas$frame <- merry_to_xmas$frame + n_frames_stage + n_frames_still xmas_still <- xmas_points[rep(seq_len(nrow(xmas_points)), n_frames_still), ] xmas_still$frame <- rep(seq_len(n_frames_still), each = nrow(xmas_points)) + 2*n_frames_stage xmas_to_heart$frame <- xmas_to_heart$frame + 2*n_frames_stage + n_frames_still frames <- rbind( heart_still, heart_to_merry, merry_still, merry_to_xmas, xmas_still, xmas_to_heart ) christmas_card <- function(data) { bound <- c(range(range[,1]), range(-range[,2])) ggplot(data, aes(x = x, y = y)) + geom_voronoi_tile(aes(fill = colour), bound = bound) + geom_voronoi_segment(alpha = 0.3, bound = bound) + scale_y_reverse() + scale_fill_manual(values = c('forestgreen', 'firebrick')) + labs(caption = 'www.data-imaginist.com') + coord_fixed(expand = FALSE) + theme_void() + theme(legend.position = 'none') } plot(christmas_card(heart_points)) for (i in seq_len(max(frames$frame))) { data <- frames[frames$frame == i, ] plot(christmas_card(data)) } ================================================ FILE: 2020年/2020.12.25峰峦图/峰峦图.rmd ================================================ --- title: "峰峦图" author: - 庄闪闪 documentclass: ctexart keywords: - 中文 - R Markdown output: rticles::ctex: fig_caption: yes number_sections: yes toc: yes editor_options: chunk_output_type: console --- # 峰峦图 上次可视化系列说了[瀑布图](https://mp.weixin.qq.com/s?__biz=MzI1NjUwMjQxMQ==&mid=2247487383&idx=1&sn=43e2eaf6b7c6b24510ccadb79e766f07&chksm=ea24f073dd53796546fd4145ded4cddfe8779464ad9d0d674900a65484966cd5c3f6367dcecf&token=1431845296&lang=zh_CN#rd)。它可以用于展示拥有相同的X轴变量数据(如相同的时间序列)、不同的Y轴离散型变量(如不同的类别变量)和Z轴数值变量。 本节使用的**峰峦图**也可以很好地展示瀑布图的数据信息。它们对于可视化随时间或空间分布的变化非常有用。本节主要使用`ggridges`包中的`geom_density_ridges()`进行绘制峰峦图。详细介绍如下: ## 数据结构 这里使用`base`包中的`diamonds`数据集做例子。 ```{r message=FALSE, warning=FALSE} # library library(ggridges) # Ridgeline Plots in 'ggplot2', CRAN v0.5.2 library(ggplot2) # Create Elegant Data Visualisations Using the Grammar of Graphics, CRAN v3.3.2 head(diamonds) ``` ## 绘图教程 ### 基础版本 使用`price`作为x轴, `cut`为y轴,`fill`参数也是设定为`cut`。`geom_density_ridges()`内部全部使用默认参数。使用了ggridges包中的主题`theme_ridges()`。 ```{r message=FALSE, warning=FALSE} ggplot(diamonds, aes(x = price, y = cut, fill = cut)) + geom_density_ridges() + theme_ridges() + theme(legend.position = "none") ``` ### 形状变化 如果不想绘制密度图,则可以使用`stat="binline", bins=20`绘制柱形图,其中`bins=20`表示每格格子大小。为了防止上下图片重叠,这里使用了透明度参数:`alpha=0.6`。 ```{r message=FALSE, warning=FALSE} ggplot(diamonds, aes(x = price, y = cut, fill = cut)) + geom_density_ridges(alpha=0.7, stat="binline", bins=20) + theme_ridges() + theme(legend.position = "none") ``` ### 根据第三变量进行分面 ```{r} ggplot(diamonds, aes(x = price, y = cut,fill = cut)) + geom_density_ridges(alpha=0.7) + facet_wrap(~color) + theme_ridges() + theme(legend.position = "none") ``` ### 加入统计量 通过设置选项`quantile_lines = TRUE`,我们可以使`stat_density_ridges`计算指示分位数的线的位置。 默认情况下,绘制了三行,分别对应于第一,第二和第三四分位数: ```{r} ggplot(diamonds, aes(x = price, y = cut,fill = cut)) + geom_density_ridges(alpha=0.7,quantile_lines = TRUE) + theme_ridges() + theme(legend.position = "none") ``` > **注意**:`quantiles=2`意味着在两个分位数之间的边界上有一条线即,(中位数)。 我们还可以通过切点而不是数字来指定分位数。例如,我们可以指出2.5%和97.5%的尾巴。 ```{r} ggplot(diamonds, aes(x = price, y = cut,fill = cut)) + geom_density_ridges(alpha=0.7,quantile_lines = TRUE,quantiles = c(0.025, 0.975)) + theme_ridges() + theme(legend.position = "none") ``` 使用`stat_density_ridges`,计算`stat(quantile)`,通过分位数进行着色,。 注意,仅当`calc_ecdf = TRUE`时才能计算。 ```{r} ggplot(diamonds, aes(x = price, y = cut,fill = factor(stat(quantile)))) + stat_density_ridges( geom = "density_ridges_gradient", calc_ecdf = TRUE, quantiles = 4, quantile_lines = TRUE) + theme_ridges() + scale_fill_viridis_d(name = "Quartiles") ``` 我们可以使用相同的方法来突出分布的尾部。 ```{r} ggplot(diamonds, aes(x = price, y = cut,fill = factor(stat(quantile)))) + stat_density_ridges( geom = "density_ridges_gradient", calc_ecdf = TRUE, quantiles = c(0.025, 0.975)) + theme_ridges() + scale_fill_manual( name = "Probability", values = c("#FF0000A0", "#A0A0A0A0", "#0000FFA0"), labels = c("(0, 0.025]", "(0.025, 0.975]", "(0.975, 1]") ) ``` 最后,当`calc_ecdf = TRUE`时,我们还可以计算`stat(ecdf)`,它表示该分布的经验累积密度函数。 我们将其概率直接映射到颜色上。 ```{r} ggplot(diamonds, aes(x = price, y = cut,fill = 0.5 - abs(0.5 - stat(ecdf)))) + stat_density_ridges(geom = "density_ridges_gradient", calc_ecdf = TRUE) + scale_fill_viridis_c(name = "Tail probability", direction = -1) ``` ### 加入抖动点 `stat_density_ridges()`还提供了可视化生成分布的原始数据点的选项。可以通过设置`jittered_points = TRUE`实现。为了只管我们这里使用`iris`包。 ```{r} ggplot(iris, aes(x = Sepal.Length, y = Species)) + geom_density_ridges(jittered_points = TRUE)+ theme_ridges() + theme(legend.position = "none") ``` 当然可以将其放在密度函数的下方,通过使用`position = "raincloud"`参数。 ```{r} ggplot(iris, aes(x = Sepal.Length, y = Species)) + geom_density_ridges( jittered_points = TRUE, position = "raincloud", alpha = 0.7, scale = 0.9 ) ``` 我们还可以模拟地毯形式: ```{r} ggplot(iris, aes(x = Sepal.Length, y = Species)) + geom_density_ridges( jittered_points = TRUE, position = position_points_jitter(width = 0.05, height = 0), point_shape = '|', point_size = 3, point_alpha = 1, alpha = 0.7, ) ``` 可以使用ggridges提供的特殊比例来设置抖动点的样式。 首先,`scale_discrete_manual()`可用于制作具有任意形状和比例的图形。 `scale_point_color_hue()`。 ```{r} ggplot(iris, aes(x = Sepal.Length, y = Species, fill = Species)) + geom_density_ridges( aes(point_color = Species, point_fill = Species, point_shape = Species), alpha = .2, point_alpha = 1, jittered_points = TRUE ) + scale_point_color_hue(l = 40) + scale_discrete_manual(aesthetics = "point_shape", values = c(21, 22, 23)) ``` 如果你还想再加入一个变量进行可视化,可以在`geom_density_ridges()`加入,例如:`point_shape = Species, point_fill = Species, point_size = Petal.Length`。 ```{r} ggplot(iris, aes(x = Sepal.Length, y = Species, fill = Species)) + geom_density_ridges( aes(point_shape = Species, point_fill = Species, point_size = Petal.Length), alpha = .2, point_alpha = 1, jittered_points = TRUE ) + scale_point_color_hue(l = 40) + scale_point_size_continuous(range = c(0.5, 4)) + scale_discrete_manual(aesthetics = "point_shape", values = c(21, 22, 23)) ``` 另外一种有趣的可视化是通过`vline_xxx`构造以下图形。 ```{r} ggplot(iris, aes(x = Sepal.Length, y = Species)) + geom_density_ridges( jittered_points = TRUE, quantile_lines = TRUE, scale = 0.9, alpha = 0.7, vline_size = 1, vline_color = "red", point_size = 0.4, point_alpha = 1, position = position_raincloud(adjust_vlines = TRUE) ) ``` ## 其他资料 对于该包的其他有趣函数与可视化可参考以下资料: - [Introduction to ggridges](https://cran.r-project.org/web/packages/ggridges/vignettes/introduction.html "Introduction to ggridges") - [RDocumentation-ggridges](https://www.rdocumentation.org/packages/ggridges/versions/0.5.2 "RDocumentation-ggridges") - [Basic ridgeline plot](https://www.r-graph-gallery.com/294-basic-ridgeline-plot "Basic ridgeline plot") ================================================ FILE: 2020年/2020.12.30ggvis/ggvis.html ================================================ ggvis包

简介

ggvis是R的一个数据可视化包,它可以:

  • 使用与ggplot2类似的语法描述数据图形;

  • 创建丰富的交互式图形,在本地Rstudio或浏览器中使用这些图形;

  • 利用shiny的基础结构发布交互式图形。

ggvis 与 ggplot2主要区别

  • 基本命名转换:

ggplot→ggvis

geom→layer function

stat→compute function

aes→props

+→%>%

  • ggvis目前不支持分面;

  • 使用ggvis而不添加任何层类似于qplot

更详细的区别可见:ggvis vs ggplot2

library(ggvis)
library(dplyr)

静态图

散点图

使用layer_points()绘制,其中内部参数都用默认值。注意这里ggvis(~wt, ~mpg)比ggplot多了一个波浪线。

mtcars %>% 
  ggvis(~wt, ~mpg) %>% 
  layer_points()

如果要加拟合线,和ggplot语法很类似,再加一层layer_smooths()

mtcars %>% 
  ggvis(~wt, ~mpg) %>%
  layer_points() %>%
  layer_smooths()

内部参数也很类似(se = TRUE加入拟合区间),拟合方式使用“lm”方法。

mtcars %>% 
  ggvis(~wt, ~mpg) %>%
  layer_points() %>%
  layer_model_predictions(model = "lm", se = TRUE)
## Guessing formula = mpg ~ wt

分组的散点图

如果想要使用分组说明散点图,可以加入fill = ~factor(cyl)或者group_by(cyl)进行分布。

mtcars %>% 
  ggvis(~wt, ~mpg) %>% 
  layer_points(fill = ~factor(cyl))

如果想要预测每组数据拟合情况,可以使用ayer_model_predictions()

mtcars %>% 
  ggvis(~wt, ~mpg, fill = ~factor(cyl)) %>% 
  layer_points() %>% 
  group_by(cyl) %>% 
  layer_model_predictions(model = "lm")
## Guessing formula = mpg ~ wt

柱状图

柱状图是使用layer_bars()函数,内部参数包括width(设置柱子宽度)等。

head(pressure)
##   temperature pressure
## 1           0   0.0002
## 2          20   0.0012
## 3          40   0.0060
## 4          60   0.0300
## 5          80   0.0900
## 6         100   0.2700
pressure %>% 
  ggvis(~temperature, ~pressure) %>%
  layer_bars(fill := "#ff8080")
pressure %>% 
  ggvis(~temperature, ~pressure) %>%
  layer_bars(width = 15,fill := "#ff8080")

曲线图

使用layer_lines()绘制曲线图,当然你可以和散点图合并,效果更好。

pressure %>% ggvis(~temperature, ~pressure) %>% layer_lines()
pressure %>% ggvis(~temperature, ~pressure) %>%
  layer_points(size := 50) %>% 
  layer_lines()

直方图

使用layer_histograms()绘制直方图,内部参数包括width(柱子宽度),boundary(两个箱子之间的边界),center(柱子中央为中心)等。

head(faithful)
##   eruptions waiting
## 1     3.600      79
## 2     1.800      54
## 3     3.333      74
## 4     2.283      62
## 5     4.533      85
## 6     2.883      55
faithful %>% ggvis(~eruptions, fill := "#ff8080") %>%
  layer_histograms(width=0.25, boundary=0) %>% 
  add_axis("x", title = "month") %>%
  add_axis("y", title = "count")
faithful %>% ggvis(~eruptions, fill := "#90bff9") %>%
  layer_histograms(width=0.25, center=0) %>% 
  add_axis("x", title = "month") %>%
  add_axis("y", title = "count")

箱型图

使用layer_boxplots()绘制箱型图,具体内部参数再次不做具体陈述。

mtcars %>% ggvis(~factor(cyl), ~mpg) %>% layer_boxplots(fill := "#90bff9") 

小编有话说

本篇推送参考ggvis cookbook,小编也只是一个搬运工。这篇主要是对该包中的常见图形进行静态展示,但是其实这个包更强大的功能在于交互式。鉴于本文内容较多,将在下次对这个包的交互使用进行详细解释。

交互性

Interactivity

基本的交互式控件

mtcars %>%
  ggvis(~wt, ~mpg) %>%
  layer_smooths(span = input_slider(0.5, 1, value = 1)) %>%
  layer_points(size := input_slider(100, 1000, value = 100))
## Warning: Can't output dynamic/interactive ggvis plots in a knitr document.
## Generating a static (non-dynamic, non-interactive) version of the plot.
================================================ FILE: 2020年/2020.12.30ggvis/ggvis.md ================================================ ## 简介 [ggvis](http://ggvis.rstudio.com "ggvis github")是R的一个数据可视化包,它可以: - 使用与ggplot2类似的语法描述数据图形; - 创建丰富的交互式图形,在本地Rstudio或浏览器中使用这些图形; - 利用shiny的基础结构发布交互式图形。 **ggvis 与 ggplot2主要区别**: - 基本命名转换: |ggplot|ggvis| |-|-| |geom|layer function| |stat|compute function| |aes|props| |+|%>%| - ggvis目前不支持分面; - 使用ggvis而不添加任何层类似于qplot > 更详细的区别可见: 这里先对包进行加载(可以直接使用instll.packages("")下载) ```{r message=FALSE, warning=FALSE} library(ggvis) library(dplyr) ``` ## 静态图 ### 1 散点图 使用`layer_points()`绘制,其中内部参数都用默认值。注意这里`ggvis(~wt, ~mpg) `比ggplot多了一个波浪线。 ```{r} mtcars %>% ggvis(~wt, ~mpg) %>% layer_points() ``` ![](https://imgkr2.cn-bj.ufileos.com/e05e6ea6-945d-49eb-bf21-eb530501cb53.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=LXs5vhSIWoeH%252BPk02VPMmv3o4us%253D&Expires=1609416269) 如果要加拟合线,和ggplot语法很类似,再加一层`layer_smooths()`。 ```{r} mtcars %>% ggvis(~wt, ~mpg) %>% layer_points() %>% layer_smooths() ``` ![](https://imgkr2.cn-bj.ufileos.com/a63e61ca-6a9c-4799-9d42-79dfc8eed04b.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=7HcrOMNKMPjazM9ggUWg0x7w8hI%253D&Expires=1609416281) 内部参数也很类似(`se = TRUE`加入拟合区间),拟合方式使用"lm"方法。 ```{r} mtcars %>% ggvis(~wt, ~mpg) %>% layer_points() %>% layer_model_predictions(model = "lm", se = TRUE) ``` ![](https://imgkr2.cn-bj.ufileos.com/2c4cf0e9-942d-40d2-badc-62badaa1cfe3.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=RTssV26FflgDOGONU21qxGqIk%252BM%253D&Expires=1609416292) ### 2 分组的散点图 如果想要使用分组说明散点图,可以加入`fill = ~factor(cyl)`或者`group_by(cyl)`进行分布。 ```{r} mtcars %>% ggvis(~wt, ~mpg) %>% layer_points(fill = ~factor(cyl)) ``` ![](https://imgkr2.cn-bj.ufileos.com/6c6425a9-1eab-4807-8c42-252c0e230820.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=fs0d49JC85yxV8PF3rfmpE0ghmw%253D&Expires=1609415742) 如果想要预测每组数据拟合情况,可以使用`ayer_model_predictions()`。 ```{r} mtcars %>% ggvis(~wt, ~mpg, fill = ~factor(cyl)) %>% layer_points() %>% group_by(cyl) %>% layer_model_predictions(model = "lm") ``` ![](https://imgkr2.cn-bj.ufileos.com/736edb8b-4921-40e7-a29b-81e9f7b738bf.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=pLrTlICigwIqryUu%252F8g4rT7sqI8%253D&Expires=1609415748) ### 3 柱状图 柱状图是使用`layer_bars()`函数,内部参数包括width(设置柱子宽度)等。 ```{r} head(pressure) pressure %>% ggvis(~temperature, ~pressure) %>% layer_bars(fill := "#ff8080") ``` ![](https://imgkr2.cn-bj.ufileos.com/9be6d335-8709-416c-8f15-bfd60895602e.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=sOXRDgS2IAgJRChrA%252FQunzIBaNg%253D&Expires=1609415753) ```{r} pressure %>% ggvis(~temperature, ~pressure) %>% layer_bars(width = 15,fill := "#ff8080") ``` ![](https://imgkr2.cn-bj.ufileos.com/ea13652f-f47f-420b-9290-b26f6acfc6d9.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=zs%252BCjmsAMfs6y8J6SiXRrQvdNHg%253D&Expires=1609415758) ### 4 曲线图 使用`layer_lines()`绘制曲线图,当然你可以和散点图合并,效果更好。 ```{r} pressure %>% ggvis(~temperature, ~pressure) %>% layer_lines() ``` ![](https://imgkr2.cn-bj.ufileos.com/618bc22c-12d7-4d3a-be90-3369f086c589.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=gC7M9I7zFB5mlE2DtswbIWI1pFM%253D&Expires=1609415765) ```{r} pressure %>% ggvis(~temperature, ~pressure) %>% layer_points(size := 50) %>% layer_lines() ``` ![](https://imgkr2.cn-bj.ufileos.com/07d3bb9d-8610-45e7-a1e4-33cb85ec3349.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=wWoV7E%252F8mLO%252F6MP0bynE3nTRglY%253D&Expires=1609415771) ### 5 直方图 使用`layer_histograms()`绘制直方图,内部参数包括width(柱子宽度),boundary(两个箱子之间的边界),center(柱子中央为中心)等。 ```{r} head(faithful) faithful %>% ggvis(~eruptions, fill := "#ff8080") %>% layer_histograms(width=0.25, boundary=0) %>% add_axis("x", title = "month") %>% add_axis("y", title = "count") ``` ![](https://imgkr2.cn-bj.ufileos.com/9d792a91-74c5-4b68-9488-a5ed9821a5b6.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=LIfmPNVBe0FVYDGuU%252FvyK%252BmUiUA%253D&Expires=1609415818) ```{r} faithful %>% ggvis(~eruptions, fill := "#90bff9") %>% layer_histograms(width=0.25, center=0) %>% add_axis("x", title = "month") %>% add_axis("y", title = "count") ``` ![](https://imgkr2.cn-bj.ufileos.com/09cb5684-f255-43fc-91ac-c5171157e4a2.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=HkPrRKYfaZWYtRUnisPymCIEsFQ%253D&Expires=1609415823) > add_axis()可以设置坐标轴的名称等其他参数。 ### 6 箱型图 使用`layer_boxplots()`绘制箱型图,具体内部参数再次不做具体陈述。 ```{r} mtcars %>% ggvis(~factor(cyl), ~mpg) %>% layer_boxplots(fill := "#90bff9") ``` ![](https://imgkr2.cn-bj.ufileos.com/35f114a1-6a53-4b5d-a8d8-8086b891d524.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=v9oowcqbxPwcZ3i%252FKA%252BnY0cXj%252FE%253D&Expires=1609415827) ## 小编有话说 本篇推送参考[ggvis cookbook](http://ggvis.rstudio.com/cookbook.html "ggvis cookbook"),小编也只是一个搬运工。这篇主要是对该包中的常见图形进行静态展示,但是其实这个包更强大的功能在于交互式。鉴于本文内容较多,将在下次对这个包的交互使用进行详细解释。 ================================================ FILE: 2020年/2020.12.30ggvis/ggvis.rmd ================================================ --- title: "ggvis包" author: "庄闪闪" date: "`r Sys.Date()`" output: prettydoc::html_pretty: theme: cayman highlight: github vignette: > %\VignetteIndexEntry{Vignette Title} %\VignetteEncoding{UTF-8} %\VignetteEngine{knitr::rmarkdown} editor_options: chunk_output_type: console --- ## 简介 [ggvis](http://ggvis.rstudio.com)是R的一个数据可视化包,它可以: - 使用与ggplot2类似的语法描述数据图形; - 创建丰富的交互式图形,在本地Rstudio或浏览器中使用这些图形; - 利用shiny的基础结构发布交互式图形。 **ggvis 与 ggplot2主要区别**: - 基本命名转换: ggplot→ggvis geom→layer function stat→compute function aes→props +→%>% - ggvis目前不支持分面; - 使用ggvis而不添加任何层类似于qplot > 更详细的区别可见:[ggvis vs ggplot2](http://ggvis.rstudio.com/ggplot2.html) ```{r message=FALSE, warning=FALSE} library(ggvis) library(dplyr) ``` ## 静态图 ### 散点图 使用`layer_points()`绘制,其中内部参数都用默认值。注意这里`ggvis(~wt, ~mpg) `比ggplot多了一个波浪线。 ```{r} mtcars %>% ggvis(~wt, ~mpg) %>% layer_points() ``` 如果要加拟合线,和ggplot语法很类似,再加一层`layer_smooths()`。 ```{r} mtcars %>% ggvis(~wt, ~mpg) %>% layer_points() %>% layer_smooths() ``` 内部参数也很类似(`se = TRUE`加入拟合区间),拟合方式使用"lm"方法。 ```{r} mtcars %>% ggvis(~wt, ~mpg) %>% layer_points() %>% layer_model_predictions(model = "lm", se = TRUE) ``` ### 分组的散点图 如果想要使用分组说明散点图,可以加入`fill = ~factor(cyl)`或者`group_by(cyl)`进行分布。 ```{r} mtcars %>% ggvis(~wt, ~mpg) %>% layer_points(fill = ~factor(cyl)) ``` 如果想要预测每组数据拟合情况,可以使用`ayer_model_predictions()`。 ```{r} mtcars %>% ggvis(~wt, ~mpg, fill = ~factor(cyl)) %>% layer_points() %>% group_by(cyl) %>% layer_model_predictions(model = "lm") ``` ### 柱状图 柱状图是使用`layer_bars()`函数,内部参数包括width(设置柱子宽度)等。 ```{r} head(pressure) pressure %>% ggvis(~temperature, ~pressure) %>% layer_bars(fill := "#ff8080") ``` ```{r} pressure %>% ggvis(~temperature, ~pressure) %>% layer_bars(width = 15,fill := "#ff8080") ``` ### 曲线图 使用`layer_lines()`绘制曲线图,当然你可以和散点图合并,效果更好。 ```{r} pressure %>% ggvis(~temperature, ~pressure) %>% layer_lines() ``` ```{r} pressure %>% ggvis(~temperature, ~pressure) %>% layer_points(size := 50) %>% layer_lines() ``` ### 直方图 使用`layer_histograms()`绘制直方图,内部参数包括width(柱子宽度),boundary(两个箱子之间的边界),center(柱子中央为中心)等。 ```{r} head(faithful) faithful %>% ggvis(~eruptions, fill := "#ff8080") %>% layer_histograms(width=0.25, boundary=0) %>% add_axis("x", title = "month") %>% add_axis("y", title = "count") ``` ```{r} faithful %>% ggvis(~eruptions, fill := "#90bff9") %>% layer_histograms(width=0.25, center=0) %>% add_axis("x", title = "month") %>% add_axis("y", title = "count") ``` ### 箱型图 使用`layer_boxplots()`绘制箱型图,具体内部参数再次不做具体陈述。 ```{r} mtcars %>% ggvis(~factor(cyl), ~mpg) %>% layer_boxplots(fill := "#90bff9") ``` ## 小编有话说 本篇推送参考[ggvis cookbook](http://ggvis.rstudio.com/cookbook.html),小编也只是一个搬运工。这篇主要是对该包中的常见图形进行静态展示,但是其实这个包更强大的功能在于交互式。鉴于本文内容较多,将在下次对这个包的交互使用进行详细解释。 ## 交互性 [Interactivity](https://ggvis.rstudio.com/interactivity.html) ## 基本的交互式控件 ```{r} mtcars %>% ggvis(~wt, ~mpg) %>% layer_smooths(span = input_slider(0.5, 1, value = 1)) %>% layer_points(size := input_slider(100, 1000, value = 100)) ``` ================================================ FILE: 2020年/2020年R数据科学系列/2020.08.23几何对象/几何对象.md ================================================ ## 前言 本最近打算把《R数据科学》过一遍,并且把课后习题都做一下。先从第一章开始吧,快速把ggplot过一下。第一章目录如下:![](https://mmbiz.qpic.cn/mmbiz_png/MIcgkkEyTHjzHjPmjOOibYl3m2UdPdjenWvrnBtdFRLwcPLeN3Peia1xnHicVnaCa1YeoVGaBu7F1WtRTS3ic1YYUg/640?wx_fmt=png)前面几节的内容比较少,第1.5节我对其做了补充,可见[R可视乎|分面一页多图](http://mp.weixin.qq.com/s?__biz=MzI1NjUwMjQxMQ==&mid=2247484186&idx=1&sn=c913a65f88132b3611e580b0318404d9&chksm=ea24fcfedd5375e87adfc3028850ee4034a0a0d34dd3855cf155b28eea9c71bfedb381d2c9e9&scene=21#wechat_redirect),课后练习题也可在该篇文章中找到。1.6节主要讲几何对象:表示数据的几何图形对象,比如条形图,折线图,箱线图等。要想改变图中的几何对象,需要修改添加在ggplot\(\) 函数中的几何对象函数。1.6节的内容不是很多,我们主要通过写本节的练习来回顾知识点。 ## 练习 ### \(1\) 在绘制折线图、箱线图、直方图和分区图时,应该分别使用哪种几何对象? **答**:geom\_line\(\),   geom\_boxplot\(\),  geom\_histogram\(\), ### \(2\) 在脑海中运行以下代码,并预测会有何种输出。接着在 R 中运行代码,并检查你的预测是否正确。 `ggplot(data = mpg, mapping = aes(x = displ, y = hwy, color = drv)) + geom_point() + geom_smooth(se = FALSE) ` 想象下:x轴是displ,y轴是hwy,颜色使用drv填充,然后加了一个散点图(中间没有参数,用默认),再加上一个拟合曲线,没有绘制出区间。由于两个集合对象都没有对mapping进行设置,所以会使用原始涂层的aes\(x = displ, y = hwy, color = drv\)\)。所以出来的结果,散点图和拟合曲线都是三种颜色。下面是出来的颜色: ![](https://mmbiz.qpic.cn/mmbiz_png/MIcgkkEyTHjzHjPmjOOibYl3m2UdPdjenC3nb0Q0tBfeLsWqKLM9xMybnHTY9laoezVgBtJhAQtCuNSWbAbWhibg/640?wx_fmt=png) ### \(3\)  show.legend = FALSE 的作用是什么?删除它会发生什么情况? **答**:是把图例隐藏了,默认参数是show.legend = TRUE. ### \(4\)  geom\_smooth\(\) 函数中的 se 参数的作用是什么? **答**:可以绘制出区间,当se = TRUE(默认)则会出现区间。 ### \(5\) 以下代码生成的两张图有什么区别吗?为什么? `#第一幅图 ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) + geom_point() + geom_smooth() #第二幅图 ggplot() + geom_point(data = mpg, mapping = aes(x = displ, y = hwy) ) + geom_smooth(data = mpg, mapping = aes(x = displ, y = hwy) ) ` 没有什么区别,第一个图在原始上就设定了x,y。后面两个集合对象就可以默认使用前面的设置了。而第二个图则是原始没有设置,而是在集合对象中一一设置了。 第一种方法:简便;第二种方法:灵活,可以设置不同的x,y。 ### \(6\) 自己编写 R 代码来生成以下各图 ![](https://mmbiz.qpic.cn/mmbiz_png/MIcgkkEyTHjzHjPmjOOibYl3m2UdPdjenGuoerDicLZuE7qdOZE4oeX5Q98ZtLiaplXQp8bAOBPmp5oGtAnpHiahew/640?wx_fmt=png) **第一个图:** x为displ,y为hwy。画了散点图(geom\_point)并绘制了拟合曲线(geom\_smooth),没加置信区间(se =FALSE) `ggplot(data = mpg,aes(x = displ,y = hwy))+ geom_point(size=3)+ geom_smooth(se=F,size=2) ` ![](https://mmbiz.qpic.cn/mmbiz_png/MIcgkkEyTHjzHjPmjOOibYl3m2UdPdjenPBfZBjDqY9sr4IOVM5wKbRemDGhX1pGxImKQZzzpYKqb60E1tJlMibw/640?wx_fmt=png) **第二个图:** 在第一个基础上根据drv变量绘制了三条拟合曲线,并且没有绘制区间。并且把图例删除了(show.legend = FALSE) ``` ggplot(data = mpg,aes(x = displ,y = hwy))+ geom_point(size=3)+ geom_smooth(aes(fill=drv),se=F,size=2,show.legend = FALSE) ``` ![](https://mmbiz.qpic.cn/mmbiz_png/MIcgkkEyTHjzHjPmjOOibYl3m2UdPdjenWCtTf9TjquM9ubJF9ibibC6CM0CWfiaicjPfich5RfRAMUEa0tyYnWABqCA/640?wx_fmt=png) **第三个图:** 散点图颜色的颜色根据drv变量进行变化,并且拟合曲线也是和散点图相同颜色(所以可以在最原始图层中加入color=drv),没有拟合曲线的区间,但是有图例(默认就是有的)。 `ggplot(data = mpg,aes(x = displ,y = hwy,color=drv))+ geom_point(size=3)+ geom_smooth(se=F,size=2) ` ![](https://mmbiz.qpic.cn/mmbiz_png/MIcgkkEyTHjzHjPmjOOibYl3m2UdPdjenN9BC3yu7cB9cRyvbwROMia6zYxSuRyQBS07Zea58dOYtTm9pyZ2c7Mg/640?wx_fmt=png) **第四个图:** 根据frv变量给散点图填充,但是只绘制了一条拟合线。所以这里不可以直接放在原始图层里,得放在geom\_point\(\)中。 `ggplot(data = mpg,aes(x = displ,y = hwy))+ geom_point(aes(color=drv),size=3)+ geom_smooth(se=F,size=2) ` ![](https://mmbiz.qpic.cn/mmbiz_png/MIcgkkEyTHjzHjPmjOOibYl3m2UdPdjenaWcJd6T5EDU7bvZ3TVpibbPb2SJBP9ibbgiaOZG8Iicloya46yL3icsTIdQ/640?wx_fmt=png) **第五幅图:**在第三幅图基础上改变了拟合曲线的线的类型\(linetype\)。 `ggplot(data = mpg,aes(x = displ,y = hwy,color=drv))+ geom_point(size=3)+ geom_smooth(aes(linetype=drv),se=F,size=2) ` ![](https://mmbiz.qpic.cn/mmbiz_png/MIcgkkEyTHjzHjPmjOOibYl3m2UdPdjen6AoK8icH7MTiaQrnW8xicQbrzkVpNmHCEzWFWdwgTghLf7z3WoqhhwxLg/640?wx_fmt=png) **第六幅图:** 没有拟合曲线,直接将散点图的颜色区分开了,有点像第三幅图的简化版。 `ggplot(data = mpg,aes(x = displ,y = hwy,color=drv))+ geom_point(size=3) ` ![](https://mmbiz.qpic.cn/mmbiz_png/MIcgkkEyTHjzHjPmjOOibYl3m2UdPdjen59Lak7t1buKRSiacyTLTDWciaD0ThruzghrU0fF9KNNwAU2V3dqsyQlw/640?wx_fmt=png) ## 参考 1. R for Data Science \[https://r4ds.had.co.nz/\] ![](https://mmbiz.qpic.cn/mmbiz_jpg/MIcgkkEyTHgfkvXafZE9scXp4icvdcNFyic0z7THajQBAyLNRiau3CKnZ3L9Y9K2YXObhaiblBm0Jbnicaq9lW3pz4g/640?wx_fmt=jpeg) 欢迎**关注**我的**公众号**,**点赞,在看,收藏\~\~\~** ================================================ FILE: 2020年/2020年R数据科学系列/2020.08.23速查表/让微信排版变 Nice.html ================================================ 让微信排版变 Nice

[R数据科学] 1.6几何对象

本最近打算把《R数据科学》过一遍,并且把课后习题都做一下。先从第一章开始吧,快速把ggplot过一下。前面几节的内容比较少,第1.5节 1.6节的内容不是很多,我们通过写本节的练习来回顾知识点:

(1) 在绘制折线图、箱线图、直方图和分区图时,应该分别使用哪种几何对象?

: geom_line(), geom_boxplot(), geom_histogram(),

(2) 在脑海中运行以下代码,并预测会有何种输出。接着在 R 中运行代码,并检查你的预测是否正确。

ggplot(data = mpg,
  mapping = aes(x = displ, y = hwy, color = drv)) +
  geom_point() +
  geom_smooth(se = FALSE)

想象下:x轴是displ,y轴是hwy,颜色使用drv填充,然后加了一个散点图(中间没有参数,用默认),再加上一个拟合曲线,没有绘制出区间。由于两个集合对象都没有对mapping进行设置,所以会使用原始涂层的aes(x = displ, y = hwy, color = drv))。所以出来的结果,散点图和拟合曲线都是三种颜色。下面是出来的颜色:

(3) show.legend = FALSE 的作用是什么?删除它会发生什么情况?

:是把图例隐藏了,默认参数是show.legend = TRUE.

(4) geom_smooth() 函数中的 se 参数的作用是什么?

:可以绘制出区间,当se = TRUE(默认)则会出现区间。

(5) 以下代码生成的两张图有什么区别吗?为什么?

#第一幅图
ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) +
geom_point() +
geom_smooth()
#第二幅图
ggplot() +
geom_point(data = mpg,
mapping = aes(x = displ, y = hwy)
) +
geom_smooth(data = mpg,
mapping = aes(x = displ, y = hwy)
)

没有什么区别,第一个图在原始上就设定了x,y。后面两个集合对象就可以默认使用前面的设置了。而第二个图则是原始没有设置,而是在集合对象中一一设置了。

第一种方法:简便;是第二种方法灵活,可以设置不同的x,y。

(6) 自己编写 R 代码来生成以下各图。

第一个图,x为displ,y为hwy。画了散点图(geom_point)并绘制了拟合曲线(geom_smooth),没加置信区间(se =FALSE)

ggplot(data = mpg,aes(x = displ,y = hwy))+
	geom_point(size=3)+
	geom_smooth(se=F,size=2)

第二个图在第一个基础上根据drv变量绘制了三条拟合曲线,并且没有绘制区间。并且把图例删除了(show.legend = FALSE)

ggplot(data = mpg,aes(x = displ,y = hwy))+
	geom_point(size=3)+
	geom_smooth(aes(fill=drv),se=F,size=2,show.legend = FALSE)

第三个图散点图颜色的颜色根据drv变量进行变化,并且拟合曲线也是和散点图相同颜色(所以可以在最原始图层中加入color=drv),没有拟合曲线的区间,但是有图例(默认就是有的)。

ggplot(data = mpg,aes(x = displ,y = hwy,color=drv))+
	geom_point(size=3)+
	geom_smooth(se=F,size=2)

第四个图根据frv变量给散点图填充,但是只绘制了一条拟合线。所以这里不可以直接放在原始图层里,得放在geom_point()中。

ggplot(data = mpg,aes(x = displ,y = hwy))+
	geom_point(aes(color=drv),size=3)+
	geom_smooth(se=F,size=2)

第五幅图在第三幅图基础上改变了拟合曲线的线的类型(linetype)。

ggplot(data = mpg,aes(x = displ,y = hwy,color=drv))+
	geom_point(size=3)+
	geom_smooth(aes(linetype=drv),se=F,size=2)

最后一幅没有拟合曲线,直接将散点图的颜色区分开了,有点像第三幅图的简化版

ggplot(data = mpg,aes(x = displ,y = hwy,color=drv))+
	geom_point(size=3)

参考

  1. R for Data Science
================================================ FILE: 2020年/2020年R数据科学系列/2020.08.23速查表/速查表.html ================================================ 让微信排版变 Nice

[R数据科学] R速查表

前言

R相关包的速查表如下:

基础

ggplot2(版本一)

ggplot2(版本二)

Rmarkdown

dplyr

stringr

forcats

================================================ FILE: 2020年/2020年R数据科学系列/2020.09.27tidy data/Tidy_data.rmd ================================================ --- title: "[R数据科学]Tidy data案例" author: - 庄亮亮 documentclass: ctexart always_allow_html: true output: rticles::ctex: fig_caption: yes number_sections: yes toc: yes toc_depth: 3 classoption: "hyperref," editor_options: chunk_output_type: console --- # Tidy data介绍 在本章中,你将学习在R中组织数据的一种一致的方法,这种组织被称为tidy data。将数据转换为这种格式需要一些前期工作,但这些工作从长远来看是值得的。一旦你有了整洁的数据和一些包提供的整洁工具,您将花费很少时间将数据从一种表示转换到另一种,从而可以将更多的时间花在分析问题上。 本文将为您提供整理数据的实用介绍以及tidyr包中附带的工具。如果你想了解更多的基本理论,你可能会喜欢发表在《统计软件杂志》上的整洁数据论文 # 数据清洗案例 我们主要通过一个案例,来了解如何整洁数据,并将案例中的各个有用函数进行详细解读.该案例数据来自`tidyr::who`,其包含按年份,国家,年龄,性别和诊断方法细分的结核病(TB)病例。数据来自2014年世界卫生组织《全球结核病报告》,网址为。 ```{r} library(tidyverse) who ``` 这是一个非常典型的现实示例数据集。它包含**冗余列,奇数变量代码和许多缺失值**。我们需要采取多个步骤来对其进行整理。 ## 不是变量的列汇集在一起 首先将不是变量的列聚集在一起。所包含的列包括: - country,iso2和iso3是三个指定国家/地区的变量。 - year是一个变量。 - 变量名中给出的结构(例如new_sp_m014,new_ep_m014,new_ep_f014)可能是值,而不是变量。 因此,我们需要将从`new_sp_m014`到`newrel_f65`的所有列汇总在一起。我们用通用名称"key"来表示他们。我们知道单元格代表案件数,因此我们将变量数存储在`cases`中,并用`na.rm`去除含有缺失值的行。 这里使用`pivot_longer()`将数据变长,具体见后面函数详情. ```{r} who1 <- who %>% pivot_longer( cols = new_sp_m014:newrel_f65, names_to = 'key', values_to = 'cases', values_drop_na = T ) who1 ``` 对key进行计数,我们可以得到一些有关值结构的提示: ```{r} who1 %>% count(key) ``` 其中key的具体含义,查阅可得: 每列的前三个字母:新、旧病例。 之后两个字母:结核的类型。 - rel 代表复发病例 - ep 代表肺外结核病例 - sn 代表无法通过肺部涂片诊断(涂片阴性)的肺结核病例 - sp 代表可被诊断为肺部涂片(涂片阳性)的肺结核病例 第六字母:结核病患者的性别。男性(m)和女性(f) 其余数字给出了年龄段。数据集将案例分为七个年龄组: - 014 = 0 – 14岁 - 1524 = 15 – 24岁 - 2534 = 25 – 34岁 - 3544 = 35 – 44岁 - 4554 = 45 – 54岁 - 5564 = 55 – 64岁 - 65 = 65岁或以上 ## 替换数据 我们需要对列名称的格式进行较小的修正:将new_rel替换为newrel(很难在这里找到它,但是如果您不修正它,我们将在后续步骤中出错)。这里使用了stringr包中的str_replace(),将`newrel`替换`new_rel`. ```{r} who2 <- who1 %>% mutate( names_from = stringr::str_replace(key,'newrel','new_rel') ) who2 ``` ## 字符分割 接下来就是将`key`中的字符进行分割,我们使用`separate()`对字符进行两次分割. 1.将在每个下划线处拆分代码。 ```{r} who3 <- who2 %>% separate(key,c('new','type','sexage'),sep = '_') who3 ``` 利用select()删除没用的列:new,iso2,iso3. ```{r} who3 %>% count(new) who4 <- who3 %>% select(-new,-iso2,-iso3) who4 ``` 2. 将分离sexage到sex和age通过的第一个字符后拆分: ```{r} who5 <- who4 %>% separate(sexage,c('sex','age'),sep=1) who5 ``` 这时,who数据集是目前整洁! ## 可视化 数据清洗完毕,就可以做一些初步的可视化,探索性分析.这里简单绘制了 前几个国家不同年份,不同性别的结核病病例总数。 ```{r} who5 %>% group_by(country,year,sex) %>% filter(year<2003) %>% count() %>% head(100) %>% ggplot(aes(x=as.factor(year),y=n,fill=country))+geom_col() +facet_wrap(~sex,nrow = 1)+ scale_fill_brewer(palette = "Paired") ``` ## 复杂的管道函数 事实上你可以直接只用管道函数构建一个复杂的函数: ```{r eval=FALSE, include=T} who %>% pivot_longer( cols = new_sp_m014:newrel_f65, names_to = "key", values_to = "cases", values_drop_na = TRUE ) %>% mutate( key = stringr::str_replace(key, "newrel", "new_rel") ) %>% separate(key, c("new", "var", "sexage")) %>% select(-new, -iso2, -iso3) %>% separate(sexage, c("sex", "age"), sep = 1) ``` # 所用函数详细解释 ## pivot_longer()、poivot_wider() `pivot_longer()` 将在列中列名(数值)转换到一列上。具体可见下图,将列变量转化为数据存在year列名中,相当于把数据变长(longer). ![pivot_longer,从左到右](36.jpg) 函数主要参数: > cols选取的列 > names_to 字符串,指定要从数据的列名中存储的数据创建的列的名称。 > values_to 字符串,指定要从存储在单元格值中的数据创建的列的名称。 > values_drop_na 如果为真,将删除value_to列中只包含NAs的行。这有效地将显式缺失值转换为隐式缺失值,通常只在由其结构创建的数据中缺失值时使用. 例子如上面例子:将new_sp_m014到newrel_f65之间的列选取,汇总到`key`列名中,值存在`cases`列名中,并将含有缺失值的行进行删除. ```{r} who1 <- who %>% pivot_longer( cols = new_sp_m014:newrel_f65, names_to = 'key', values_to = 'cases', values_drop_na = T ) ``` 当然还有一个和他相反功能的函数`poivot_wider()`。具体见下图,相当于把key中的值变为列名,对应的values数据转化到population中.下面是简单的例子. ![pivot_wider,从右到左](37.jpg) ```{r} library(tidyverse) stocks <- tibble( year = c(2015, 2015, 2016, 2016), half = c( 1, 2, 1, 2), return = c(1.88, 0.59, 0.92, 0.17) ) stocks ``` 我们将数据变宽,将year变为列名,对应在return中的数据进行填充. ```{r} stocks %>% pivot_wider(names_from = year,values_from = return) ``` ## separate() 该函数可将字符进行分割,具体案例如上. 默认情况下,当separate()看到非字母数字字符(即不是数字或字母的字符)时,它将分割值。可以用里面的参数`sep`。比如:`sep='_'`。他还有一个功能,当`sep=2`时,可通过第二个位置进行分割,使用在省份市级,等数据上.例如以下函数,其中into = c("century", "year")将原始分割后的数据导入两个新列上,分别叫century和year. ``` table3 %>% separate(year, into = c("century", "year"), sep = 2) ``` **注意**:默认情况下,会转化成字符形式,你可以用参数`convert=T`,将数据转化最佳结构. ![](38.jpg) ## unite 是`separate()`的反函数,这里做个补充 ![unite](39.jpg) 默认情况下,`sep='_'`如果我们不需要任何分隔符可以使用`sep=''`. # 缺失值处理 两种情况会出现缺失值: 1. **显式**: 标记为`NA`. 2. **隐式**: 没出在书中的. 以下为例子 ```{r} stocks <- tibble( year = c(2015, 2015, 2015, 2015, 2016, 2016, 2016), qtr = c( 1, 2, 3, 4, 2, 3, 4), return = c(1.88, 0.59, 0.35, NA, 0.92, 0.17, 2.66) ) ``` 在这个数据集中有两个缺失的值: 1. 2015年第四季度出现显式丢失,因为它的值应该在的单元格中包含NA。 2. 2016年第一季度的收益是隐式缺失的,因为它根本没有出现在数据集中。 对于隐式缺失值,我们可以将数据进行变化,显示隐性缺失. ```{r} stocks %>% pivot_wider(names_from = year,values_from = return) ``` 这样就可以看到原来隐型的缺失值了. 这些显式缺失的值在数据的其他表示中可能并不重要,你可以在pivot_longer()中设置values_drop_na = TRUE来将显式缺失的值变成隐式缺失值: ```{r} stocks %>% pivot_wider(names_from = year, values_from = return) %>% pivot_longer( cols = c(`2015`, `2016`), names_to = "year", values_to = "return", values_drop_na = TRUE ) ``` #### complete() 在整洁数据中显式显示缺失值的另一个重要工具是complete(). complete()获取一组列,并查找所有唯一的组合。然后,它确保原始数据集包含所有这些值,并在必要时显式填充NAs。 ```{r} stocks %>% complete(year,qtr) ``` 有时,当一个数据源主要用于数据输入时,丢失的值表明以前的值应该结转: ```{r} treatment <- tribble( ~person,~treatment,~response, 'A',1,7, NA,2,10, NA,3,9, 'B',1,4 ) ``` #### fill() 您可以使用fill()填充这些缺失的值。它采用一组列,在这些列中,您希望用最近的非缺失值(有时称为最后一次观察结转)替换缺失值。 ```{r} treatment %>% fill(person) ``` 直接将缺失值填写为前面的字符('A'). ================================================ FILE: 2020年/2020年R数据科学系列/《R数据科学》源代码/DESCRIPTION ================================================ Package: r4ds Title: R for data science. Version: 0.1 Authors@R: c( person("Hadley", "Wickham", , "hadley@rstudio.com", c("aut", "cre")), person("Garrett", "Grolemund", , "garrett@rstudio.com", "aut") ) Depends: R (>= 3.1.0) URL: https://github.com/hadley/r4ds Imports: bookdown, condvis, gapminder, ggrepel, hexbin, htmltools, htmlwidgets, jpeg, knitr, Lahman, leaflet, maps, microbenchmark, nycflights13, png, pryr, tidyverse, viridis Remotes: hadley/ggplot2, slowkow/ggrepel, rstudio/bookdown, rstudio/rmarkdown ================================================ FILE: 2020年/2020年R数据科学系列/《R数据科学》源代码/EDA.Rmd ================================================ # Exploratory Data Analysis ## Introduction This chapter will show you how to use visualisation and transformation to explore your data in a systematic way, a task that statisticians call exploratory data analysis, or EDA for short. EDA is an iterative cycle. You: 1. Generate questions about your data. 1. Search for answers by visualising, transforming, and modelling your data. 1. Use what you learn to refine your questions and/or generate new questions. EDA is not a formal process with a strict set of rules. More than anything, EDA is a state of mind. During the initial phases of EDA you should feel free to investigate every idea that occurs to you. Some of these ideas will pan out, and some will be dead ends. As your exploration continues, you will home in on a few particularly productive areas that you'll eventually write up and communicate to others. EDA is an important part of any data analysis, even if the questions are handed to you on a platter, because you always need to investigate the quality of your data. Data cleaning is just one application of EDA: you ask questions about whether your data meets your expectations or not. To do data cleaning, you'll need to deploy all the tools of EDA: visualisation, transformation, and modelling. ### Prerequisites In this chapter we'll combine what you've learned about dplyr and ggplot2 to interactively ask questions, answer them with data, and then ask new questions. ```{r setup, message = FALSE} library(tidyverse) ``` ## Questions > "There are no routine statistical questions, only questionable statistical > routines." --- Sir David Cox > "Far better an approximate answer to the right question, which is often > vague, than an exact answer to the wrong question, which can always be made > precise." --- John Tukey Your goal during EDA is to develop an understanding of your data. The easiest way to do this is to use questions as tools to guide your investigation. When you ask a question, the question focuses your attention on a specific part of your dataset and helps you decide which graphs, models, or transformations to make. EDA is fundamentally a creative process. And like most creative processes, the key to asking _quality_ questions is to generate a large _quantity_ of questions. It is difficult to ask revealing questions at the start of your analysis because you do not know what insights are contained in your dataset. On the other hand, each new question that you ask will expose you to a new aspect of your data and increase your chance of making a discovery. You can quickly drill down into the most interesting parts of your data---and develop a set of thought-provoking questions---if you follow up each question with a new question based on what you find. There is no rule about which questions you should ask to guide your research. However, two types of questions will always be useful for making discoveries within your data. You can loosely word these questions as: 1. What type of variation occurs within my variables? 1. What type of covariation occurs between my variables? The rest of this chapter will look at these two questions. I'll explain what variation and covariation are, and I'll show you several ways to answer each question. To make the discussion easier, let's define some terms: * A __variable__ is a quantity, quality, or property that you can measure. * A __value__ is the state of a variable when you measure it. The value of a variable may change from measurement to measurement. * An __observation__ is a set of measurements made under similar conditions (you usually make all of the measurements in an observation at the same time and on the same object). An observation will contain several values, each associated with a different variable. I'll sometimes refer to an observation as a data point. * __Tabular data__ is a set of values, each associated with a variable and an observation. Tabular data is _tidy_ if each value is placed in its own "cell", each variable in its own column, and each observation in its own row. So far, all of the data that you've seen has been tidy. In real-life, most data isn't tidy, so we'll come back to these ideas again in [tidy data]. ## Variation **Variation** is the tendency of the values of a variable to change from measurement to measurement. You can see variation easily in real life; if you measure any continuous variable twice, you will get two different results. This is true even if you measure quantities that are constant, like the speed of light. Each of your measurements will include a small amount of error that varies from measurement to measurement. Categorical variables can also vary if you measure across different subjects (e.g. the eye colors of different people), or different times (e.g. the energy levels of an electron at different moments). Every variable has its own pattern of variation, which can reveal interesting information. The best way to understand that pattern is to visualise the distribution of the variable's values. ### Visualising distributions How you visualise the distribution of a variable will depend on whether the variable is categorical or continuous. A variable is **categorical** if it can only take one of a small set of values. In R, categorical variables are usually saved as factors or character vectors. To examine the distribution of a categorical variable, use a bar chart: ```{r} ggplot(data = diamonds) + geom_bar(mapping = aes(x = cut)) ``` The height of the bars displays how many observations occurred with each x value. You can compute these values manually with `dplyr::count()`: ```{r} diamonds %>% count(cut) ``` A variable is **continuous** if it can take any of an infinite set of ordered values. Numbers and date-times are two examples of continuous variables. To examine the distribution of a continuous variable, use a histogram: ```{r} ggplot(data = diamonds) + geom_histogram(mapping = aes(x = carat), binwidth = 0.5) ``` You can compute this by hand by combining `dplyr::count()` and `ggplot2::cut_width()`: ```{r} diamonds %>% count(cut_width(carat, 0.5)) ``` A histogram divides the x-axis into equally spaced bins and then uses the height of a bar to display the number of observations that fall in each bin. In the graph above, the tallest bar shows that almost 30,000 observations have a `carat` value between 0.25 and 0.75, which are the left and right edges of the bar. You can set the width of the intervals in a histogram with the `binwidth` argument, which is measured in the units of the `x` variable. You should always explore a variety of binwidths when working with histograms, as different binwidths can reveal different patterns. For example, here is how the graph above looks when we zoom into just the diamonds with a size of less than three carats and choose a smaller binwidth. ```{r} smaller <- diamonds %>% filter(carat < 3) ggplot(data = smaller, mapping = aes(x = carat)) + geom_histogram(binwidth = 0.1) ``` If you wish to overlay multiple histograms in the same plot, I recommend using `geom_freqpoly()` instead of `geom_histogram()`. `geom_freqpoly()` performs the same calculation as `geom_histogram()`, but instead of displaying the counts with bars, uses lines instead. It's much easier to understand overlapping lines than bars. ```{r} ggplot(data = smaller, mapping = aes(x = carat, colour = cut)) + geom_freqpoly(binwidth = 0.1) ``` There are a few challenges with this type of plot, which we will come back to in [visualising a categorical and a continuous variable](#cat-cont). Now that you can visualise variation, what should you look for in your plots? And what type of follow-up questions should you ask? I've put together a list below of the most useful types of information that you will find in your graphs, along with some follow-up questions for each type of information. The key to asking good follow-up questions will be to rely on your curiosity (What do you want to learn more about?) as well as your skepticism (How could this be misleading?). ### Typical values In both bar charts and histograms, tall bars show the common values of a variable, and shorter bars show less-common values. Places that do not have bars reveal values that were not seen in your data. To turn this information into useful questions, look for anything unexpected: * Which values are the most common? Why? * Which values are rare? Why? Does that match your expectations? * Can you see any unusual patterns? What might explain them? As an example, the histogram below suggests several interesting questions: * Why are there more diamonds at whole carats and common fractions of carats? * Why are there more diamonds slightly to the right of each peak than there are slightly to the left of each peak? * Why are there no diamonds bigger than 3 carats? ```{r} ggplot(data = smaller, mapping = aes(x = carat)) + geom_histogram(binwidth = 0.01) ``` Clusters of similar values suggest that subgroups exist in your data. To understand the subgroups, ask: * How are the observations within each cluster similar to each other? * How are the observations in separate clusters different from each other? * How can you explain or describe the clusters? * Why might the appearance of clusters be misleading? The histogram below shows the length (in minutes) of 272 eruptions of the Old Faithful Geyser in Yellowstone National Park. Eruption times appear to be clustered into two groups: there are short eruptions (of around 2 minutes) and long eruptions (4-5 minutes), but little in between. ```{r} ggplot(data = faithful, mapping = aes(x = eruptions)) + geom_histogram(binwidth = 0.25) ``` Many of the questions above will prompt you to explore a relationship *between* variables, for example, to see if the values of one variable can explain the behavior of another variable. We'll get to that shortly. ### Unusual values Outliers are observations that are unusual; data points that don't seem to fit the pattern. Sometimes outliers are data entry errors; other times outliers suggest important new science. When you have a lot of data, outliers are sometimes difficult to see in a histogram. For example, take the distribution of the `y` variable from the diamonds dataset. The only evidence of outliers is the unusually wide limits on the x-axis. ```{r} ggplot(diamonds) + geom_histogram(mapping = aes(x = y), binwidth = 0.5) ``` There are so many observations in the common bins that the rare bins are so short that you can't see them (although maybe if you stare intently at 0 you'll spot something). To make it easy to see the unusual values, we need to zoom to small values of the y-axis with `coord_cartesian()`: ```{r} ggplot(diamonds) + geom_histogram(mapping = aes(x = y), binwidth = 0.5) + coord_cartesian(ylim = c(0, 50)) ``` (`coord_cartesian()` also has an `xlim()` argument for when you need to zoom into the x-axis. ggplot2 also has `xlim()` and `ylim()` functions that work slightly differently: they throw away the data outside the limits.) This allows us to see that there are three unusual values: 0, ~30, and ~60. We pluck them out with dplyr: ```{r, include = FALSE} old <- options(tibble.print_max = 10, tibble.print_min = 10) ``` ```{r} unusual <- diamonds %>% filter(y < 3 | y > 20) %>% select(price, x, y, z) %>% arrange(y) unusual ``` ```{r, include = FALSE} options(old) ``` The `y` variable measures one of the three dimensions of these diamonds, in mm. We know that diamonds can't have a width of 0mm, so these values must be incorrect. We might also suspect that measurements of 32mm and 59mm are implausible: those diamonds are over an inch long, but don't cost hundreds of thousands of dollars! It's good practice to repeat your analysis with and without the outliers. If they have minimal effect on the results, and you can't figure out why they're there, it's reasonable to replace them with missing values, and move on. However, if they have a substantial effect on your results, you shouldn't drop them without justification. You'll need to figure out what caused them (e.g. a data entry error) and disclose that you removed them in your write-up. ### Exercises 1. Explore the distribution of each of the `x`, `y`, and `z` variables in `diamonds`. What do you learn? Think about a diamond and how you might decide which dimension is the length, width, and depth. 1. Explore the distribution of `price`. Do you discover anything unusual or surprising? (Hint: Carefully think about the `binwidth` and make sure you try a wide range of values.) 1. How many diamonds are 0.99 carat? How many are 1 carat? What do you think is the cause of the difference? 1. Compare and contrast `coord_cartesian()` vs `xlim()` or `ylim()` when zooming in on a histogram. What happens if you leave `binwidth` unset? What happens if you try and zoom so only half a bar shows? ## Missing values If you've encountered unusual values in your dataset, and simply want to move on to the rest of your analysis, you have two options. 1. Drop the entire row with the strange values: ```{r, eval = FALSE} diamonds2 <- diamonds %>% filter(between(y, 3, 20)) ``` I don't recommend this option because just because one measurement is invalid, doesn't mean all the measurements are. Additionally, if you have low quality data, by time that you've applied this approach to every variable you might find that you don't have any data left! 1. Instead, I recommend replacing the unusual values with missing values. The easiest way to do this is to use `mutate()` to replace the variable with a modified copy. You can use the `ifelse()` function to replace unusual values with `NA`: ```{r} diamonds2 <- diamonds %>% mutate(y = ifelse(y < 3 | y > 20, NA, y)) ``` `ifelse()` has three arguments. The first argument `test` should be a logical vector. The result will contain the value of the second argument, `yes`, when `test` is `TRUE`, and the value of the third argument, `no`, when it is false. Alternatively to ifelse, use `dplyr::case_when()`. `case_when()` is particularly useful inside mutate when you want to create a new variable that relies on a complex combination of existing variables. Like R, ggplot2 subscribes to the philosophy that missing values should never silently go missing. It's not obvious where you should plot missing values, so ggplot2 doesn't include them in the plot, but it does warn that they've been removed: ```{r, dev = "png"} ggplot(data = diamonds2, mapping = aes(x = x, y = y)) + geom_point() ``` To suppress that warning, set `na.rm = TRUE`: ```{r, eval = FALSE} ggplot(data = diamonds2, mapping = aes(x = x, y = y)) + geom_point(na.rm = TRUE) ``` Other times you want to understand what makes observations with missing values different to observations with recorded values. For example, in `nycflights13::flights`, missing values in the `dep_time` variable indicate that the flight was cancelled. So you might want to compare the scheduled departure times for cancelled and non-cancelled times. You can do this by making a new variable with `is.na()`. ```{r} nycflights13::flights %>% mutate( cancelled = is.na(dep_time), sched_hour = sched_dep_time %/% 100, sched_min = sched_dep_time %% 100, sched_dep_time = sched_hour + sched_min / 60 ) %>% ggplot(mapping = aes(sched_dep_time)) + geom_freqpoly(mapping = aes(colour = cancelled), binwidth = 1/4) ``` However this plot isn't great because there are many more non-cancelled flights than cancelled flights. In the next section we'll explore some techniques for improving this comparison. ### Exercises 1. What happens to missing values in a histogram? What happens to missing values in a bar chart? Why is there a difference? 1. What does `na.rm = TRUE` do in `mean()` and `sum()`? ## Covariation If variation describes the behavior _within_ a variable, covariation describes the behavior _between_ variables. **Covariation** is the tendency for the values of two or more variables to vary together in a related way. The best way to spot covariation is to visualise the relationship between two or more variables. How you do that should again depend on the type of variables involved. ### A categorical and continuous variable {#cat-cont} It's common to want to explore the distribution of a continuous variable broken down by a categorical variable, as in the previous frequency polygon. The default appearance of `geom_freqpoly()` is not that useful for that sort of comparison because the height is given by the count. That means if one of the groups is much smaller than the others, it's hard to see the differences in shape. For example, let's explore how the price of a diamond varies with its quality: ```{r} ggplot(data = diamonds, mapping = aes(x = price)) + geom_freqpoly(mapping = aes(colour = cut), binwidth = 500) ``` It's hard to see the difference in distribution because the overall counts differ so much: ```{r, fig.width = "50%", fig.width = 4} ggplot(diamonds) + geom_bar(mapping = aes(x = cut)) ``` To make the comparison easier we need to swap what is displayed on the y-axis. Instead of displaying count, we'll display __density__, which is the count standardised so that the area under each frequency polygon is one. ```{r} ggplot(data = diamonds, mapping = aes(x = price, y = ..density..)) + geom_freqpoly(mapping = aes(colour = cut), binwidth = 500) ``` There's something rather surprising about this plot - it appears that fair diamonds (the lowest quality) have the highest average price! But maybe that's because frequency polygons are a little hard to interpret - there's a lot going on in this plot. Another alternative to display the distribution of a continuous variable broken down by a categorical variable is the boxplot. A **boxplot** is a type of visual shorthand for a distribution of values that is popular among statisticians. Each boxplot consists of: * A box that stretches from the 25th percentile of the distribution to the 75th percentile, a distance known as the interquartile range (IQR). In the middle of the box is a line that displays the median, i.e. 50th percentile, of the distribution. These three lines give you a sense of the spread of the distribution and whether or not the distribution is symmetric about the median or skewed to one side. * Visual points that display observations that fall more than 1.5 times the IQR from either edge of the box. These outlying points are unusual so are plotted individually. * A line (or whisker) that extends from each end of the box and goes to the farthest non-outlier point in the distribution. ```{r, echo = FALSE, out.width = "100%"} knitr::include_graphics("images/EDA-boxplot.png") ``` Let's take a look at the distribution of price by cut using `geom_boxplot()`: ```{r fig.height = 3} ggplot(data = diamonds, mapping = aes(x = cut, y = price)) + geom_boxplot() ``` We see much less information about the distribution, but the boxplots are much more compact so we can more easily compare them (and fit more on one plot). It supports the counterintuitive finding that better quality diamonds are cheaper on average! In the exercises, you'll be challenged to figure out why. `cut` is an ordered factor: fair is worse than good, which is worse than very good and so on. Many categorical variables don't have such an intrinsic order, so you might want to reorder them to make a more informative display. One way to do that is with the `reorder()` function. For example, take the `class` variable in the `mpg` dataset. You might be interested to know how highway mileage varies across classes: ```{r} ggplot(data = mpg, mapping = aes(x = class, y = hwy)) + geom_boxplot() ``` To make the trend easier to see, we can reorder `class` based on the median value of `hwy`: ```{r fig.height = 3} ggplot(data = mpg) + geom_boxplot(mapping = aes(x = reorder(class, hwy, FUN = median), y = hwy)) ``` If you have long variable names, `geom_boxplot()` will work better if you flip it 90°. You can do that with `coord_flip()`. ```{r} ggplot(data = mpg) + geom_boxplot(mapping = aes(x = reorder(class, hwy, FUN = median), y = hwy)) + coord_flip() ``` #### Exercises 1. Use what you've learned to improve the visualisation of the departure times of cancelled vs. non-cancelled flights. 1. What variable in the diamonds dataset is most important for predicting the price of a diamond? How is that variable correlated with cut? Why does the combination of those two relationships lead to lower quality diamonds being more expensive? 1. Install the ggstance package, and create a horizontal boxplot. How does this compare to using `coord_flip()`? 1. One problem with boxplots is that they were developed in an era of much smaller datasets and tend to display a prohibitively large number of "outlying values". One approach to remedy this problem is the letter value plot. Install the lvplot package, and try using `geom_lv()` to display the distribution of price vs cut. What do you learn? How do you interpret the plots? 1. Compare and contrast `geom_violin()` with a facetted `geom_histogram()`, or a coloured `geom_freqpoly()`. What are the pros and cons of each method? 1. If you have a small dataset, it's sometimes useful to use `geom_jitter()` to see the relationship between a continuous and categorical variable. The ggbeeswarm package provides a number of methods similar to `geom_jitter()`. List them and briefly describe what each one does. ### Two categorical variables To visualise the covariation between categorical variables, you'll need to count the number of observations for each combination. One way to do that is to rely on the built-in `geom_count()`: ```{r} ggplot(data = diamonds) + geom_count(mapping = aes(x = cut, y = color)) ``` The size of each circle in the plot displays how many observations occurred at each combination of values. Covariation will appear as a strong correlation between specific x values and specific y values. Another approach is to compute the count with dplyr: ```{r} diamonds %>% count(color, cut) ``` Then visualise with `geom_tile()` and the fill aesthetic: ```{r} diamonds %>% count(color, cut) %>% ggplot(mapping = aes(x = color, y = cut)) + geom_tile(mapping = aes(fill = n)) ``` If the categorical variables are unordered, you might want to use the seriation package to simultaneously reorder the rows and columns in order to more clearly reveal interesting patterns. For larger plots, you might want to try the d3heatmap or heatmaply packages, which create interactive plots. #### Exercises 1. How could you rescale the count dataset above to more clearly show the distribution of cut within colour, or colour within cut? 1. Use `geom_tile()` together with dplyr to explore how average flight delays vary by destination and month of year. What makes the plot difficult to read? How could you improve it? 1. Why is it slightly better to use `aes(x = color, y = cut)` rather than `aes(x = cut, y = color)` in the example above? ### Two continuous variables You've already seen one great way to visualise the covariation between two continuous variables: draw a scatterplot with `geom_point()`. You can see covariation as a pattern in the points. For example, you can see an exponential relationship between the carat size and price of a diamond. ```{r, dev = "png"} ggplot(data = diamonds) + geom_point(mapping = aes(x = carat, y = price)) ``` Scatterplots become less useful as the size of your dataset grows, because points begin to overplot, and pile up into areas of uniform black (as above). You've already seen one way to fix the problem: using the `alpha` aesthetic to add transparency. ```{r, dev = "png"} ggplot(data = diamonds) + geom_point(mapping = aes(x = carat, y = price), alpha = 1 / 100) ``` But using transparency can be challenging for very large datasets. Another solution is to use bin. Previously you used `geom_histogram()` and `geom_freqpoly()` to bin in one dimension. Now you'll learn how to use `geom_bin2d()` and `geom_hex()` to bin in two dimensions. `geom_bin2d()` and `geom_hex()` divide the coordinate plane into 2d bins and then use a fill color to display how many points fall into each bin. `geom_bin2d()` creates rectangular bins. `geom_hex()` creates hexagonal bins. You will need to install the hexbin package to use `geom_hex()`. ```{r, fig.asp = 1, out.width = "50%", fig.align = "default", message = FALSE} ggplot(data = smaller) + geom_bin2d(mapping = aes(x = carat, y = price)) # install.packages("hexbin") ggplot(data = smaller) + geom_hex(mapping = aes(x = carat, y = price)) ``` Another option is to bin one continuous variable so it acts like a categorical variable. Then you can use one of the techniques for visualising the combination of a categorical and a continuous variable that you learned about. For example, you could bin `carat` and then for each group, display a boxplot: ```{r} ggplot(data = smaller, mapping = aes(x = carat, y = price)) + geom_boxplot(mapping = aes(group = cut_width(carat, 0.1))) ``` `cut_width(x, width)`, as used above, divides `x` into bins of width `width`. By default, boxplots look roughly the same (apart from number of outliers) regardless of how many observations there are, so it's difficult to tell that each boxplot summarises a different number of points. One way to show that is to make the width of the boxplot proportional to the number of points with `varwidth = TRUE`. Another approach is to display approximately the same number of points in each bin. That's the job of `cut_number()`: ```{r} ggplot(data = smaller, mapping = aes(x = carat, y = price)) + geom_boxplot(mapping = aes(group = cut_number(carat, 20))) ``` #### Exercises 1. Instead of summarising the conditional distribution with a boxplot, you could use a frequency polygon. What do you need to consider when using `cut_width()` vs `cut_number()`? How does that impact a visualisation of the 2d distribution of `carat` and `price`? 1. Visualise the distribution of carat, partitioned by price. 1. How does the price distribution of very large diamonds compare to small diamonds? Is it as you expect, or does it surprise you? 1. Combine two of the techniques you've learned to visualise the combined distribution of cut, carat, and price. 1. Two dimensional plots reveal outliers that are not visible in one dimensional plots. For example, some points in the plot below have an unusual combination of `x` and `y` values, which makes the points outliers even though their `x` and `y` values appear normal when examined separately. ```{r, dev = "png"} ggplot(data = diamonds) + geom_point(mapping = aes(x = x, y = y)) + coord_cartesian(xlim = c(4, 11), ylim = c(4, 11)) ``` Why is a scatterplot a better display than a binned plot for this case? ## Patterns and models Patterns in your data provide clues about relationships. If a systematic relationship exists between two variables it will appear as a pattern in the data. If you spot a pattern, ask yourself: + Could this pattern be due to coincidence (i.e. random chance)? + How can you describe the relationship implied by the pattern? + How strong is the relationship implied by the pattern? + What other variables might affect the relationship? + Does the relationship change if you look at individual subgroups of the data? A scatterplot of Old Faithful eruption lengths versus the wait time between eruptions shows a pattern: longer wait times are associated with longer eruptions. The scatterplot also displays the two clusters that we noticed above. ```{r fig.height = 2} ggplot(data = faithful) + geom_point(mapping = aes(x = eruptions, y = waiting)) ``` Patterns provide one of the most useful tools for data scientists because they reveal covariation. If you think of variation as a phenomenon that creates uncertainty, covariation is a phenomenon that reduces it. If two variables covary, you can use the values of one variable to make better predictions about the values of the second. If the covariation is due to a causal relationship (a special case), then you can use the value of one variable to control the value of the second. Models are a tool for extracting patterns out of data. For example, consider the diamonds data. It's hard to understand the relationship between cut and price, because cut and carat, and carat and price are tightly related. It's possible to use a model to remove the very strong relationship between price and carat so we can explore the subtleties that remain. The following code fits a model that predicts `price` from `carat` and then computes the residuals (the difference between the predicted value and the actual value). The residuals give us a view of the price of the diamond, once the effect of carat has been removed. ```{r, dev = "png"} library(modelr) mod <- lm(log(price) ~ log(carat), data = diamonds) diamonds2 <- diamonds %>% add_residuals(mod) %>% mutate(resid = exp(resid)) ggplot(data = diamonds2) + geom_point(mapping = aes(x = carat, y = resid)) ``` Once you've removed the strong relationship between carat and price, you can see what you expect in the relationship between cut and price: relative to their size, better quality diamonds are more expensive. ```{r} ggplot(data = diamonds2) + geom_boxplot(mapping = aes(x = cut, y = resid)) ``` You'll learn how models, and the modelr package, work in the final part of the book, [model](#model-intro). We're saving modelling for later because understanding what models are and how they work is easiest once you have tools of data wrangling and programming in hand. ## ggplot2 calls As we move on from these introductory chapters, we'll transition to a more concise expression of ggplot2 code. So far we've been very explicit, which is helpful when you are learning: ```{r, eval = FALSE} ggplot(data = faithful, mapping = aes(x = eruptions)) + geom_freqpoly(binwidth = 0.25) ``` Typically, the first one or two arguments to a function are so important that you should know them by heart. The first two arguments to `ggplot()` are `data` and `mapping`, and the first two arguments to `aes()` are `x` and `y`. In the remainder of the book, we won't supply those names. That saves typing, and, by reducing the amount of boilerplate, makes it easier to see what's different between plots. That's a really important programming concern that we'll come back in [functions]. Rewriting the previous plot more concisely yields: ```{r, eval = FALSE} ggplot(faithful, aes(eruptions)) + geom_freqpoly(binwidth = 0.25) ``` Sometimes we'll turn the end of a pipeline of data transformation into a plot. Watch for the transition from `%>%` to `+`. I wish this transition wasn't necessary but unfortunately ggplot2 was created before the pipe was discovered. ```{r, eval = FALSE} diamonds %>% count(cut, clarity) %>% ggplot(aes(clarity, cut, fill = n)) + geom_tile() ``` ## Learning more If you want to learn more about the mechanics of ggplot2, I'd highly recommend grabbing a copy of the ggplot2 book: . It's been recently updated, so it includes dplyr and tidyr code, and has much more space to explore all the facets of visualisation. Unfortunately the book isn't generally available for free, but if you have a connection to a university you can probably get an electronic version for free through SpringerLink. Another useful resource is the [_R Graphics Cookbook_](https://amzn.com/1449316956) by Winston Chang. Much of the contents are available online at . I also recommend [_Graphical Data Analysis with R_](https://amzn.com/1498715230), by Antony Unwin. This is a book-length treatment similar to the material covered in this chapter, but has the space to go into much greater depth. ================================================ FILE: 2020年/2020年R数据科学系列/《R数据科学》源代码/LICENSE ================================================ This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/3.0/us/ or send a letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA. ================================================ FILE: 2020年/2020年R数据科学系列/《R数据科学》源代码/README.md ================================================ # R for Data Science This is code and text behind the [R for Data Science](http://r4ds.had.co.nz) book. The R packages used in this book can be installed via ```{r} devtools::install_github("hadley/r4ds") ``` The site is built using [bookdown package](https://github.com/rstudio/bookdown). To create the site, you also need: * [pandoc](http://johnmacfarlane.net/pandoc/) ================================================ FILE: 2020年/2020年R数据科学系列/《R数据科学》源代码/_bookdown.yml ================================================ new_session: yes rmd_files: [ "index.rmd", "intro.Rmd", "explore.Rmd", "visualize.Rmd", "workflow-basics.Rmd", "transform.Rmd", "workflow-scripts.Rmd", "EDA.Rmd", "workflow-projects.Rmd", "wrangle.Rmd", "tibble.Rmd", "import.Rmd", "tidy.Rmd", "relational-data.Rmd", "strings.Rmd", "factors.Rmd", "datetimes.Rmd", "program.Rmd", "pipes.Rmd", "functions.Rmd", "vectors.Rmd", "iteration.Rmd", "model.Rmd", "model-basics.Rmd", "model-building.Rmd", "model-many.Rmd", "communicate.Rmd", "rmarkdown.Rmd", "communicate-plots.Rmd", "rmarkdown-formats.Rmd", "rmarkdown-workflow.Rmd", ] before_chapter_script: "_common.R" ================================================ FILE: 2020年/2020年R数据科学系列/《R数据科学》源代码/_common.R ================================================ set.seed(1014) options(digits = 3) knitr::opts_chunk$set( comment = "#>", collapse = TRUE, cache = TRUE, out.width = "70%", fig.align = 'center', fig.width = 6, fig.asp = 0.618, # 1 / phi fig.show = "hold" ) options(dplyr.print_min = 6, dplyr.print_max = 6) ================================================ FILE: 2020年/2020年R数据科学系列/《R数据科学》源代码/_output.yaml ================================================ bookdown::gitbook: config: toc: collapse: section before: |
  • R for Data Science
  • edit: link: https://github.com/hadley/r4ds/edit/master/%s text: "Edit" sharing: no css: r4ds.css bookdown::pdf_book: latex_engine: "xelatex" ================================================ FILE: 2020年/2020年R数据科学系列/《R数据科学》源代码/communicate-plots.Rmd ================================================ # Graphics for communication ## Introduction In [exploratory data analysis], you learned how to use plots as tools for _exploration_. When you make exploratory plots, you know---even before looking---which variables the plot will display. You made each plot for a purpose, could quickly look at it, and then move on to the next plot. In the course of most analyses, you'll produce tens or hundreds of plots, most of which are immediately thrown away. Now that you understand your data, you need to _communicate_ your understanding to others. Your audience will likely not share your background knowledge and will not be deeply invested in the data. To help others quickly build up a good mental model of the data, you will need to invest considerable effort in making your plots as self-explanatory as possible. In this chapter, you'll learn some of the tools that ggplot2 provides to do so. This chapter focuses on the tools you need to create good graphics. I assume that you know what you want, and just need to know how to do it. For that reason, I highly recommend pairing this chapter with a good general visualisation book. I particularly like [_The Truthful Art_](https://amzn.com/0321934075), by Albert Cairo. It doesn't teach the mechanics of creating visualisations, but instead focuses on what you need to think about in order to create effective graphics. ### Prerequisites In this chapter, we'll focus once again on ggplot2. We'll also use a little dplyr for data manipulation, and a few ggplot2 extension packages, including __ggrepel__ and __viridis__. Rather than loading those extensions here, we'll refer to their functions explicitly, using the `::` notation. This will help make it clear which functions are built into ggplot2, and which come from other packages. Don't forget you'll need to install those packages with `install.packages()` if you don't already have them. ```{r, message = FALSE} library(tidyverse) ``` ## Label The easiest place to start when turning an exploratory graphic into an expository graphic is with good labels. You add labels with the `labs()` function. This example adds a plot title: ```{r, message = FALSE} ggplot(mpg, aes(displ, hwy)) + geom_point(aes(color = class)) + geom_smooth(se = FALSE) + labs(title = "Fuel efficiency generally decreases with engine size") ``` The purpose of a plot title is to summarise the main finding. Avoid titles that just describe what the plot is, e.g. "A scatterplot of engine displacement vs. fuel economy". If you need to add more text, there are two other useful labels that you can use in ggplot2 2.2.0 and above (which should be available by the time you're reading this book): * `subtitle` adds additional detail in a smaller font beneath the title. * `caption` adds text at the bottom right of the plot, often used to describe the source of the data. ```{r, message = FALSE} ggplot(mpg, aes(displ, hwy)) + geom_point(aes(color = class)) + geom_smooth(se = FALSE) + labs( title = "Fuel efficiency generally decreases with engine size", subtitle = "Two seaters (sports cars) are an exception because of their light weight", caption = "Data from fueleconomy.gov" ) ``` You can also use `labs()` to replace the axis and legend titles. It's usually a good idea to replace short variable names with more detailed descriptions, and to include the units. ```{r, message = FALSE} ggplot(mpg, aes(displ, hwy)) + geom_point(aes(colour = class)) + geom_smooth(se = FALSE) + labs( x = "Engine displacement (L)", y = "Highway fuel economy (mpg)", colour = "Car type" ) ``` It's possible to use mathematical equations instead of text strings. Just switch `""` out for `quote()` and read about the available options in `?plotmath`: ```{r, fig.asp = 1, out.width = "50%", fig.width = 3} df <- tibble( x = runif(10), y = runif(10) ) ggplot(df, aes(x, y)) + geom_point() + labs( x = quote(sum(x[i] ^ 2, i == 1, n)), y = quote(alpha + beta + frac(delta, theta)) ) ``` ### Exercises 1. Create one plot on the fuel economy data with customised `title`, `subtitle`, `caption`, `x`, `y`, and `colour` labels. 1. The `geom_smooth()` is somewhat misleading because the `hwy` for large engines is skewed upwards due to the inclusion of lightweight sports cars with big engines. Use your modelling tools to fit and display a better model. 1. Take an exploratory graphic that you've created in the last month, and add informative titles to make it easier for others to understand. ## Annotations In addition to labelling major components of your plot, it's often useful to label individual observations or groups of observations. The first tool you have at your disposal is `geom_text()`. `geom_text()` is similar to `geom_point()`, but it has an additional aesthetic: `label`. This makes it possible to add textual labels to your plots. There are two possible sources of labels. First, you might have a tibble that provides labels. The plot below isn't terribly useful, but it illustrates a useful approach: pull out the most efficient car in each class with dplyr, and then label it on the plot: ```{r} best_in_class <- mpg %>% group_by(class) %>% filter(row_number(desc(hwy)) == 1) ggplot(mpg, aes(displ, hwy)) + geom_point(aes(colour = class)) + geom_text(aes(label = model), data = best_in_class) ``` This is hard to read because the labels overlap with each other, and with the points. We can make things a little better by switching to `geom_label()` which draws a rectangle behind the text. We also use the `nudge_y` parameter to move the labels slightly above the corresponding points: ```{r} ggplot(mpg, aes(displ, hwy)) + geom_point(aes(colour = class)) + geom_label(aes(label = model), data = best_in_class, nudge_y = 2, alpha = 0.5) ``` That helps a bit, but if you look closely in the top-left hand corner, you'll notice that there are two labels practically on top of each other. This happens because the highway mileage and displacement for the best cars in the compact and subcompact categories are exactly the same. There's no way that we can fix these by applying the same transformation for every label. Instead, we can use the __ggrepel__ package by Kamil Slowikowski. This useful package will automatically adjust labels so that they don't overlap: ```{r} ggplot(mpg, aes(displ, hwy)) + geom_point(aes(colour = class)) + geom_point(size = 3, shape = 1, data = best_in_class) + ggrepel::geom_label_repel(aes(label = model), data = best_in_class) ``` Note another handy technique used here: I added a second layer of large, hollow points to highlight the points that I've labelled. You can sometimes use the same idea to replace the legend with labels placed directly on the plot. It's not wonderful for this plot, but it isn't too bad. (`theme(legend.position = "none"`) turns the legend off --- we'll talk about it more shortly.) ```{r} class_avg <- mpg %>% group_by(class) %>% summarise( displ = median(displ), hwy = median(hwy) ) ggplot(mpg, aes(displ, hwy, colour = class)) + ggrepel::geom_label_repel(aes(label = class), data = class_avg, size = 6, label.size = 0, segment.color = NA ) + geom_point() + theme(legend.position = "none") ``` Alternatively, you might just want to add a single label to the plot, but you'll still need to create a data frame. Often, you want the label in the corner of the plot, so it's convenient to create a new data frame using `summarise()` to compute the maximum values of x and y. ```{r} label <- mpg %>% summarise( displ = max(displ), hwy = max(hwy), label = "Increasing engine size is \nrelated to decreasing fuel economy." ) ggplot(mpg, aes(displ, hwy)) + geom_point() + geom_text(aes(label = label), data = label, vjust = "top", hjust = "right") ``` If you want to place the text exactly on the borders of the plot, you can use `+Inf` and `-Inf`. Since we're no longer computing the positions from `mpg`, we can use `tibble()` to create the data frame: ```{r} label <- tibble( displ = Inf, hwy = Inf, label = "Increasing engine size is \nrelated to decreasing fuel economy." ) ggplot(mpg, aes(displ, hwy)) + geom_point() + geom_text(aes(label = label), data = label, vjust = "top", hjust = "right") ``` In these examples, I manually broke the label up into lines using `"\n"`. Another approach is to use `stringr::str_wrap()` to automatically add line breaks, given the number of characters you want per line: ```{r} "Increasing engine size is related to decreasing fuel economy." %>% stringr::str_wrap(width = 40) %>% writeLines() ``` Note the use of `hjust` and `vjust` to control the alignment of the label. Figure \@ref(fig:just) shows all nine possible combinations. ```{r just, echo = FALSE, fig.cap = "All nine combinations of `hjust` and `vjust`.", fig.asp = 0.5, fig.width = 4.5, out.width = "60%"} vjust <- c(bottom = 0, center = 0.5, top = 1) hjust <- c(left = 0, center = 0.5, right = 1) df <- tidyr::crossing(hj = names(hjust), vj = names(vjust)) %>% mutate( y = vjust[vj], x = hjust[hj], label = paste0("hjust = '", hj, "'\n", "vjust = '", vj, "'") ) ggplot(df, aes(x, y)) + geom_point(colour = "grey70", size = 5) + geom_point(size = 0.5, colour = "red") + geom_text(aes(label = label, hjust = hj, vjust = vj), size = 4) + labs(x = NULL, y = NULL) ``` Remember, in addition to `geom_text()`, you have many other geoms in ggplot2 available to help annotate your plot. A few ideas: * Use `geom_hline()` and `geom_vline()` to add reference lines. I often make them thick (`size = 2`) and white (`colour = white`), and draw them underneath the primary data layer. That makes them easy to see, without drawing attention away from the data. * Use `geom_rect()` to draw a rectangle around points of interest. The boundaries of the rectangle are defined by aesthetics `xmin`, `xmax`, `ymin`, `ymax`. * Use `geom_segment()` with the `arrow` argument to draw attention to a point with an arrow. Use aesthetics `x` and `y` to define the starting location, and `xend` and `yend` to define the end location. The only limit is your imagination (and your patience with positioning annotations to be aesthetically pleasing)! ### Exercises 1. Use `geom_text()` with infinite positions to place text at the four corners of the plot. 1. Read the documentation for `annotate()`. How can you use it to add a text label to a plot without having to create a tibble? 1. How do labels with `geom_text()` interact with faceting? How can you add a label to a single facet? How can you put a different label in each facet? (Hint: think about the underlying data.) 1. What arguments to `geom_label()` control the appearance of the background box? 1. What are the four arguments to `arrow()`? How do they work? Create a series of plots that demonstrate the most important options. ## Scales The third way you can make your plot better for communication is to adjust the scales. Scales control the mapping from data values to things that you can perceive. Normally, ggplot2 automatically adds scales for you. For example, when you type: ```{r default-scales, fig.show = "hide"} ggplot(mpg, aes(displ, hwy)) + geom_point(aes(colour = class)) ``` ggplot2 automatically adds default scales behind the scenes: ```{r, fig.show = "hide"} ggplot(mpg, aes(displ, hwy)) + geom_point(aes(colour = class)) + scale_x_continuous() + scale_y_continuous() + scale_colour_discrete() ``` Note the naming scheme for scales: `scale_` followed by the name of the aesthetic, then `_`, then the name of the scale. The default scales are named according to the type of variable they align with: continuous, discrete, datetime, or date. There are lots of non-default scales which you'll learn about below. The default scales have been carefully chosen to do a good job for a wide range of inputs. Nevertheless, you might want to override the defaults for two reasons: * You might want to tweak some of the parameters of the default scale. This allows you to do things like change the breaks on the axes, or the key labels on the legend. * You might want to replace the scale altogether, and use a completely different algorithm. Often you can do better than the default because you know more about the data. ### Axis ticks and legend keys There are two primary arguments that affect the appearance of the ticks on the axes and the keys on the legend: `breaks` and `labels`. Breaks controls the position of the ticks, or the values associated with the keys. Labels controls the text label associated with each tick/key. The most common use of `breaks` is to override the default choice: ```{r} ggplot(mpg, aes(displ, hwy)) + geom_point() + scale_y_continuous(breaks = seq(15, 40, by = 5)) ``` You can use `labels` in the same way (a character vector the same length as `breaks`), but you can also set it to `NULL` to suppress the labels altogether. This is useful for maps, or for publishing plots where you can't share the absolute numbers. ```{r} ggplot(mpg, aes(displ, hwy)) + geom_point() + scale_x_continuous(labels = NULL) + scale_y_continuous(labels = NULL) ``` You can also use `breaks` and `labels` to control the appearance of legends. Collectively axes and legends are called __guides__. Axes are used for x and y aesthetics; legends are used for everything else. Another use of `breaks` is when you have relatively few data points and want to highlight exactly where the observations occur. For example, take this plot that shows when each US president started and ended their term. ```{r} presidential %>% mutate(id = 33 + row_number()) %>% ggplot(aes(start, id)) + geom_point() + geom_segment(aes(xend = end, yend = id)) + scale_x_date(NULL, breaks = presidential$start, date_labels = "'%y") ``` Note that the specification of breaks and labels for date and datetime scales is a little different: * `date_labels` takes a format specification, in the same form as `parse_datetime()`. * `date_breaks` (not shown here), takes a string like "2 days" or "1 month". ### Legend layout You will most often use `breaks` and `labels` to tweak the axes. While they both also work for legends, there are a few other techniques you are more likely to use. To control the overall position of the legend, you need to use a `theme()` setting. We'll come back to themes at the end of the chapter, but in brief, they control the non-data parts of the plot. The theme setting `legend.position` controls where the legend is drawn: ```{r fig.asp = 1, fig.align = "default", out.width = "50%", fig.width = 4} base <- ggplot(mpg, aes(displ, hwy)) + geom_point(aes(colour = class)) base + theme(legend.position = "left") base + theme(legend.position = "top") base + theme(legend.position = "bottom") base + theme(legend.position = "right") # the default ``` You can also use `legend.position = "none"` to suppress the display of the legend altogether. To control the display of individual legends, use `guides()` along with `guide_legend()` or `guide_colourbar()`. The following example shows two important settings: controlling the number of rows the legend uses with `nrow`, and overriding one of the aesthetics to make the points bigger. This is particularly useful if you have used a low `alpha` to display many points on a plot. ```{r} ggplot(mpg, aes(displ, hwy)) + geom_point(aes(colour = class)) + geom_smooth(se = FALSE) + theme(legend.position = "bottom") + guides(colour = guide_legend(nrow = 1, override.aes = list(size = 4))) ``` ### Replacing a scale Instead of just tweaking the details a little, you can instead replace the scale altogether. There are two types of scales you're mostly likely to want to switch out: continuous position scales and colour scales. Fortunately, the same principles apply to all the other aesthetics, so once you've mastered position and colour, you'll be able to quickly pick up other scale replacements. It's very useful to plot transformations of your variable. For example, as we've seen in [diamond prices](diamond-prices) it's easier to see the precise relationship between `carat` and `price` if we log transform them: ```{r, fig.align = "default", out.width = "50%"} ggplot(diamonds, aes(carat, price)) + geom_bin2d() ggplot(diamonds, aes(log10(carat), log10(price))) + geom_bin2d() ``` However, the disadvantage of this transformation is that the axes are now labelled with the transformed values, making it hard to interpret the plot. Instead of doing the transformation in the aesthetic mapping, we can instead do it with the scale. This is visually identical, except the axes are labelled on the original data scale. ```{r} ggplot(diamonds, aes(carat, price)) + geom_bin2d() + scale_x_log10() + scale_y_log10() ``` Another scale that is frequently customised is colour.The default categorical scale picks colours that are evenly spaced around the colour wheel. Useful alternatives are the ColorBrewer scales which have been hand tuned to work better for people with common types of colour blindness. The two plots below look similar, but there is enough difference in the shades of red and green that the dots on the right can be distinguished even by people with red-green colour blindness. ```{r, fig.align = "default", out.width = "50%"} ggplot(mpg, aes(displ, hwy)) + geom_point(aes(color = drv)) ggplot(mpg, aes(displ, hwy)) + geom_point(aes(color = drv)) + scale_colour_brewer(palette = "Set1") ``` Don't forget simpler techniques. If there are just a few colours, you can add a redundant shape mapping. This will also help ensure your plot is interpretable in black and white. ```{r} ggplot(mpg, aes(displ, hwy)) + geom_point(aes(color = drv, shape = drv)) + scale_colour_brewer(palette = "Set1") ``` The ColorBrewer scales are documented online at and made available in R via the __RColorBrewer__ package, by Erich Neuwirth. Figure \@ref(fig:brewer) shows the complete list of all palettes. The sequential (top) and diverging (bottom) palettes are particularly useful if your categorical values are ordered, or have a "middle". This often arises if you've used `cut()` to make a continuous variable into a categorical variable. ```{r brewer, fig.asp = 2.5, echo = FALSE, fig.cap = "All ColourBrewer scales."} par(mar = c(0, 3, 0, 0)) RColorBrewer::display.brewer.all() ``` When you have a predefined mapping between values and colours, use `scale_colour_manual()`. For example, if we map presidential party to colour, we want to use the standard mapping of red for Republicans and blue for Democrats: ```{r} presidential %>% mutate(id = 33 + row_number()) %>% ggplot(aes(start, id, colour = party)) + geom_point() + geom_segment(aes(xend = end, yend = id)) + scale_colour_manual(values = c(Republican = "red", Democratic = "blue")) ``` For continuous colour, you can use the built-in `scale_colour_gradient()` or `scale_fill_gradient()`. If you have a diverging scale, you can use `scale_colour_gradient2()`. That allows you to give, for example, positive and negative values different colours. That's sometimes also useful if you want to distinguish points above or below the mean. Another option is `scale_colour_viridis()` provided by the __viridis__ package. It's a continuous analog of the categorical ColorBrewer scales. The designers, Nathaniel Smith and Stéfan van der Walt, carefully tailored a continuous colour scheme that has good perceptual properties. Here's an example from the viridis vignette. ```{r, fig.align = "default", fig.asp = 1, out.width = "50%", fig.width = 4} df <- tibble( x = rnorm(10000), y = rnorm(10000) ) ggplot(df, aes(x, y)) + geom_hex() + coord_fixed() ggplot(df, aes(x, y)) + geom_hex() + viridis::scale_fill_viridis() + coord_fixed() ``` Note that all colour scales come in two variety: `scale_colour_x()` and `scale_fill_x()` for the `colour` and `fill` aesthetics respectively (the colour scales are available in both UK and US spellings). ### Exercises 1. Why doesn't the following code override the default scale? ```{r fig.show = "hide"} ggplot(df, aes(x, y)) + geom_hex() + scale_colour_gradient(low = "white", high = "red") + coord_fixed() ``` 1. What is the first argument to every scale? How does it compare to `labs()`? 1. Change the display of the presidential terms by: 1. Combining the two variants shown above. 1. Improving the display of the y axis. 1. Labelling each term with the name of the president. 1. Adding informative plot labels. 1. Placing breaks every 4 years (this is trickier than it seems!). 1. Use `override.aes` to make the legend on the following plot easier to see. ```{r, dev = "png", out.width = "50%"} ggplot(diamonds, aes(carat, price)) + geom_point(aes(colour = cut), alpha = 1/20) ``` ## Zooming There are three ways to control the plot limits: 1. Adjusting what data are plotted 1. Setting the limits in each scale 1. Setting `xlim` and `ylim` in `coord_cartesian()` To zoom in on a region of the plot, it's generally best to use `coord_cartesian()`. Compare the following two plots: ```{r out.width = "50%", fig.align = "default", message = FALSE} ggplot(mpg, mapping = aes(displ, hwy)) + geom_point(aes(color = class)) + geom_smooth() + coord_cartesian(xlim = c(5, 7), ylim = c(10, 30)) mpg %>% filter(displ >= 5, displ <= 7, hwy >= 10, hwy <= 30) %>% ggplot(aes(displ, hwy)) + geom_point(aes(color = class)) + geom_smooth() ``` You can also set the `limits` on individual scales. Reducing the limits is basically equivalent to subsetting the data. It is generally more useful if you want _expand_ the limits, for example, to match scales across different plots. For example, if we extract two classes of cars and plot them separately, it's difficult to compare the plots because all three scales (the x-axis, the y-axis, and the colour aesthetic) have different ranges. ```{r out.width = "50%", fig.align = "default", fig.width = 4} suv <- mpg %>% filter(class == "suv") compact <- mpg %>% filter(class == "compact") ggplot(suv, aes(displ, hwy, colour = drv)) + geom_point() ggplot(compact, aes(displ, hwy, colour = drv)) + geom_point() ``` One way to overcome this problem is to share scales across multiple plots, training the scales with the `limits` of the full data. ```{r out.width = "50%", fig.align = "default", fig.width = 4} x_scale <- scale_x_continuous(limits = range(mpg$displ)) y_scale <- scale_y_continuous(limits = range(mpg$hwy)) col_scale <- scale_colour_discrete(limits = unique(mpg$drv)) ggplot(suv, aes(displ, hwy, colour = drv)) + geom_point() + x_scale + y_scale + col_scale ggplot(compact, aes(displ, hwy, colour = drv)) + geom_point() + x_scale + y_scale + col_scale ``` In this particular case, you could have simply used faceting, but this technique is useful more generally, if for instance, you want spread plots over multiple pages of a report. ## Themes Finally, you can customise the non-data elements of your plot with a theme: ```{r, message = FALSE} ggplot(mpg, aes(displ, hwy)) + geom_point(aes(color = class)) + geom_smooth(se = FALSE) + theme_bw() ``` ggplot2 includes eight themes by default, as shown in Figure \@ref(fig:themes). Many more are included in add-on packages like __ggthemes__ (), by Jeffrey Arnold. ```{r themes, echo = FALSE, fig.cap = "The eight themes built-in to ggplot2."} knitr::include_graphics("images/visualization-themes.png") ``` Many people wonder why the default theme has a grey background. This was a deliberate choice because it puts the data forward while still making the grid lines visible. The white grid lines are visible (which is important because they significantly aid position judgements), but they have little visual impact and we can easily tune them out. The grey background gives the plot a similar typographic colour to the text, ensuring that the graphics fit in with the flow of a document without jumping out with a bright white background. Finally, the grey background creates a continuous field of colour which ensures that the plot is perceived as a single visual entity. It's also possible to control individual components of each theme, like the size and colour of the font used for the y axis. Unfortunately, this level of detail is outside the scope of this book, so you'll need to read the [ggplot2 book](https://amzn.com/331924275X) for the full details. You can also create your own themes, if you are trying to match a particular corporate or journal style. ## Saving your plots There are two main ways to get your plots out of R and into your final write-up: `ggsave()` and knitr. `ggsave()` will save the most recent plot to disk: ```{r, fig.show = "none"} ggplot(mpg, aes(displ, hwy)) + geom_point() ggsave("my-plot.pdf") ``` ```{r, include = FALSE} file.remove("my-plot.pdf") ``` If you don't specify the `width` and `height` they will be taken from the dimensions of the current plotting device. For reproducible code, you'll want to specify them. Generally, however, I think you should be assembling your final reports using R Markdown, so I want to focus on the important code chunk options that you should know about for graphics. You can learn more about `ggsave()` in the documentation. ### Figure sizing The biggest challenge of graphics in R Markdown is getting your figures the right size and shape. There are five main options that control figure sizing: `fig.width`, `fig.height`, `fig.asp`, `out.width` and `out.height`. Image sizing is challenging because there are two sizes (the size of the figure created by R and the size at which it is inserted in the output document), and multiple ways of specifying the size (i.e., height, width, and aspect ratio: pick two of three). I only ever use three of the five options: * I find it most aesthetically pleasing for plots to have a consistent width. To enforce this, I set `fig.width = 6` (6") and `fig.asp = 0.618` (the golden ratio) in the defaults. Then in individual chunks, I only adjust `fig.asp`. * I control the output size with `out.width` and set it to a percentage of the line width). I default to `out.width = "70%"` and `fig.align = "center"`. That give plots room to breathe, without taking up too much space. * To put multiple plots in a single row I set the `out.width` to `50%` for two plots, `33%` for 3 plots, or `25%` to 4 plots, and set `fig.align = "default"`. Depending on what I'm trying to illustrate (e.g. show data or show plot variations), I'll also tweak `fig.width`, as discussed below. If you find that you're having to squint to read the text in your plot, you need to tweak `fig.width`. If `fig.width` is larger than the size the figure is rendered in the final doc, the text will be too small; if `fig.width` is smaller, the text will be too big. You'll often need to do a little experimentation to figure out the right ratio between the `fig.width` and the eventual width in your document. To illustrate the principle, the following three plots have `fig.width` of 4, 6, and 8 respectively: ```{r, include = FALSE} plot <- ggplot(mpg, aes(displ, hwy)) + geom_point() ``` ```{r, fig.width = 4, echo = FALSE} plot ``` ```{r, fig.width = 6, echo = FALSE} plot ``` ```{r, fig.width = 8, echo = FALSE} plot ``` If you want to make sure the font size is consistent across all your figures, whenever you set `out.width`, you'll also need to adjust `fig.width` to maintain the same ratio with your default `out.width`. For example, if your default `fig.width` is 6 and `out.width` is 0.7, when you set `out.width = "50%"` you'll need to set `fig.width` to 4.3 (6 * 0.5 / 0.7). ### Other important options When mingling code and text, like I do in this book, I recommend setting `fig.show = "hold"` so that plots are shown after the code. This has the pleasant side effect of forcing you to break up large blocks of code with their explanations. To add a caption to the plot, use `fig.cap`. In R Markdown this will change the figure from inline to "floating". If you're producing PDF output, the default graphics type is PDF. This is a good default because PDFs are high quality vector graphics. However, they can produce very large and slow plots if you are displaying thousands of points. In that case, set `dev = "png"` to force the use of PNGs. They are slightly lower quality, but will be much more compact. It's a good idea to name code chunks that produce figures, even if you don't routinely label other chunks. The chunk label is used to generate the file name of the graphic on disk, so naming your chunks makes it much easier to pick out plots and reuse in other circumstances (i.e. if you want to quickly drop a single plot into an email or a tweet). ## Learning more The absolute best place to learn more is the ggplot2 book: [_ggplot2: Elegant graphics for data analysis_](https://amzn.com/331924275X). It goes into much more depth about the underlying theory, and has many more examples of how to combine the individual pieces to solve practical problems. Unfortunately, the book is not available online for free, although you can find the source code at . Another great resource is the ggplot2 extensions guide . This site lists many of the packages that extend ggplot2 with new geoms and scales. It's a great place to start if you're trying to do something that seems hard with ggplot2. ================================================ FILE: 2020年/2020年R数据科学系列/《R数据科学》源代码/communicate.Rmd ================================================ # (PART) Communicate {-} # Introduction {#communicate-intro} So far, you've learned the tools to get your data into R, tidy it into a form convenient for analysis, and then understand your data through transformation, visualisation and modelling. However, it doesn't matter how great your analysis is unless you can explain it to others: you need to __communicate__ your results. ```{r echo = FALSE, out.width = "75%"} knitr::include_graphics("diagrams/data-science-communicate.png") ``` Communication is the theme of the following four chapters: * In [R Markdown], you will learn about R Markdown, a tool for integrating prose, code, and results. You can use R Markdown in notebook mode for analyst-to-analyst communication, and in report mode for analyst-to-decision-maker communication. Thanks to the power of R Markdown formats, you can even use the same document for both purposes. * In [Graphics for communication], you will learn how to take your exploratory graphics and turn them into expository graphics, graphics that help the newcomer to your analysis understand what's going on as quickly and easily as possible. * In [R Markdown formats], you'll learn a little about the many other varieties of outputs you can produce using R Markdown, including dashboards, websites, and books. * We'll finish up with [R Markdown workflow], where you'll learn about the "analysis notebook" and how to systematically record your successes and failures so that you can learn from them. Unfortunately, these chapters focus mostly on the technical mechanics of communication, not the really hard problems of communicating your thoughts to other humans. However, there are lot of other great books about communication, which we'll point you to at the end of each chapter. ================================================ FILE: 2020年/2020年R数据科学系列/《R数据科学》源代码/contribs.txt ================================================ 625 hadley 93 Garrett 77 Hadley Wickham 50 S'busiso Mkhondwane 21 behrman 11 Brett Klamer 10 Radu Grosu 9 Brandon Greenwell 8 Bill Behrman 7 Garrett Grolemund 7 Rademeyer Vermaak 7 Colin Gillespie 7 harrismcgehee 6 jjchern 6 Jakub Nowosad 6 OaCantona 5 kdpsingh 5 Julian During 4 Thomas Klebel 4 Mine Cetinkaya-Rundel 4 Jennifer (Jenny) Bryan 4 Terence Teo 4 Patrick Kennedy 3 Jonathan Page 3 Jose Roberto Ayala Solares 3 yahwes 3 seamus-mckinsey 3 Ian Lyttle 3 Ian Sealy 3 Yihui Xie 2 Cooper Morris 2 Christian G. Warden 2 Daniel Gromer 2 Devin Pastoor 2 Etienne B. Racine 2 Jim Hester 2 Joanne Jang 2 Kirill Sevastyanenko 2 MJMarshall 2 Nirmal Patel 2 Paul 2 Robert Schuessler 2 Will Beasley 2 rlzijdeman 2 robinlovelace 2 sibusiso16 2 spirgel 1 robinsones 1 Jeroen Janssens 1 Mustafa Ascha 1 Nelson Areal 1 Nick Clark 1 Alex 1 Hengni Cai 1 Gregory Jefferis 1 seanpwilliams 1 Peter Hurford 1 Flemming Villalona 1 Eric Watt 1 shoili 1 Earl Brown 1 Shannon Ellis 1 Steve Mortimer 1 TJ Mahr 1 Dylan Cashman 1 Derwin McGeary 1 Tom Prior 1 Ajay Deonarine 1 David Clark 1 adi pradhan 1 bahadir cankardes 1 batpigandme 1 Curtis Alexander 1 Ahmed ElGabbas 1 Christian Mongeau 1 jennybc 1 Ben Marwick 1 jonathanflint 1 Andrew Landgraf 1 koalabearski 1 nate-d-olson 1 nickelas 1 nwaff 1 zeal626 1 Jon Calder 1 Julia Stewart Lowndes 1 John Sears 1 Justinas Petuchovas 1 Kara Woo 1 Kenny Darrell 1 svenski 1 KyleHumphrey 1 Lawrence Wu 1 Matthew Sedaghatfar ================================================ FILE: 2020年/2020年R数据科学系列/《R数据科学》源代码/contribute.rmd ================================================ # Contributing This book has been developed in the open, and it wouldn't be nearly as good without your contributions. There are a number of ways you can help make the book even better: * If you don't understand something, please [let me know](mailto:h.wickham@gmail.com). Your feedback on what is confusing or hard to understand is valuable. * If you spot a typo, feel free to edit the underlying page and send a pull request. If you've never done this before, the process is very easy: * Click the edit this page on the sidebar. * Make the changes using github's in-page editor and save. * Submit a pull request and include a brief description of your changes. "Fixing typos" is perfectly adequate. * If you make significant changes, include the phrase "I assign the copyright of this contribution to Hadley Wickham" - I need this so I can publish the printed book. ================================================ FILE: 2020年/2020年R数据科学系列/《R数据科学》源代码/datetimes.Rmd ================================================ # Dates and times ## Introduction This chapter will show you how to work with dates and times in R. At first glance, dates and times seem simple. You use them all the time in your regular life, and they don't seem to cause much confusion. However, the more you learn about dates and times, the more complicated they seem to get. To warm up, try these three seemingly simple questions: * Does every year have 365 days? * Does every day have 24 hours? * Does every minute have 60 seconds? I'm sure you know that not every year has 365 days, but do you know the full rule for determining if a year is a leap year? (It has three parts.) You might have remembered that many parts of the world use daylight savings time (DST), so that some days have 23 hours, and others have 25. You might not have known that some minutes have 61 seconds because every now and then leap seconds are added because the Earth's rotation is gradually slowing down. Dates and times are hard because they have to reconcile two physical phenomena (the rotation of the Earth and its orbit around the sun) with a whole raft of geopolitical phenomena including months, time zones, and DST. This chapter won't teach you every last detail about dates and times, but it will give you a solid grounding of practical skills that will help you with common data analysis challenges. ### Prerequisites This chapter will focus on the __lubridate__ package, which makes it easier to work with dates and times in R. lubridate is not part of core tidyverse because you only need it when you're working with dates/times. We will also need nycflights13 for practice data. ```{r setup, message = FALSE} library(tidyverse) library(lubridate) library(nycflights13) ``` ## Creating date/times There are three types of date/time data that refer to an instant in time: * A __date__. Tibbles print this as ``. * A __time__ within a day. Tibbles print this as `