PyechartsGeo在地图上添加坐标点
Pyecharts Geo在地图上添加坐标点
在上⼀篇⽂章已经实现了创建⼀个中国地区的地图
创建地图:
这篇⽂章将介绍怎么在地图上添加坐标点
添加坐标点
输⼊坐标点
想要给图⽚输⼊坐标点,我们必须知道坐标点是由哪⼏个属性组成的
属性名属性值格式
坐标点名称字符型(具有唯⼀性)
坐标点经度10进制数字
坐标点维度10进制数字
def add_coordinate(
# 坐标地点名称
name:str,
# 经度
longitude: Numeric,
# 纬度
latitude: Numeric,
)
具体代码如下
#g是上篇⽂章创建的地图,默认已经配置好了,⼤家可以到上⼀篇⽂章⾥粘贴⼀下最后的代码再使⽤
g.add_coordinate("第⼀个坐标点",114.9175,36.3622222)
g.add_coordinate("第⼆个坐标点",121.7825,31.1705555)
#添加两个坐标点是为了⽅便后⾯
将坐标点添加⼊系列并配置系列
但是当⼤家运⾏程序后会发现地图上并没有多什么东西,因为这⾥添加的是坐标点,我们并没有给坐标点添加⼀个系列也没有给坐标点附加图形样式,所以在地图上并不会显⽰,但这两个点确确实实添加了上去
不慌,因为这样我们可以对这些点进⾏分类,还能让不同类的坐标点以不同的形式展现
def add(
# 系列名称,⽤于 tooltip 的显⽰,legend 的图例筛选。
fontweight几百正常series_name:str,
# 数据项 (坐标点名称,坐标点值)
data_pair: Sequence,
# Geo 图类型,有 scatter, effectScatter, heatmap, lines 4 种,建议使⽤
# from pyecharts.globals import GeoType
# GeoType.GeoType.EFFECT_SCATTER,GeoType.HEATMAP,GeoType.LINES
type_:str="scatter",
# 是否选中图例
is_selected:bool=True,
# 标记图形形状
symbol: Optional[str]=None,
# 标记的⼤⼩
symbol_size: Numeric =12,
# 每个点的⼤⼩,在地理坐标系(coordinateSystem: 'geo')上有效。
blur_size: types.Numeric =20,
# 每个点模糊的⼤⼩,在地理坐标系(coordinateSystem: 'geo')上有效。
point_size: types.Numeric =20,
# 系列 label 颜⾊
color: Optional[str]=None,
# 是否是多段线,在画 lines 图情况下
is_polyline:bool=False,
# 是否启⽤⼤规模线图的优化,在数据图形特别多的时候(>=5k)可以开启
is_large:bool=False,
# 特效尾迹的长度。取从 0 到 1 的值,数值越⼤尾迹越长。默认值 0.2
trail_length: Numeric =0.2,
# 开启绘制优化的阈值。
large_threshold: Numeric =2000,
# 配置该系列每⼀帧渲染的图形数
progressive: types.Numeric =400,
# 启⽤渐进式渲染的图形数量阈值,在单个系列的图形数量超过该阈值时启⽤渐进式渲染。
progressive_threshold: types.Numeric =3000,
# 标签配置项,参考 `series_options.LabelOpts`
label_opts: Union[opts.LabelOpts,dict]= opts.LabelOpts(),
# 涟漪特效配置项,参考 `series_options.EffectOpts`
effect_opts: Union[opts.EffectOpts,dict]= opts.EffectOpts(),
# 线样式配置项,参考 `series_options.LineStyleOpts`
linestyle_opts: Union[opts.LineStyleOpts,dict]= opts.LineStyleOpts(),
# 提⽰框组件配置项,参考 `series_options.TooltipOpts`
tooltip_opts: Union[opts.TooltipOpts,dict,None]=None,
# 图元样式配置项,参考 `series_options.ItemStyleOpts`
itemstyle_opts: Union[opts.ItemStyleOpts,dict,None]=None,
# 这个配置相对⾮常复杂(参照地址: hartsjs/zh/option.derItem)    render_item: types.JsCode =None,
# 这个配置相对⾮常复杂(参照地址: hartsjs/zh/option.de)
encode: types.Union[types.JsCode,dict]=None,
)
通过add函数,为坐标点添加系列,并且添加各种属性配置
这篇⽂章暂时先不讲tooltip_opts⾥的formatter配置,这个配置很重要所以单独成⽴⼀篇⽂章来讲挑了⼏个我常⽤的属性给⼤家介绍
g.add(series_name='系列1'
, data_pair=[("第⼀个坐标点",'⾮常的⼤')]#系列⾥需要的点⽤列表框住多个元组达到批量输⼊的效果[(坐标点1,坐标点1的值),(坐标点2,坐标点2的值),(坐标点3,坐标点3的值)]
, symbol_size=35#系列内显⽰点的⼤⼩
, color="black"#系列内显⽰点的颜⾊
,is_selected=True#html⽂件运⾏第⼀时间是否选中该系列
)
g.add(series_name='系列2'
, data_pair=[("第⼆个坐标点",'⾮常的⼩')]
, symbol_size=5
, color="white"
,is_selected=False
)
⽣成的结果如下
其实这⾥有个⼩bug,我也不知道是我的问题还是这个库的⼀个bug
当添加多个系列的时候,颜⾊配置会出现紊乱
紊乱的顺序刚好和你配置的顺序倒过来,⽐如你配置的时候是红橙黄绿蓝,那么最后呈现的颜⾊就会是蓝绿黄橙红,这⼀点⼤家还是要注意⼀下的
最后⽣成的这个图说实在的,丑了点,现在给他美化⼀下
加⼀点点⼩细节给图⽚美化⼀下
我们不难跳出这个图的⼀些⽑病
1、坐标点上有⼀⾏长长的数字
2、最上边图例和坐标点的位置重叠了
3、图例选中之后颜⾊与背景不匹配
上述三点,我们需要调节全局配置项和系列配置项
官⽹⾥⾯有⼀张⽰意图很重要,建议⼤家可以保存下来
这两个配置项⾥⾯有很多的配置项,这⾥很难⼀⼀讲解,只能说,需要改变某⼀项的属性,我们⾸先先去查官⽹,接下来我将解决我上⾯提出的三个⽑病
让坐标点不显⽰value
g.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
调整图例位置,向右靠拢
g.set_global_opts(legend_opts=opts.LegendOpts(pos_right="10px"))
改变图例选中与⾮选中时候的颜⾊⾊系
g.set_global_opts(legend_opts=opts.LegendOpts(
inactive_color="white",
textstyle_opts=opts.TextStyleOpts(color="orange")
))
inactive_color:系列未被选中时的颜⾊
系列颜⾊被选中时全局配置项⾥有⼀个⽂本配置项,我们需要⽤到pyecharts.optinons⾥的TextStyleOpts函数对⽂本颜⾊进⾏配置
最后⽣成的结果如下:
奉上完整代码:
import webbrowser
from pyecharts import options as opts
from pyecharts.charts import Geo
g =(Geo(
init_opts=opts.InitOpts(width="900px",height="900px",page_title="12345",bg_color="#404a59")#颜⾊是str的16进制或英⽂都可以
).add_schema(
maptype="china",#地图类型
itemstyle_opts=opts.ItemStyleOpts(
color="#323c48"#背景颜⾊
, border_color="white")#边界线颜⾊
))
g.add_coordinate("第⼀个坐标点",114.9175,36.3622222)
g.add_coordinate("第⼆个坐标点",121.7825,31.1705555)
g.add(series_name='系列1'#系列名
, data_pair=[("第⼀个坐标点",'⾮常的⼤')]#系列⾥需要的点⽤列表框住多个元组达到批量输⼊的效果[(坐标点1,坐标点1的值),(坐标点2,坐标点2的值),(坐标点3,坐标点3的值)]
, symbol_size=35#系列内显⽰点的⼤⼩
, color="black"
,is_selected=True
)
g.add(series_name='系列2'
, data_pair=[("第⼆个坐标点",'⾮常的⼩')]
, symbol_size=5
, color="white"
,is_selected=False
)
g.set_series_opts(
label_opts=opts.LabelOpts(
is_show=False
))
g.set_global_opts(
title_opts=opts.TitleOpts(
title='12345678767545323',#主标题内容
subtitle='324567876564534',#副标题内容
item_gap=15,#主副标题的间距
title_textstyle_opts=opts.TextStyleOpts(
color="white",#主标题颜⾊
font_weight="bolder",#主标题加粗
font_size=40#主标题字体⼤⼩
),
subtitle_textstyle_opts=opts.TextStyleOpts(
color='gray',#副标题颜⾊
font_weight="bolder",#副标题加粗
font_size=15))#副标题副标题字体⼤⼩
,legend_opts=opts.LegendOpts(pos_right="10px",inactive_color="white",textstyle_opts=opts.TextStyleOpts(color="orange"))
)
der()#会在你py⽂件同⽬录下⽣成⼀个html⽂件,也可在括号内输⼊保存路径,⽤浏览器打开html⽂件可以查看
webbrowser.open(result)
webbrowser是我觉得⾮常好⽤的⼀个模块,程序运⾏完⾃动打开html,推荐给⼤家
这是⼩弟学习pyecharts的第⼆篇笔记,不⾜之处还请各位⼤佬多多指点
下⼀期⽂章: 如何更改坐标点提⽰框的⽂字格式,达到换⾏空⾏的效果

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。