有没有办法将两个MatPlotLib图合并在一起?

时间:2020-05-24 20:52:24

标签: python python-3.x matplotlib graph

我一直试图将这两个图合并在一起,但是没有在MatPlotLib的文档中找到内置方法。我想在每个旁边显示两个条形值,对于每个新条目,将新条目添加到图形中,同时将其他条目移到上方以腾出空间。情节在下面。

Plot #1 Plot #2

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

enter image description here

这样做的原因是,我将能够在一个图中记录所有条目,而无需手动进行。通过在我的代码中实现类似的内容,可以使输入更快。

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

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

2 个答案:

答案 0 :(得分:0)

有什么阻止您并排绘制每个索引但更改索引吗?

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())

答案 1 :(得分:-1)

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

相关问题