是否可以制作类似于this示例的内容,该示例是使用Shiny Leaflet库构建的,但实际上没有使用R? 是否有基于值的缩放点或用于制作示例中的图表的传单控制插件? 我试图找出闪亮的图书馆用来制作图表的内容,但我没有 - 可能是因为我缺乏R的经验..
提前感谢您的帮助!
答案 0 :(得分:1)
Shiny图表在服务器端生成为静态.png图像,并在更改时更新。所以你可以在那里重复使用。但是,您可以使用与示例地图类似的方式在Leaflet中设置circleMarkers样式。可以使用创建图层时调用的样式函数来缩放基于值的颜色和大小。
如果在名为dots的GeoJSON对象中有一些点几何,则可以执行以下操作:
dotlayer = L.geoJson(dots, {
pointToLayer: function (feature, latlng) {
return L.circleMarker(latlng, style(feature));
},
onEachFeature: onEachDot
}).addTo(map);
其中style(feature)是一个函数:
function style(feature) {
return {
radius: getRadius(feature.properties.size),
fillColor: getColor(feature.properties.year),
color: "#000",
weight: 1,
opacity: 0,
fillOpacity: 0.8
};
}
反过来调用另外两个函数来从要素属性中获取颜色和半径:
function getColor(y) {
return y > 2000 ? '#6068F0' :
y > 1980 ? '#7660C9' :
y > 1960 ? '#8C58A3' :
y > 1940 ? '#A3507C' :
y > 1920 ? '#B94856' :
'#D04030';
}
function getRadius(y) {
r = Math.sqrt(y / Math.PI)
return r;
}
使用colorbrewer之类的外部实用程序计算颜色渐变。在此示例函数中,缩放半径以使圆的面积与原始数量成比例,但您的函数可以以对地图最有意义的任何方式缩放它。
情节和图例确实需要使用控件,但是当你有一个工作示例时,它会更容易。所以这里有一些不太优雅的例子:
http://fiddle.jshell.net/nathansnider/o563bg44/
它没有闪亮地图的所有花里胡哨(如地图移动时自动更新地图),但这是一个开始。