tablueau地图标记圆形_R语言在线地图神器:Leaflet for R包(三) 符号标记

如果还是直接写,会出现错误提示,说找不到经纬度的列

像这种情况,就需要进行显式申明了:(顺便换个背景底图)

leaflet(dh)%>%addProviderTiles("Esri.WorldStreetMap")%>%setView(116.4,39.9,zoom=10)%>%addMarkers(~x,~y,popup=~mc)

如果你觉得这种默认的图钉样式不好看,还可以定制自己的符号,比如我下面想用红十字来表示医院:

首先用makeIcon这个方法,来定义一个图标,注意里面Url必须是要用http模式,我这里用csdn提供的免费图床,本地硬盘上的图片好像是不能直接用的。(ps:如果不想用互联网的图床,也可以在本地开启一个web服务器,使用url方式来引用)。

makeIcon的语法如下:

iconUrl: 图标的url地址

iconWidth:图标的宽度

iconHeight: 图标的高度

iconAnchorX:图标的中心点x轴偏移(以左上角为0,0)

iconAnchorY:图标的中心点Y轴偏移(以左上角为0,0)

redIcon

iconUrl = "https://img-blog.csdn.net/20161015170050664",

iconWidth = 38, iconHeight = 38,

iconAnchorX = 19, iconAnchorY = 19

)

leaflet(bj3H[])%>%addTiles()%>%

addMarkers(popup=~mc,icon = redIcon)

有时候还需要配置不同的图标来显示不同的内容,当然最简单的方式就是分批次加载不同的数据:先定义两个不同的符号,然后筛选数据,分批次加载,三级医院用传统红十字,三级甲等用镶边红十字,如下:

redIcon1

iconUrl = "https://img-blog.csdn.net/20161015170050664",

iconWidth = 38, iconHeight = 38,

iconAnchorX = 19, iconAnchorY = 19

)

redIcon2

iconUrl = "https://img-blog.csdn.net/20161015173507516",

iconWidth = 38, iconHeight = 38,

iconAnchorX = 19, iconAnchorY = 19

)

leaflet()%>%addTiles()%>%

addMarkers(data=bj3H[bj3H$dj=="三级",],popup=~mc,icon = redIcon1)%>%

addMarkers(data=bj3H[bj3H$dj=="三级甲等",],popup=~mc,icon = redIcon2)

这种方法虽然比较容易控制,但是语法稍微显得有些繁琐了,leaflet的makeIcon包还支持r语言提供的ifelse()函数进行设定,如下所示:(为了表示是重新运行过的,换个底图)

leafIcons

iconUrl = ifelse(bj3H$dj=="三级",

"https://img-blog.csdn.net/20161015170050664",

"https://img-blog.csdn.net/20161015173507516"

),

iconWidth = 38, iconHeight = 38,

iconAnchorX = 19, iconAnchorY = 19

)

leaflet(bj3H)%>%addProviderTiles("CartoDB.Positron")%>%

addMarkers(popup=~mc,icon = leafIcons)

当然,以此类推,还可以修改符号大小神马啊,设定符号等级啊神马的,我这里就不一一说明了,大家有兴趣自己玩。

还有同学问,如果我有很多类图标呢?比如二十类……虾神咋办?好吧,如果你有超过3类图标的话,要么用第一种方法筛选加载,要么的话,leaflet还提供了一个叫做iconList的方法来处理。

比如上面这份医疗数据,一共分成10种类型:(用summary方法做个统计)

fl

那么下面我用十种不同类型的图标,来进行分类标识:

yyIcons

中国医科院所属医院 = makeIcon("https://img-blog.csdn.net/20161015181859390", iconWidth =32, iconHeight = 32),

北京区县属医院 = makeIcon("https://img-blog.csdn.net/20161015182217958", iconWidth =32, iconHeight = 32),

北京市卫生局直属医院= makeIcon("https://img-blog.csdn.net/20161015181915828",iconWidth =32, iconHeight = 32),

北京中医药大学= makeIcon("https://img-blog.csdn.net/20161015181934175",iconWidth =32, iconHeight = 32),

卫生部直属医院= makeIcon("https://img-blog.csdn.net/20161015181950879",iconWidth =32, iconHeight = 32),

中国中医科学院= makeIcon("https://img-blog.csdn.net/20161015182031737",iconWidth =32, iconHeight = 32),

驻京武警医院= makeIcon("https://img-blog.csdn.net/20161015182043285",iconWidth =32, iconHeight = 32),

驻京部队医院= makeIcon("https://img-blog.csdn.net/20161015182054598",iconWidth =32, iconHeight = 32),

部属厂矿高校医院= makeIcon("https://img-blog.csdn.net/20161015182109473",iconWidth =32, iconHeight = 32),

北京大学附属医院= makeIcon("https://img-blog.csdn.net/20161015182132521",iconWidth =32, iconHeight = 32)

)

leaflet(bj3H) %>%addProviderTiles("CartoDB.Positron") %>%

addMarkers(icon = ~yyIcons[fl],popup=~fl)

当数据太多的时候,很容易叠加在一起互相遮盖了,leaflet还提供了空间聚合的方法,可以按照视图对一定范围内的数据进行聚合显示,如下:

leaflet(bj3H) %>%addProviderTiles("CartoDB.Positron") %>%

addMarkers(clusterOptions = markerClusterOptions(),icon = ~yyIcons[fl],popup=~fl)

可以看见,随着视图比例尺的变化,会进行聚合以及分离

而如果不想弄得这么麻烦,就是直接把点显示出来,leaflet提供了最简单的方法:

addCircles()和addCircleMarkers()

addCircles就是直接把点当成一个圆点绘制到地图上:

leaflet(bj3H) %>%addProviderTiles("CartoDB.Positron")%>%addCircles()

默认大小为5,颜色为蓝色

当然也可以设置颜色和大小,比如设置为红色,大小为科室数量(等比例的缩小一半):

leaflet(bj3H) %>%addProviderTiles("CartoDB.Positron")%>%addCircles(color="red",weight=bj3H$ks/2)

而addCircleMarkers()是把点作为一个镶边的圆(或者说圆符号)绘制到地图上:

leaflet(bj3H) %>%addProviderTiles("CartoDB.Positron")%>%addCircleMarkers()

当然,同样可以设置大小和颜色:

leaflet(bj3H) %>%addProviderTiles("CartoDB.Positron")%>%addCircleMarkers(color="red",weight=bj3H$ks/2)

和绘制图标一样,绘制点和圆也是可以设置分类显示的,方法和绘制不同种类的图标一样,两种方法:

1、采用筛选的方式,多次绘制(这个比较麻烦,数据量大,种类多的时候很繁琐)

leaflet()%>%addTiles()%>%addProviderTiles("CartoDB.Positron")%>%

addCircles(data=bj3H[bj3H$dj=="三级",],popup=~mc,color="green")%>%

addCircles(data=bj3H[bj3H$dj=="三级甲等",],popup=~mc,color="red")

leaflet()%>%addTiles()%>%addProviderTiles("CartoDB.Positron")%>%

addCircleMarkers(data=bj3H[bj3H$dj=="三级",],popup=~mc,color="green")%>%

addCircleMarkers(data=bj3H[bj3H$dj=="三级甲等",],popup=~mc,color="red")

2、就是采用分类设定的方式,预先设定好各种分类:(因为addCircles和addCircleMarkers)两个方法几乎一模一样,我就不把两个都写一遍了,有兴趣的同学自己嗨。

pal

leaflet(bj3H) %>% addProviderTiles("Esri.WorldTopoMap") %>%

addCircleMarkers(color = ~pal(dj),stroke = FALSE,fillOpacity = 0.7)

可以看见,我们只写了两个分类,如果要更多的类别,也是可以的。

那么很多时候,我们可能还需要通过通过数值来进行不同等级的颜色渲染,下面根据每个医院的床位数进行颜色渲染,代码如下:(代码具体的意义,在后面讲图例的时候,我们还会详细说明)

cPal

leaflet(bj3H) %>% addProviderTiles("Esri.WorldTopoMap") %>%

addCircleMarkers(fillColor = ~cPal(bj3H$cws),stroke = FALSE,fillOpacity = 0.8,popup=~as.character(cws))%>%

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571410.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

zabbix自动发现主机并加入组绑定模板

在被监控主机多的情况下,怎样将这些主机加入zabbix server进行监控呢?下面将介绍下zabbix自动发现功能 1、创建自动发现规则 创建“规则名称,配置ip范围及检查方式”,点击“增加”,完成自动发现规则的创建 2、加入组和…

oracle ora 08103,ORA-08103: 对象不再存在

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼[2017-05-17 17:13:22] Function Called in lngGetDataTableWithParametersselect distinct to_char (b.chargeactive_dat, yyyymmdd) as orderdate,to_char(a.recipeno2_int) as recipeno2_chr, b.orderexectype_int as ordertype…

kotlin 用协程做网络请求_中国电信营业厅: 感受 Kotlin 的 quot;加速度quot;

"我们手上是一个很成熟的项目,所以毫无疑问需要保留 Java 代码,目前只会在新开发的页面中使用 Kotlin,并已经感受到了它带来的便利。随着功能的迭代,我们相信更多的功能会转而使用 Kotlin。"—— 付迎鑫,电信…

拖动验证码插件

拖动验证码插件 效果图: 在验证前,提交弹出验证失败,验证后弹出验证成功。 文件结构: css: #drag{ position: relative;background-color: #e8e8e8;width: 300px;height: 34px;line-height: 34px;text-align: center; …

matlab padarray函数零,matlab padarray函数

1padarray功能:填充图像或填充数组。用法:B padarray(A,padsize,padval,direction)A为输入图像,B为填充后的图像,padsize给出了给出了填充的行数和列数,通常用[r c]来表示。padval表示填充方法。它的具体值和描述如下…

如何将已有图片做成透明水印_如何用Photoshop在图片上添加透明水印?

我们经常会在网上看到一些漂亮的图片上有添加各种水印,添加水印可以让图片有一个标记,也可以防止别人盗用你的成果。那么图片上的这些水印是怎么添加的呢?今天,小编就给大家介绍用Photoshop软件来制作图片的透明水印的教程&#x…

[知了堂学习笔记]_网络基础知识_1.OSI参考模型(网络七层协议)

OSI参考模型是国际标准化组织ISO制定的模型,把计算机与计算机之间的通信分成七个互相连接的协议层,如图: 1.1各层功能 1、物理层 最底层是物理层,这一次负责传送比特流,它从第二层数据接收数据帧,并将帧的结…

微信小程序js数组初始化_微信小程序 数组(增,删,改,查)等操作实例详解...

微信小程序 数组(增,删,改,查)等操作最近在做一个小程序的demo。由于不向后台请求数据,所以就涉及到对本地数据的操作,也遇到了一些坑,本文就以数组的增删改查为例,给新手分享一些经验。首先这是…

Linux版本配置环境变量,如何linux环境下配置环境变量过程图解

jdk下载地址:在linux环境下的root同级目录下配置software目录将下载好的jdk上传到software文件夹里面(我使用的操作软件是)到software这个目录下.输入命令:cd /software输入命令:ll就可以看到我们的jdk包解压文件解压命令 tar xzvf jdk-8u111-linux-x64.tar.gz解压之…

linux的mysql本地yum安装_linux下使用yum安装mysql

mysql yum repository提供linux平台上面的MySQL server, client和其它组件的rpm包。它支持以下平台:基于EL5-, EL6-, 和 EL7-的平台,比如对应版本的ed Hat Enterprise Linux, Oracle Linux, CentOSFedora 22, 23, 24步骤:一、添加mysql yum r…

A.PHP读取txt文本文件并分页显示的方法

PHP读取txt文本文件并分页显示的方法作者:TomRobert 字体:[增加 减小] 类型:转载 时间:2015-03-11 我要评论这篇文章主要介绍了PHP读取txt文本文件并分页显示的方法,涉及php操作文件的技巧,具有一定参考借鉴价值,需要的朋友可以参…

python阈值计算_opencv python 图像二值化/简单阈值化/大津阈值法

pip install matplotlib1简单的阈值化cv2.threshold第一个参数是源图像,它应该是灰度图像. 第二个参数是用于对像素值进行分类的阈值, 第三个参数是maxVal,它表示如果像素值大于(有时小于)阈值则要给出的值. OpenCV提供不同类型的阈值,它由函…

奔腾双核linux服务器,Dell推出双核心奔腾服务器

来自业内的消息,Dell近日推出了一台采用Intel双核心 Pentium D的服务器,这将给小型服务器带来更强的运算能力。Dell PowerEdge SC430 主要面向小型企业客户,价格在499美元起。相比PowerEdge SC420,Dell为 PowerEdge SC430 装配了两…

EasyPlayerPro Windows流媒体播放器(RTSP/RTMP/HTTP/HLS/File/TCP/RTP/UDP都能播)发布啦

EasyPlayerPro简介 EasyPlayerPro是一款全功能的流媒体播放器,支持RTSP、RTMP、HTTP、HLS、UDP、RTP、File等多种流媒体协议播放、支持本地文件播放,支持本地抓拍、本地录像、播放旋转、多屏播放等多种功能特性,核心基于ffmpeg,稳…

github 思维导图开元软件_Mymind教学系列--Github上的免费且强大思维导图工具-(一)...

How many 0‘s?Time Limit: 1000MSMemory Limit: 65536KTotal Submissions: 2844Accepted: 1506DescriptionA Benedict monk No.16 writes down the decimal representations of all natural numbers between and including m and n, m ≤ n. How many 0‘s will he write dow…

linux jlink软件安装,LINUX下安装JLINK

确认是否安装libusb$ dpkg -l | grep libusb如果有libusb相关信息,说明已经安装了$ dpkg -l | grep libusbii libusb-0.1-4 2:0.1.12-20 userspace USB programming libraryii libusb-1.0-0 2:1.0.9~rc3-2ubuntu1 userspace USB programming libraryii libusb-dev 2…

tcpdump记录

tcpdump -i eth0 -nn -A -X host 192.168.20.82 and port 9080 -i:interface 监听的网卡。-nn:表示以ip和port的方式显示来源主机和目的主机,而不是用主机名和服务。-A:以ascii的方式显示数据包,抓取web数据时很有用。…

abortonerror_如何在多项目目录顶层的Android Gradle Plugin中禁用lint abortOnError

我有一个顶级的Android Gradle项目.这个项目下面嵌套了多个子项目(有时它们是2级深),即:top level project|project1vendor libraries|lib1lib2lint正在中断一些图书馆项目的建设.我可以编辑每个图书馆项目的build.gradle来解决问题android {lintOptions {abortOnEr…

linux权限源码分析,Linux基础之文件权限详解

Linux中对于权限的制定虽然没有Windows的那么精细,但是如果你了解并掌握Linux中文件的权限知识,也可以像Windows那样对权限做到精确配置。Linux中的文件权限是什么?如何查看Linux中的文件权限[[email protected] test]# ll -d /test/drwxr-xr…

Vue工程模板文件 webpack打包

1、github github地址:https://github.com/MengFangui/VueProjectTemplate 2、webpack配置 (1)基础配置webpack.base.config.js const path require(path); //处理共用、通用的js const webpack require(webpack); //css单独打包 const Ext…