首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matplotlib滑块用于更改clim时重新缩放颜色条

Matplotlib滑块用于更改clim时重新缩放颜色条
EN

Stack Overflow用户
提问于 2020-11-28 00:28:59
回答 1查看 101关注 0票数 1

我正在尝试使用matplotlib滑块来交互地调整图形的颜色比例的上限和下限。虽然滑块可以工作,但颜色栏的大小也会随限制而变化。期望的结果是,当clim通过滑块改变时,颜色条的尺寸不会改变。

最小工作示例:

代码语言:javascript
复制
import numpy as np
import matplotlib
%matplotlib notebook
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider


# Generate random data
x = np.linspace(-1,1,101)
y = np.linspace(-1,1,101)
c = np.random.random((101,101))


# Plot data
ax = plt.subplot(111)
plt.subplots_adjust(left=0.25, bottom=0.3)

img = ax.pcolormesh(x,y,c, cmap = "inferno")
cbar = plt.colorbar(img)


# Add Sliders
c_min = np.min(c) #the min and max range of the sliders
c_max = np.max(c)

ax_cmin = plt.axes([0.25, 0.1, 0.65, 0.03]) #positions sliders beneath plot
ax_cmax  = plt.axes([0.25, 0.15, 0.65, 0.03])

s_cmin = Slider(ax_cmin, 'min', c_min, c_max, valinit=c_min) #defines sliders
s_cmax = Slider(ax_cmax, 'max', c_min, c_max, valinit=c_max)

def update(val):
    _cmin = s_cmin.val
    _cmax = s_cmax.val
    img.set_clim([_cmin, _cmax])
    img.update()

s_cmin.on_changed(update)
s_cmax.on_changed(update)


plt.show()

在更新绘图之前,我尝试删除"update“函数中的colorbar,然后重新绘制它,并向colorbar添加cax参数,但这不会改变什么。

我在Jupyter Notebook中运行python 3.5.6和matplotlib 3.0.0。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-28 01:04:16

设法解决了这个问题。在"update“函数的开头调用"cbar.ax.relim()”允许用户在不调整颜色条大小的情况下更改滑块上的clim。此外,tmdavison认为不需要"img.update()“是正确的。

以上示例中的"update“函数应替换为以下内容:

代码语言:javascript
复制
def update(val):
    cbar.ax.relim()
    _cmin = s_cmin.val
    _cmax = s_cmax.val
    img.set_clim([_cmin, _cmax])    
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65040676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档