网站建设方案书 人员安排如何制作公司免费网站
2026/2/18 14:18:18 网站建设 项目流程
网站建设方案书 人员安排,如何制作公司免费网站,阜宁网站制作收费标准,html代码大全网页设计原文#xff1a;towardsdatascience.com/introducing-tmap-for-visualization-and-data-analysis-82c51cd17632 简介 并非每个数据科学家都必须在 Python 或 R 之间做出选择。我经常看到关于这个问题的讨论#xff0c;有些令人烦恼#xff0c;有些相当有趣。但事实是#…原文towardsdatascience.com/introducing-tmap-for-visualization-and-data-analysis-82c51cd17632简介并非每个数据科学家都必须在 Python 或 R 之间做出选择。我经常看到关于这个问题的讨论有些令人烦恼有些相当有趣。但事实是现在和将来都会有许多数据科学家能够使用这两种语言因为他们不需要部署任何东西或把整个应用程序上线。他们只需要分析一些数据并创建一个简单的演示文稿如果你愿意就是老式的 PowerPoint。最近我需要这样做。我必须获取一些包含纬度和经度信息的几个数据点分析这些点并构思出良好的数据故事来详细阐述我的见解。我必须说我喜欢使用 R。我认为这种语言易于编码并且包构建得相当好。我宝库中的一个就是tmap库。我宝库中的一个库是tmap。主题地图或简称为tmap是一个在 R 中构建的库用于处理空间数据其名称中的主题意味着我们可以使用气泡、面状图和图层等资源来自定义和可视化数据基于 图形语法因此与ggplot2类似根据库创建者的说法。在这篇帖子中我们将回顾基础知识帮助你快速掌握使用这个优秀工具构建地图为你提供一个坚实的基础来创建可视化并继续学习以创建更完善的地图。让我们导入一些库并开始工作。提醒一下如果你没有这些库只需使用install.packages(name_of_the_library)在你的 R Studio 中安装它。library(tidyverse)# for data manipulationlibrary(tmap)# for map visualizationlibrary(sf)# for shapefile manipulation基础知识当使用tmap时你需要有可以在地图上绘制的数据。通常纬度和经度变量就足够了。但当然如果你有一个包含每个需要可视化的区域的多边形形状文件的文件这将大大有助于创建更完善的视图。tmap的最基本要求是它需要形状文件对象才能绘制某些内容。让我们看看如何创建它。形状文件形状文件通常用于地理空间数据分析。这个对象就像一个数据框但它可以存储诸如位置、几何形状和点、线或多边形的属性等向量。为了更清楚地说明想象一下形状文件是一个数据集它存储一个包含笛卡尔位置点、街道线或确定区域多边形的地图上的列。有时候你可能会在分析的开始阶段就有一个形状文件。以tmap库下 GPL 3.0 许可证中存在的World数据集为例。# Load the dataset Worlddata(World)# Checking the data typeclass(World)[1]sfdata.frame这已经是一个形状文件。如果我们进一步查看数据我们会看到它几乎就像一个常规数据集但它增加了一个名为geometry的额外列其中包含每个国家多边形的向量这使得可以在地图上玩转和创建可视化。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/331d92e4287235ab62453c793fe0f93d.png几何列创建地图上每个国家形状的向量。图片由作者提供。现在让我们看看如何在tmap中使用那个文件。“Hello Plot”tmap中图表的Hello World简单。我们将每个图表都以tm_shape()函数开始该函数的作用是告诉库正在绘制哪个形状文件World。然后我们必须添加我们想要绘制的形状类型在这种情况下是多边形。因此我们使用tm_polygons。这就是我们的第一个图表# Plotting the World Maptm_shape(World)tm_polygons()https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/bef880e094e0b7bb95978ba813776cae.png第一个 tmap 图表。图片由作者提供。现在这个地图非常无聊它没有告诉我们任何东西。从那里我们需要继续添加更多参数和层才能真正理解我们的数据。渐变色地图让我们从添加颜色开始。在tmap中创建一个渐变色地图相当简单。我们只需要将感兴趣的变量作为参数传递给tm_polygons。# Plotting a coropleth of the World Map based on life expectancytm_shape(World)tm_polygons(collife_exp)接下来是结果。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/66f50b645d7daf67ba1f2c488fe177e2.png按国家生活期望的渐变色地图。图片由作者提供。注意到tmap甚至会自动添加按组分的图例。如果需要这是可定制的但很棒的是库已经为我们做了这件事因为它可以在数据探索过程中节省一些时间。从上面的地图中现在很容易看出人们在哪里生活得更久比如澳大利亚、日本、北美和西欧。看到整个美国现在几乎全部超过 60 岁左右这真是个令人愉快的事情。添加其他元素如前所述tmap是关于层级的。向我们的图表中添加元素很容易。继续在World图表上让我们添加一些更多元素。我们可以添加一些大小根据人口变化的正方形。以下是创建该视图的方法我们只需添加tm_dots函数并传递size pop_est参数。在代码中我们还在alpha中添加了一些不透明度并将默认的圆形形状改为正方形。# Hello Plot with colors and squarestm_shape(World)tm_polygons(collife_exp)tm_dots(sizepop_est,alpha0.5,shape15)https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/e198fd64ec1d7141fe5bbb55cbf76ac5.png渐变色和点。图片由作者提供。我们可以玩转这些元素比如添加不同的调色板palette使用scale参数通过数字乘以符号大小。添加文本同样简单使用tm_text。# Plot with many elementstm_shape(World)#main shapetm_polygons(collife_exp)#polygon for choroplethtm_dots(colblack,sizepop_est,scale2.5,alpha0.5,shape15)# squarestm_text(textiso_a3,size0.5,justbottom)#texthttps://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/b502f22476e2fe4973c8d8b23b67ad99.png面图、点状图和文本。图片由作者提供。这张图形显然很繁忙甚至有些令人眼花缭乱但这只是为了展示可能性。在继续我们的分析时我们可以质疑是什么使得一些国家的预期寿命高于其他国家可能是人均 GDP 在影响它。从逻辑上思考如果一个人有更多的钱那么他们能够负担更好的医疗保健是可以预期的。那么让我们并排绘制两个面图并比较预期寿命和人均 GDP。我们可以使用tm_facets函数做到这一点。# Plot with facettm_shape(World)#main shapetm_polygons(colc(gdp_cap_est,life_exp),stylequantile,paletteBlues)#polygon for choroplethtm_facets(nrow2)代码将显示以下图形。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/b55e1cca18ed9cdc9b25e07cf8b982c0.png使用 tmap 进行分面轻松比较预期寿命和人均 GDP。图片由作者提供。通过这个结果更容易看到两个变量之间的相似性。那些人均 GDP 较深的蓝色国家很多时候也会用较深的蓝色阴影来表示预期寿命。添加交互性到目前为止我们只使用了tmap的plot模式。但更有趣、更华丽的是这个包还提供了交互式地图。要使用它我们只需在绘制任何图形之前运行此代码。tmap_mode(view)然后当我们再次运行最后一段用于面图代码——但现在只是将国家代码、预期寿命和人均 GDP 添加到popup.vars中这里就是交互式结果。# Plot with facettm_shape(World)#main shapetm_polygons(colc(gdp_cap_est,life_exp),stylequantile,paletteBlues,popup.varsc(Countryiso_a3,Life_Explife_exp,GDP_capitagdp_cap_est))#polygon for choroplethtm_facets(nrow2)https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/6e0407a3ab597268df8d26335f01ad85.pngTmap 交互模式。图片由作者提供。这是这个库我最喜欢的功能之一。让我们继续前进。分析伦敦的汽车事故我们知道并非每个数据集都会是形状文件。事实上大多数都不是。因此我们必须有一种方法来处理只提供经纬度变量的数据集。这就是sf包派上用场的地方。以这个数据框**UrbanGB**为例它包含大不列颠的城市道路事故坐标可在 UCI 存储库的 Creative Commons 许可下获得。由于数据量相当大我只为伦敦的一个小部分进行了过滤仅用于教育目的。# Load accidents lat/long and labels datsetsdf-read_csv(path,col_namesc(Longitude,Latitude))labels-read_csv(path2,col_namesc(labels))# Bind both datasets and filter to part of Londondf2-df%%bind_cols(labels)%%filter(Latitude51.49amp;Latitude51.55amp;Longitude-0.20amp;Longitude-0.02)https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/1d1504d269b68b6d96a02b4aa81d34ef.png数据集提取。图片由作者提供。一旦被加载为df2类别类型是tibble它不会被tmap读取。如果我们尝试绘制一个基本形状它将不起作用。# errortm_shape(df2)tm_dots(collabel)Error:Object df2isneitherfromclasssf,stars,Spatial,Raster,nor SpatRaster.为了解决这个错误我们可以简单地将数据转换成形状文件。使用st_as_sf()函数来做这件事很简单我们给出数据集名称coords是纬度和经度坐标变量而crs参数是地理空间坐标系统的代码4326 是最常用的 GPS 代码。# We must transform the file to a Shapefile objectsf_df-st_as_sf(xdf2,coordsc(Longitude,Latitude),crs4326)一旦我们运行代码我们将有一个新的变量geometry它是特定经纬度位置的矢量并且数据类现在是shapefile。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/45b87cbdca90532fe1a00ce58bb77c6d.png从数据集创建的 shapefile。图片由作者提供。我们已经准备好绘制点。使用相同的代码我们可以绘制伦敦市中心发生车祸的位置的点。# plot pointstm_shape(sf_df)tm_dots(alpha0.2,colred,border.colgray90,#border colorborder.alpha0.1)#border opacityhttps://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/f56e62b18302dad982c578b0c7fa5d36.png伦敦市中心的车祸。图片由作者提供。接下来我们将添加一些旅游景点作为参考。我们可以通过加载一个新的数据集attractions将其转换为 shapefile并在tmap代码中添加一个新的 shape 来实现这一点。# Load the attractions fileattractions-read_csv(path3)# Transform to Shapefile for plottingattractions_sf-st_as_sf(xattractions,coordsc(longitude,latitude),crs4326)# plot pointstm_shape(sf_df)# car accidents datatm_dots(alpha0.3,colred,#dots configs for the car crashesborder.colgray90,border.alpha0.1)tm_shape(attractions_sf)#attractions datatm_symbols(size2,colblue)#config for the attractions points下面的地图是上述代码将显示的内容。请注意由于我们绘制了两个 shapefile我们获得了添加或从可视化中删除图层的能力。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/32c43d6e73c5c274f5b3eadd849e1875.png包含多个 shapefile 的 Tmap图层。图片由作者提供。进一步来说我们可以使用函数tm_markers()来绘制按邻近性分组的点。它显示落入某个区域内的点的总和。# plot markerstm_shape(sf_df)tm_markers(size0.25,alpha0.75)tm_shape(attractions_sf)#attractions datatm_symbols(size2,colblue)#config for the attractions points交互性非常出色使人们能够了解事故发生较多或较少的子区域并上升到街道级别。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/97372a100158565d59afacb94e9f1e45.pngtm_markers() 动作。图片由作者提供。人们可以找到一个有问题的角落例如例如Marylebone Road与Baker Street的交汇处那里我们记录了 34 起事故。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/e2f08de91c42c0b88d6cbf27487ea9d8.png街角车祸。图片由作者提供。缓冲区分析此外还有最后一件事要做那就是快速缓冲区分析。缓冲区分析是指我们确定一个位于指定距离内的点周围区域。这就是缓冲区。缓冲区分析是指我们确定一个位于指定距离内的点周围区域。这种类型的分析对我们来说可能很有趣可以看到事件是如何围绕我们的兴趣点发生的。在这种情况下伦敦旅游景点周围发生了多少车祸。这里的代码只从attractions中提取经纬度然后我们创建一个SpatialPoints对象接着进行到欧几里得点的转换spTransform以便缓冲函数能够工作。然后我们使用gBuffer创建缓冲区以 500 米的半径围绕景点。# To use buffer analysis, we need just lat/long info in a Shapefileattr_latlong-attractions%%select(-1)# Convert to Shapefileattr-SpatialPoints(coordsattr_latlong,proj4stringCRS(projlonglat))# Convert distances to euclidean, for gBuffer function to work properlyattr_UTM-spTransform(xattr,CRSobjCRS(initepsg:22523))# Buffer Analysis: distance from a pointbuffer_attractions-gBuffer(spgeomattr_UTM,width500,byidTRUE)我们可以使用buffer_attractions对象在一个 shape 中将其绘制到图形中。# Plot graphic buffertm_shape(buffer_attractions)# buffertm_borders(coldarkred)#buffer bordertm_fill(colblue,alpha0.1)#buffer filltm_shape(attractions_sf)# attractionstm_dots(size0.5,colblue)# attractions pointstm_shape(sf_df)# car accidents datatm_dots(alpha0.3,colred,#dots configs for the car crashesborder.colgray90,border.alpha0.1)因此这就是结果。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/2be4983b38c34dd2263766851d26f600.png汽车事故 旅游景点 缓冲区。图由作者提供。这是一个信息丰富的观点。英国广播公司大厦、威斯敏斯特教堂和议会大厦是我们注意到更多事故重叠缓冲区的地方。最后让我们看看分析完成后如何导出地图。保存地图要保存地图代码相当简单。我们可以使用tmap_save()函数文件名使用的扩展名将决定地图是否是交互式的。# Saving Mapsto_savetm_shape(sf_df)tm_markers(size0.25,alpha0.75)tm_shape(attractions_sf)#attractions datatm_symbols(size2,colblue)#config for the attractions points# save an imagetmap_save(to_save,filenameMy_Map.png)# save as interactive HTML filetmap_save(to_save,filenameMy_Map.html)https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/39e76d741035d3e5ed101ed80f5569aa.png本地保存的文件。图由作者提供。在你离开之前这是对tmap的简要介绍它是 R 语言的一个优秀的地图库。该库在涉及地理空间数据的许多分析中非常有用因为它提供了易于使用的强大功能。基本上我们只需要一个 shapefile。其余的只是根据需要构建图层。作为总结地图需要一个 shapefile 才能工作基本绘图由一个 shapefile 和一个几何形状组成例如tm_shape() tm_dots()多边形是地图上的区域线是河流或街道点是位置经纬度tmap_mode(plot)用于简单的绘图静态的。tmap_mode(view)用于交互式绘图。这里是 GitHub 上的代码Studying/R/TMAP at master · gurezende/Studying如果你喜欢这个内容请关注我获取更多内容并订阅我的通讯。Gustavo Santos – Medium还可以在 LinkedIn 上找到我这里.参考文献UCI 机器学习仓库RPubstmap: vignettes/tmap-getstarted.RmdShapefilecdn.embedly.com/widgets/media.html?srchttps%3A%2F%2Fwww.youtube.com%2Fembed%2FKwy-7rb3v-A%3Ffeature%3Doembeddisplay_nameYouTubeurlhttps%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DKwy-7rb3v-Aimagehttps%3A%2F%2Fi.ytimg.com%2Fvi%2FKwy-7rb3v-A%2Fhqdefault.jpgkeya19fcc184b9711e1b4764040d3dc5c07typetext%2Fhtmlschemayoutube

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询