与https://www.amcharts.com/demos/#javascript-maps一样,可以使用AmCharts JS库绘制许多精美的地理图表。
但是,我想知道是否可以创建自定义地图。例如,我想创建一个包含所有用颜色编码的国家/地区的全球地图,但要将美国和加拿大显示为一个单独的国家/地区,而在它们之间没有任何中间边界。所有其他国家应保持不变。
真的很感谢上面指示的任何指针。
谢谢
答案 0 :(得分:1)
使用amCharts v4,我们已切换到using GeoJSON for our maps。
虽然我确定有way to merge geographical polygons正在使用mapshaper,但我还没有尝试过,并且已经习惯使用免费软件QGIS。 / p>
如果您有兴趣,已经有a tutorial out there on merging polygons。无论如何,我将在此处提供一个快速,具体的摘要。
下载并安装QGIS,然后继续获取最新版本的amCharts v4 worldLow.json
(或worldHigh.json
,如果需要更多详细信息),在这种情况下,我使用了worldLow.json
:
https://github.com/amcharts/amcharts4-geodata/blob/master/dist/script/json/worldLow.json
原始文件:
https://raw.githubusercontent.com/amcharts/amcharts4-geodata/master/dist/script/json/worldLow.json
保存您的项目,保存图层编辑,现在您的json文件将被更新。
它应该看起来像这样:
https://gist.github.com/notacouch/485b8525a360c15690f1ab23cbf04940
现在要在您的地图中引用它,您可以通过以下方式进行引用:
// Create map polygon series
var polygonSeries = chart.series.push(new am4maps.MapPolygonSeries());
polygonSeries.geodataSource.url = "https://gist.githubusercontent.com/notacouch/485b8525a360c15690f1ab23cbf04940/raw/e6742c279571ae02166027817351a4250b1bea69/worldLow--canadia.json";
此外,您可以使用默认的ColorSet
例如每个国家/地区来生成新颜色
// Have amCharts generate a new color for each mapPolygon once they're available
//
// Learn more about Event Listeners:
// {@link https://www.amcharts.com/docs/v4/concepts/event-listeners/}
polygonSeries.events.on("datavalidated", function() {
polygonSeries.mapPolygons.each(function(polygon, index) {
// Learn more about ColorSets:
// {@link https://www.amcharts.com/docs/v4/concepts/colors/#Color_sets}
polygon.fill = chart.colors.getIndex(index);
});
});
// Create hover state and set alternative fill color
//
// Learn more about States:
// {@link https://www.amcharts.com/docs/v4/concepts/states/}
var hs = polygonTemplate.states.create("hover");
// Darken the polygon's current color
//
// Learn more about Adapters:
// {@link https://www.amcharts.com/docs/v4/concepts/adapters/}
hs.adapter.add("fill", function(fill) {
return fill.brighten(-0.2);
});
这是一个演示,其中包含所有内容:
https://codepen.io/team/amcharts/pen/abd95bebcfb65a74d9472043d63351fc
这可能是不可取的,您也可以通过data binding或heat map进行着色。
一般而言,要在v4中自定义地图,建议您参考Creating custom maps上的指南。在mapshaper,QGIS和所有与地图相关的文件之间,肯定会有一种方法来获得您想要的自定义,并且可能也可以在很短的时间内完成。
希望这会有所帮助。