python - 更新颜色条边界而不删除前一个颜色条边界

标签 python python-3.x

我正在从 matplotlib.animation 绘制动态图形(使用 FuncAnimation),但我在更新颜色条的边界方面遇到了很多困难。当然,我想更新它而不删除当前颜色条并绘制新颜色条,我只想更新当前颜色条的边界。

例如,如果第一个边界是从 0 到 1,我希望能够将它们从 0 更改为 100 或任何值。

令我惊讶的是,这方面的任何信息都很难找到,我已经搜索了一整天,我对这个消耗这么多时间的小事感到有点愚蠢和厌倦:')。

请问有什么想法吗?

这是带有颜色条的基本图形...我想更新颜色条的边界(假设显示的图形已更新并且颜色条边界不再适合该图形)。

import numpy as np
import matplotlib.pyplot as plt

# Initial figure
data_array = np.random.rand(50,50)
fig, ax = plt.subplots()
IMAGE = ax.imshow(data_array, animated = True)

# Color bar new axis
cbaxes = fig.add_axes() 
colorbar_bounds = np.linspace(np.min(data_array), np.max(data_array), 50)
colorbar_ticks = np.linspace(np.min(data_array), np.max(data_array) , 10)

# Colorbar
clb = fig.colorbar(IMAGE, cbaxes, orientation='vertical', boundaries=colorbar_bounds, ticks = colorbar_ticks)
plt.show()


最佳答案

因为我认为使用基本的 matplotlib 颜色条选项无法做到这一点(至少我找不到任何选项),所以我创建了自己的颜色条。

这是解决方案。

注意: 仅当您需要动态颜色条(例如在动画图形 Canvas 中自动更新)时,animated=True 属性才是必需的。

import numpy as np
import matplotlib.pyplot as plt

# INIT figure and axes
data_array = np.random.rand(50,50)
fig, [ax, cbax1, cbax2] = plt.subplots(1,3, sharex = False)
IMAGE = ax.imshow(data_array, animated = True)

# Colorbar boundaries and ticks
colorbar_bounds = np.linspace(np.min(data_array), np.max(data_array), 50)
colorbar_ticks = np.linspace(np.min(data_array), np.max(data_array) , 10)

# Classic Colorbar
classic_clb = fig.colorbar(IMAGE, cbax1, orientation='vertical', boundaries=colorbar_bounds, ticks = colorbar_ticks)
cbax1.set_title("Classic colorbar")

# Personalized (Dynamic or not as you want) Colorbar
myclb = colorbar_bounds[:, np.newaxis]
myclb = cbax2.imshow(myclb, animated = True, cmap = "nipy_spectral")
cbax2.set_title("My colorbar")

plt.show()

然后我可以用以下方式更新我的颜色条:(如果您不需要更改颜色条,请忘记这一点)

myclb.set_array(mycb)

关于python - 更新颜色条边界而不删除前一个颜色条边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57612868/

相关文章:

python - 如何使用 Tensorboard 检测消失和爆炸梯度?

python - 在 tox 环境中为 pip install 命令设置 https 代理

python - Matplotlib stackplot ValueError 需要至少一个数组来连接

python - 索博尔随机号生成器 python

python-3.x - 这个 Python 类是可变的吗?

Python Selenium - 获取 href 值

python - 从边缘列表读入后,Networkx 在节点名称前附加 'u'。如何摆脱?

python 3.6.0 : 'os' module does not have 'sched_getaffinity' method

python-3.x - 将CloudWatch日志导出到S3的Python3.7脚本

python - 在 Python 中将日本时间格式 (H29.12.1) 转换为 YYYY-MM-DD 格式?