Update range of colorbar in matplotlib
我想在一个函数中更新一个
请参见以下最低工作示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | import matplotlib.pyplot as plt import numpy as np fig = plt.figure() ax = fig.add_subplot(111) # Random data data = np.random.rand(10, 10) # Plot data levels = np.linspace(0., 1., 100) plot = ax.contourf(data, levels=levels) clist = plot.collections[:] # Create colorbar cbar = plt.colorbar(plot) cbar_ticks = np.linspace(0., 1., num=6, endpoint=True) cbar.set_ticks(cbar_ticks) plt.show() def update(): # Remove old plot for c in clist: ax.collections.remove(c) clist.remove(c) # Create new data and plot new_data = 2.*np.random.rand(10, 10) new_levels = np.linspace(0., 2., 200) new_plot = ax.contourf(new_data, levels=new_levels ) # Modify colorbar cbar.set_clim(0., 2.) new_cbar_ticks = np.linspace(0., 2., num=21, endpoint=True) cbar.set_ticks(new_cbar_ticks) plt.draw() update() |
不打电话给
。
这正是我想要的。在
氧化镁
数据绘制正确,数据的颜色映射正确,颜色条中的刻度和颜色正确,但颜色条的范围仍然在0到1之间。如何更改颜色栏以显示最大为2的完整范围?
你能用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | import matplotlib.pyplot as plt import numpy as np fig = plt.figure() ax = fig.add_subplot(111) # Random data data = np.random.rand(10, 10) # Plot data plot = ax.imshow(data) # Create colorbar cbar = plt.colorbar(plot) cbar_ticks = np.linspace(0., 1., num=6, endpoint=True) cbar.set_ticks(cbar_ticks) plt.show(block=False) def update(): new_data = 2.*np.random.rand(10, 10) plot.set_data(new_data) cbar.set_clim(vmin=0,vmax=2) cbar_ticks = np.linspace(0., 2., num=11, endpoint=True) cbar.set_ticks(cbar_ticks) cbar.draw_all() plt.draw() plt.show() update() |
更新我已经根据你的评论和这个答案更新了我的答案。链接
这就是你想做的?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | import matplotlib.pyplot as plt import numpy as np fig = plt.figure() ax = fig.add_subplot(111) # Random data data = np.random.rand(10, 10) # Plot data levels = np.linspace(0., 1., 100) plot = ax.contourf(data, levels=levels) # Create colorbar cbar = plt.colorbar(plot) cbar_ticks = np.linspace(0., 1., num=6, endpoint=True) cbar.ax.set_autoscale_on(True) cbar.set_ticks(cbar_ticks) plt.show(block=False) def update(): global cbar cbar.remove() fig.clear() # Create new data and plot new_data = 2.*np.random.rand(10, 10) new_levels = np.linspace(0., 2., 200) ax = fig.add_subplot(111) plot = ax.contourf(new_data, levels=new_levels ) cbar = plt.colorbar(plot) cbar_ticks = np.linspace(0., 2., num=21, endpoint=True) cbar.set_ticks(cbar_ticks) plt.draw() update() |
号