相关文章推荐
勤奋的手电筒  ·  黑羽盜一 - 萌娘百科 萬物皆可萌的百科全書·  2 月前    · 
飘逸的斑马  ·  挖掘资源拓宽课程 立足生活培养品德 ...·  3 月前    · 
拉风的凳子  ·  国际象棋世青赛朱锦尔力克格拉维兹_国家体育总局·  1 年前    · 
霸气的夕阳  ·  这就是海豚?松散新车下线 ...·  2 年前    · 
可爱的石榴  ·  “产品+改革”双轮推动下,能解小鹏全方位掉队 ...·  2 年前    · 
Code  ›  江苏省人民政府 政府文件 省政府关于江苏省干线航道网规划(2023-2035年)的批复
时政 交通 江苏政府 干线运输
https://www.jiangsu.gov.cn/art/2023/12/25/art_46143_11108998.html
傲视众生的葡萄
1 年前
DataCharm

利用Python绘制酷炫OD流量图的新方法

腾讯云
开发者社区
文档 建议反馈 控制台
首页
学习
活动
专区
圈层
工具
MCP广场
文章/答案/技术大牛
发布
首页
学习
活动
专区
圈层
工具
MCP广场
返回腾讯云官网
DataCharm
首页
学习
活动
专区
圈层
工具
MCP广场
返回腾讯云官网
社区首页 > 专栏 > 利用Python绘制酷炫OD流量图的新方法

利用Python绘制酷炫OD流量图的新方法

作者头像
DataCharm
发布 于 2021-02-22 15:03:06
发布 于 2021-02-22 15:03:06
4.2K 1 0
代码可运行
举报
文章被收录于专栏: 数据 学术 商业 新闻 数据 学术 商业 新闻
运行总次数: 0
代码可运行

在百度迁徙的文章里,我们画的OD地图是这样的:

这个看着其实也还行,不过仔细观察也会发现几个小问题:

1. OD线的粗细代表了流量的大小,但没有加图例,难以有客观的认识;

2. 由于OD线是直线,双向的OD会重叠在一起,比如上海到北京和北京到上海的OD线是重合的,在图面上无法区分。

为了解决这些问题,应对方法一般是:

1. 对流量大小利用颜色或者粗细进行区分,并且为了图面整体的协调,最好先对流量进行分组(自然断点法)。

2. 将OD的直线改为曲线,这样双向OD即可区分开来,并且更加美观。

先展示一下利用以上思路绘制的OD图:

这里用到的数据是按照一定规则随机生成的C市出租车的OD数据,以街道为交通小区进行OD的集计处理。下面讲一下主要的思路:

这里主要用到了matplotlib的ax.annotate命令,利用这个命令,我们可以画出各种各样的弧线:

这里抄一段官方tutorial的代码。

代码语言: javascript
代码 运行次数: 0
运行
复制
import matplotlib.pyplot as plt
def demo_con_style(ax, connectionstyle):
    x1, y1 = 0.3, 0.2
    x2, y2 = 0.8, 0.6
    ax.plot([x1, x2], [y1, y2], ".")
    ax.annotate("",
                xy=(x1, y1), xycoords='data',
                xytext=(x2, y2), textcoords='data',
                arrowprops=dict(arrowstyle="->", color="0.5",
                                shrinkA=5, shrinkB=5,
                                patchA=None, patchB=None,
                                connectionstyle=connectionstyle,
    ax.text(.05, .95, connectionstyle.replace(",", ",\n"),
            transform=ax.transAxes, ha="left", va="top")
fig, axs = plt.subplots(3, 5, figsize=(8, 4.8))
demo_con_style(axs[0, 0], "angle3,angleA=90,angleB=0")
demo_con_style(axs[1, 0], "angle3,angleA=0,angleB=90")
demo_con_style(axs[0, 1], "arc3,rad=0.")
demo_con_style(axs[1, 1], "arc3,rad=0.3")
demo_con_style(axs[2, 1], "arc3,rad=-0.3")
demo_con_style(axs[0, 2], "angle,angleA=-90,angleB=180,rad=0")
demo_con_style(axs[1, 2], "angle,angleA=-90,angleB=180,rad=5")
demo_con_style(axs[2, 2], "angle,angleA=-90,angleB=10,rad=5")
demo_con_style(axs[0, 3], "arc,angleA=-90,angleB=0,armA=30,armB=30,rad=0")
demo_con_style(axs[1, 3], "arc,angleA=-90,angleB=0,armA=30,armB=30,rad=5")
demo_con_style(axs[2, 3], "arc,angleA=-90,angleB=0,armA=0,armB=40,rad=0")
demo_con_style(axs[0, 4], "bar,fraction=0.3")
demo_con_style(axs[1, 4], "bar,fraction=-0.3")
demo_con_style(axs[2, 4], "bar,angle=180,fraction=-0.2")
 
推荐文章
勤奋的手电筒  ·  黑羽盜一 - 萌娘百科 萬物皆可萌的百科全書
2 月前
飘逸的斑马  ·  挖掘资源拓宽课程 立足生活培养品德 ——铜官区教育局举行小学道德与法治主题教学研讨活动 - 铜官区人民政府
3 月前
拉风的凳子  ·  国际象棋世青赛朱锦尔力克格拉维兹_国家体育总局
1 年前
霸气的夕阳  ·  这就是海豚?松散新车下线 比亚迪称并非高端项目|高端品牌|比亚迪_新浪科技_新浪网
2 年前
可爱的石榴  ·  “产品+改革”双轮推动下,能解小鹏全方位掉队的困局吗? - OFweek新能源汽车网
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号