gpt4 book ai didi

python - 如何更新 matplotlib 中的条形图?

转载 作者:太空宇宙 更新时间:2023-11-03 14:51:47 26 4
gpt4 key购买 nike

我有条形图,有很多自定义属性(label、linewidth、edgecolor)

import matplotlib.pyplot as plt
fig = plt.figure()
ax = plt.gca()

x = np.arange(5)
y = np.random.rand(5)

bars = ax.bar(x, y, color='grey', linewidth=4.0)

ax.cla()
x2 = np.arange(10)
y2 = np.random.rand(10)
ax.bar(x2,y2)
plt.show()

对于“正常”图,我会使用 set_data(),但对于条形图,我得到一个错误:AttributeError: 'BarContainer' object has no attribute 'set_data'

我不想简单地更新矩形的高度,我想绘制全新的矩形。如果我使用 ax.cla(),我的所有设置(线宽、边缘颜色、标题..)都会丢失,不仅是我的数据(矩形),而且多次清除和重置所有内容都会使我的程序变得迟钝。如果我不使用 ax.cla(),设置会保留,程序会更快(我不必一直设置我的属性),但是矩形是相互绘制的, 这不好。

你能帮我吗?

最佳答案

在您的例子中,bars 只是一个 BarContainer,它基本上是 Rectangle 补丁的列表。要仅删除那些同时保留 ax 的所有其他属性,您可以遍历 bars 容器并在其所有条目上调用 remove 或如 ImportanceOfBeingErnest 指出的那样简单地删除整个容器:

import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = plt.gca()

x = np.arange(5)
y = np.random.rand(5)

bars = ax.bar(x, y, color='grey', linewidth=4.0)

bars.remove()
x2 = np.arange(10)
y2 = np.random.rand(10)
ax.bar(x2,y2)
plt.show()

关于python - 如何更新 matplotlib 中的条形图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45185970/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com