【问题标题】:Plot on one fig two independent plots with matplotlib, different scale on x and y使用 matplotlib 在一个图上绘制两个独立的图,x 和 y 上的比例不同
【发布时间】:2020-10-14 23:35:00
【问题描述】:

我希望将两个独立的图叠加在一个 matplotlib 图上。

所以我从osmnx 绘制了一个网络图

import osmnx as ox
G = ox.graph_from_place('Piedmont, California, USA', network_type='drive')
fig, ax = ox.plot_graph(G)

然后我绘制networkx 图表:

nx.draw(nx.generators.barabasi_albert_graph(10,3), ax = ax)

我希望一个很好地覆盖在另一个上,但是坐标完全不同。 第一个是 lon、lat,第二个是从 networkx 随机生成的。

如何很好地缩放它们以使它们可见?

我尝试了 ax.twinx(),但它对我不起作用。

附言。对于网络,我可以通过 ax nx.draw(G, ax = ax) 而不是 osmnx,它仅从绘图返回 fig, ax = ox.plot(G)

【问题讨论】:

    标签: python matplotlib networkx osmnx


    【解决方案1】:

    对于网络,我可以将 ax nx.draw(G, ax = ax) 传递给 osmnx 而不是,它仅从绘图返回 fig, ax = ox.plot(G)

    请注意,在latest OSMnx 中,您可以将ax 传递给plot_graph 函数。这个应该会在下周的新版本中发布,或者你可以同时使用 GitHub master 分支。

    关于缩放您的非空间图,我不相信networkx 可以让您在特定坐标处绘制节点或边。您必须手动完成所有操作。但是,对于您的具体问题,您首先要规范化您的非空间图形坐标,然后将它们缩放到空间 OSMnx 图形坐标的范围。这个matlab 示例展示了如何以及如何轻松地将其翻译成python。

    【讨论】:

    • fwiw,您可以轻松地将 osmnx 图中的坐标提取到 pos 字典中,您可以将其提供给各种 networkx 绘图功能。我试过了,但无法在同一斧头上同时显示 ox 和 nx 图。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-04
    • 1970-01-01
    • 2013-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多