Skip to content

Commit

Permalink
Geo coords (pyecharts#686)
Browse files Browse the repository at this point in the history
* Update: 坐标数据及文档更新

* Update: 数据更新

* Fix: 测试修复

* Fix: 测试修复

* Remove: 移除多余 import

* Update: make everyone happy

* Add: support add_coordinate_json function for Geo/Geolines charts

* Fix: fix broken test
  • Loading branch information
chenjiandongx authored Aug 24, 2018
1 parent 5b641a0 commit 5c26a1d
Show file tree
Hide file tree
Showing 10 changed files with 513 additions and 363 deletions.
3 changes: 2 additions & 1 deletion docs/zh-cn/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
* ### version 0.5.9(dev)

#### Added
* [pr#685](https://github.com/pyecharts/pyecharts/pull/685) 图表方法( `use_theme`/`config`/`add`)支持链式调用
* [pr#685](https://github.com/pyecharts/pyecharts/pull/685) 图表方法(`use_theme`/`config`/`add`)支持链式调用
* [issue#687](https://github.com/pyecharts/pyecharts/issues/687) 新增 `add_coordinate_json` 方法用于支持导入 Geo/Geolines 坐标数据


* ### version 0.5.8 - 2018.8.13(current)
Expand Down
8 changes: 4 additions & 4 deletions docs/zh-cn/charts.md
Original file line number Diff line number Diff line change
Expand Up @@ -684,7 +684,7 @@ add(name, attr, value,
* maptype -> str
地图类型。 从 v0.3.2+ 起,地图已经变为扩展包,支持全国省份,全国城市,全国区县,全球国家等地图,具体请参考 [地图自定义篇](zh-cn/customize_map)
* coordinate_region -> str
城市坐标所属国家。从 v0.5.7 引入,针对国际城市的地理位置的查找。默认为 `中国`。具体的国家/地区映射表参照 [countries_regions_db.json](https://github.com/pyecharts/pyecharts/blob/master/pyecharts/datasets/countries_regions_db.json)
城市坐标所属国家。从 v0.5.7 引入,针对国际城市的地理位置的查找。默认为 `中国`。具体的国家/地区映射表参照 [countries_regions_db.json](https://github.com/pyecharts/pyecharts/blob/master/pyecharts/datasets/countries_regions_db.json)。更多地理坐标信息可以参考 [数据集篇](/zh-cn/datasets)
* symbol_size -> int
标记图形大小。默认为 12
* border_color -> str
Expand All @@ -694,7 +694,7 @@ add(name, attr, value,
* geo_emphasis_color -> str
高亮状态下地图区域的颜色。默认为 '#2a333d'
* geo_cities_coords -> dict
用户自定义地区经纬度,类似如 {'阿城': [126.58, 45.32],} 这样的字典,当用于提供了该参数时,将会覆盖原有预存的区域坐标信息
用户自定义地区经纬度,类似如 {'阿城': [126.58, 45.32],} 这样的字典。
* is_roam -> bool
是否开启鼠标缩放和平移漫游。默认为 True
如果只想要开启缩放或者平移,可以设置成'scale'或者'move'。设置成 True 为都开启
Expand Down Expand Up @@ -927,7 +927,7 @@ add(name, data,
* maptype -> str
地图类型。 从 v0.3.2+ 起,地图已经变为扩展包,支持全国省份,全国城市,全国区县,全球国家等地图,具体请参考 [地图自定义篇](zh-cn/customize_map)
* coordinate_region -> str
城市坐标所属国家。从 v0.5.7 引入,针对国际城市的地理位置的查找。默认为 `中国`。具体的国家/地区映射表参照 [countries_regions_db.json](https://github.com/pyecharts/pyecharts/blob/master/pyecharts/datasets/countries_regions_db.json)
城市坐标所属国家。从 v0.5.7 引入,针对国际城市的地理位置的查找。默认为 `中国`。具体的国家/地区映射表参照 [countries_regions_db.json](https://github.com/pyecharts/pyecharts/blob/master/pyecharts/datasets/countries_regions_db.json)。更多地理坐标信息可以参考 [数据集篇](/zh-cn/datasets)
* symbol -> str
线两端的标记类型,可以是一个数组分别指定两端,也可以是单个统一指定。
* symbol_size -> int
Expand All @@ -939,7 +939,7 @@ add(name, data,
* geo_emphasis_color -> str
高亮状态下地图区域的颜色。默认为 '#2a333d'
* geo_cities_coords -> dict
用户自定义地区经纬度,类似如 {'阿城': [126.58, 45.32],} 这样的字典,当用于提供了该参数时,将会覆盖原有预存的区域坐标信息
用户自定义地区经纬度,类似如 {'阿城': [126.58, 45.32],} 这样的字典。
* geo_effect_period -> int/float
特效动画的时间,单位为 s,默认为 6s
* geo_effect_traillength -> float
Expand Down
36 changes: 32 additions & 4 deletions docs/zh-cn/datasets.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
> 数据集 篇:本文档主要介绍 pyecharts 项目相关的原始数据和访问接口。
> 数据集篇:本文档主要介绍 pyecharts 项目相关的原始数据和访问接口。
## 概述

Expand Down Expand Up @@ -27,6 +27,11 @@ pyecharts 内置了一些常用的城市地理坐标数据,这些数据保存
}
```

### 提供自定义数据

具体可参考 [pyecharts/geo-region-coords](https://github.com/pyecharts/geo-region-coords)


### 检索中国地理坐标

`get_coordinate(name, region="中国")` 返回城市名称的地理坐标,如果未定义将返回 None 。
Expand Down Expand Up @@ -78,12 +83,35 @@ print(result)

### 使用例子

`pyecharts.Geo``pyecharts.GeoLines` 新增 `add_coordinate` 用于新增一个自定义城市地理位置的功能。接口如下:
Geo/Geolines:

```python
* `add_coordinate` 用于新增一个自定义城市地理位置的功能。
* `add_coordinate_json` 用于导入自定义地理位置 JSON 文件。

方法接口如下:

```
class Geo:
add_coordinate(self, name: six.text_type, longitude: float, latitude: float): -> None
pass
"""
example:
add_coordinate("某地", 100.0, 20.0)
"""
# v0.5.9+
add_coordinate_json(self, json_file: six.text_type): -> None
"""
example:
add_coordinate_json("my_coords.json")
"""
# my_coords.json
"""
{
"某地": [100.0, 20.0],
...
}
"""
```

整个使用例子如下:
Expand Down
21 changes: 19 additions & 2 deletions pyecharts/charts/geo.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
# coding=utf-8
from __future__ import unicode_literals

import json
import codecs

from pyecharts.chart import Chart
from pyecharts.datasets.coordinates import get_coordinate

Expand All @@ -26,10 +29,23 @@ def add_coordinate(self, name, longitude, latitude):
:param name: The name of a position
:param longitude: The longitude of coordinate.
:param latitude: The latitude of coordinate.
:return:
"""
self._coordinates.update({name: [longitude, latitude]})

def add_coordinate_json(self, json_file):
"""
add a geo coordinate json file for position
:param json_file: geo coords json file
"""
try:
with codecs.open(json_file, "r", "utf-8") as f:
json_reader = json.load(f)
for k, v in json_reader.items():
self.add_coordinate(k, v[0], v[1])
except Exception:
raise

def get_coordinate(self, name, region="中国", raise_exception=False):
"""
Return coordinate for the city name.
Expand Down Expand Up @@ -82,7 +98,8 @@ def __add(
全球国家等地图,具体请参考 [地图自定义篇](zh-cn/customize_map)
:param coordinate_region:
城市坐标所属国家。从 v0.5.7 引入,针对国际城市的地理位置的查找。默认为 `中国`。
具体的国家/地区映射表参照 datasets/countries_regions_db.json
具体的国家/地区映射表参照 datasets/countries_regions_db.json。更多地理坐标
信息可以参考 [数据集篇](/zh-cn/datasets)
:param symbol_size:
标记图形大小。
:param border_color:
Expand Down
3 changes: 2 additions & 1 deletion pyecharts/charts/geolines.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,8 @@ def add(
全球国家等地图,具体请参考 [地图自定义篇](zh-cn/customize_map)
:param coordinate_region:
城市坐标所属国家。从 v0.5.7 引入,针对国际城市的地理位置的查找。默认为 `中国`。
具体的国家/地区映射表参照 datasets/countries_regions_db.json
具体的国家/地区映射表参照 datasets/countries_regions_db.json。更多地理坐标
信息可以参考 [数据集篇](/zh-cn/datasets)
:param symbol:
线两端的标记类型,可以是一个数组分别指定两端,也可以是单个统一指定。
:param symbol_size:
Expand Down
Loading

0 comments on commit 5c26a1d

Please sign in to comment.