无法在iPython Notebook中使用Vincent绘制世界地图

3 投票
2 回答
1709 浏览
提问于 2025-04-18 07:58

这个问题可能和在IPython中无法使用Vincent绘图有关,不过我觉得它并不是完全相同的问题。

我可以在IPython 0.13.1的笔记本中使用Vincent 0.4.4绘制一个柱状图,下面是一个例子(这个例子可以在文档中找到):

import vincent
vincent.core.initialize_notebook()

bar = vincent.Bar(multi_iter1['y1'])
bar.axis_titles(x='Index', y='Value')
bar.display()

但是,我在尝试使用数据映射中的世界地图表示时却无法做到这一点,具体可以参考这个例子

import vincent
geo_data = [{'name': 'countries',
             'url': world_topo,
             'feature': 'world-countries'}]

vis = vincent.Map(geo_data=geo_data, scale=200)
vis.to_json('vega.json')

我把值'world_topo'替换成了从这里下载的Topojson文件(world-countries.topo.json)的路径。

没有显示任何错误,但也没有任何反应。顺便说一下,我没有使用HTTPS。这是最简单的地图图表例子,所以我想它应该能顺利运行……

有什么想法吗?

2 个回答

1

我尝试过的一件事是把世界地图文件放在Python脚本的同一个文件夹里。另外,记得要加上

import json
vincent.core.initialize_notebook()
3

根据vincent的网页,你需要使用>= 1.0版本的IPython,所以升级到一个更新的版本(比如IPython 2.1)很可能会解决你的问题。在我的Ubuntu电脑上,vega的地图绘图效果很好。

另外,在设置好图表后,你需要调用vis.display()这个方法,就像在这个示例笔记本中展示的那样。

撰写回答