按照教程想通过pip下载地图素材,结果如下图所示——不匹配现有的version。
upgrade pyecharts之后依旧无法satisfies
在pycharm中输入:
import pyecharts
print(pyecharts.version)
查看pyecharts的version
输出结果为:
哇,这版本好新(.11.21)。
在Github上看到了对应的js文件,虽然能了解其js实现原理,但是对这两者如何联系产生的原理实在是不懂。
不得已,只得
pip uninstall pyecharts
把1.9.0版本的pyecharts 剔除。
再找了doubanio镜像的1.7版本进行安装。
pip3 install -i /simple pyecharts==1.7.0
这下可以安装地图js文件了。
应该行了,打开pycharm 在该环境下创建项目进行实验。
输入:
诶,这里的Map还是飘红。
检查了一下是否例子中所使用的标签名是所安装的地图文件不包含的。
核对一下,确实是世界地图部分
echarts-countries-pypkg
那么是怎么回事呢?难道又要装0.5版本的pyecharts嘛?
网上冲浪了一番,在知乎一篇文章中了解到:在Pyecharts1.0版本中,Map放在pyecharts.charts下面。
那么pyecharts 1.7.0应该沿用了这一习惯吧。
果不其然,改成pyecharts.charts在 import时自动提示也出来了
这次应该有戏!
但是运行后……
查阅了各种博客后,发现是不同版本写法的变化。
难道真的要装从前的0.5版本?
事情总要想前看,不跟着新版本走必然要逐渐要被淘汰。
在github翻了一圈没看到的与pyecharts/map或者pyecharts/Geo相关的代码可以参考。
不过还好,pyecharts还有中文文档参考(毕竟是百度做的)。
功夫不负有心人,终于在Map_Map_base这里找到了适合的例子。
打开运行生成的html文件:
可以很清楚地看到世界各个地区,通过js脚本可以通过鼠标对地图进行缩放、点击互动效果等。
看到原例子中有关于动态流向图的写法。
对应应该是这段(本来以为名字应该是flow或者arrow之类的。)
在新版(1.7)中又要怎么去做呢?
在原本的文档中找了几个给的实例都没有关于动态流向图。往下查看gallery只在map3d中找到了类似的。
根据上方的代码对应,猜测对应的是trail部分:
查询几个库的用法想转到原来的图中使用
结果对options进行查询时,发现在用户手册查询不到。
在我一筹莫展时,在gallery中看到了pyecharts/geo部分的实例。此前我只把它当作是另一个别名,看来是对应实际不同的需求起的。
我想应该是关于“geo-line”的部分。
查看对应的实例图,果真就是苦苦寻觅的“流向图”:
from pyecharts import options as optsfrom pyecharts.charts import Geofrom pyecharts.globals import ChartType, SymbolTypec = (Geo()#添加shema地理图china并设置itemsyle_Opt(应该是style,color为区域颜色,border_color为边缘颜色).add_schema(maptype="china",itemstyle_opts=opts.ItemStyleOpts(color="#323c48", border_color="#111"),)#设置城市的属性值 以及图表style,有多种类型可以选择,以及静态箭头和dot颜色。.add("",[("广州", 55), ("北京", 66), ("杭州", 77), ("重庆", 88)],type_=ChartType.EFFECT_SCATTER,color="white",)#设置箭头(starting point->destination)并设置style。这opts相关配置没有在系统配置项文档中找到底下的linestyle_opts倒是有,我在文章下方贴出来。.add("geo",[("广州", "上海"), ("广州", "北京"), ("广州", "杭州"), ("广州", "重庆")],type_=ChartType.LINES,effect_opts=opts.EffectOpts(symbol=SymbolType.ARROW, symbol_size=6, color="blue"),linestyle_opts=opts.LineStyleOpts(curve=0.2),).set_series_opts(label_opts=opts.LabelOpts(is_show=False)).set_global_opts(title_opts=opts.TitleOpts(title="Geo-Lines-background")).render("geo_lines_background.html"))
(以上为“流向图”对应的代码段,以及调试后增加的注释。以下为测试各个部分中生成的页面图片。)
1、
2、
3、
class LineStyleOpts(# 是否显示is_show: bool = True,# 线宽。width: Numeric = 1,# 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。opacity: Numeric = 1,# 线的弯曲度,0 表示完全不弯曲curve: Numeric = 0,# 线的类型。可选:# 'solid', 'dashed', 'dotted'type_: str = "solid",# 线的颜色。# 颜色可以使用 RGB 表示,比如 'rgb(128, 128, 128)',如果想要加上 alpha 通道表示不透明度,# 可以使用 RGBA,比如 'rgba(128, 128, 128, 0.5)',也可以使用十六进制格式,比如 '#ccc'。# 除了纯色之外颜色也支持渐变色和纹理填充# # 线性渐变,前四个参数分别是 x0, y0, x2, y2, 范围从 0 - 1,相当于在图形包围盒中的百分比,# 如果 globalCoord 为 `true`,则该四个值是绝对的像素位置# color: {# type: 'linear',# x: 0,# y: 0,# x2: 0,# y2: 1,# colorStops: [{# offset: 0, color: 'red' // 0% 处的颜色# }, {# offset: 1, color: 'blue' // 100% 处的颜色# }],# global: false // 缺省为 false# }# # 径向渐变,前三个参数分别是圆心 x, y 和半径,取值同线性渐变# color: {# type: 'radial',# x: 0.5,# y: 0.5,# r: 0.5,# colorStops: [{# offset: 0, color: 'red' // 0% 处的颜色# }, {# offset: 1, color: 'blue' // 100% 处的颜色# }],# global: false // 缺省为 false# }# # 纹理填充# color: {# image: imageDom, // 支持为 HTMLImageElement, HTMLCanvasElement,不支持路径字符串# repeat: 'repeat' // 是否平铺, 可以是 'repeat-x', 'repeat-y', 'no-repeat'# }color: Union[str, Sequence, None] = None,)