【问题标题】:Is there a way to merge two MatPlotLib plots together?有没有办法将两个 MatPlotLib 图合并在一起?
【发布时间】:2020-05-24 20:52:24
【问题描述】:

我一直在尝试将这两个图合并在一起,但尚未在 MatPlotLib 的文档中找到有关如何合并的内置内容。我想在每个新条目旁边显示两个条形值,将新条目添加到图表中,同时将其他条目移动以腾出空间。地块如下。

如前所述,当我说合并时,我的意思不仅仅是将图 A 放到图 B 上,而是将图连接在一起,以便两个条形值显示在同一个图中,如下所示:

这样做的原因是我将能够在一个绘图中记录所有条目,而无需手动执行此操作。通过在我的代码中实现这样的东西,它会让条目变得更快。

编辑:我知道我可以将这两个图表放在一起,但这不是我想要的。获得必要的输入后,我的程序会创建该数据的图表并将其保存为文件。我希望通过将原始值向左移动以腾出空间来追加任何新数据到该原始文件。

编辑 2:如何从每个图中提取数据,然后创建一个新图?这似乎是另一种可接受的解决方法。

【问题讨论】:

    标签: python python-3.x matplotlib graph


    【解决方案1】:

    是否有什么阻止您将它们并排绘制但更改索引?

    a, b, c = 2, 5, 3
    import matplotlib.pyplot as plt
    fig, ax = plt.subplots(1, 1)
    count = 0
    ax.bar(count, a)
    # if prgoram produces a new output then...
    count += 1
    ax.bar(count, b)  # index means new bar plot has shifted
    # again
    count += 1
    ax.bar(count, c)  # shifted again
    

    无论如何,这应该会自动扩展 x 轴。如果您特别关注这些条的宽度,您可能需要稍微改变一下。

    如果这不是您想要的,您可以考虑使用 bar 容器重新绘制,甚至只是剥离高度以重复使用。

    fig, ax = plt.subplots(1, 1)
    count = 0
    bar_cont = ax.bar(count, a)  # reference to the bar container of interest
    print(bar_cont.get_height())
    

    【讨论】:

      【解决方案2】:
      import matplotlib.pyplot as plt
      fig = plt.figure()
      ax = fig.add_axes([0,0,1,1])
      people = ['JOHN DOE', 'BOB SMITH']
      values = [14,14]
      ax.bar(people,values)
      plt.show()
      

      应该是解决方案。您只需将列表而不是单个值传递给 plt.bar() 函数。更详细的解释here

      【讨论】:

      • 我目前有第一个情节和第二个分开的情节,但我希望将它们结合起来,并在我添加新情节时让它们动态移动。
      • 据了解,如果没有数据,您无法将两个绘制的图组合在一起,您只能将它们并排绘制。如果您的程序可以返回数据而不是用它绘制图表,您可以结合新数据并使用上面的代码绘制所需的条形图。所以基本上你需要组合数据才能绘制组合条形图。
      猜你喜欢
      • 2019-10-06
      • 2021-11-13
      • 1970-01-01
      • 2014-08-04
      • 2017-12-11
      • 1970-01-01
      • 2021-11-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多