python - 如何设置颜色条轮廓的刻度、颜色和标签的限制

标签 python matplotlib colorbar contourf

我有一个值的空间字段,我在一天中定期输出它。我正在使用 contourf 进行绘图,并且我想在一天的数据过程中执行以下操作:

  • 将颜色条上的颜色限制为代表当天数据的最小值和最大值的值
  • 在 24 小时图中保持日数据最大值和最小值的颜色条静态
  • 在这 24 小时内保持标签静态

例如:

data = np.random.uniform(0, 5, size=(24,30,30))
data[3,:,:]=np.random.uniform(1,3,size=(30,30))  # example of bad plot
fgsize=(12,4)
numrecs = np.size(data,axis=0)
cbar_min = np.min(data)
cbar_max = np.max(data)
cbarlabels = np.linspace(np.floor(cbar_min), np.ceil(cbar_max), num=5, endpoint=True)


for tt in range(0, numrecs):
    plt.figure(figsize=fgsize, dpi=80)
    plt.title('this is a title')
    plt.contourf(data[tt, :, :], 35, vmin=cbar_min, vmax=cbar_max, cmap='coolwarm')
    cbar =plt.colorbar()
    cbar.set_ticks(cbarlabels)
    cbar.set_ticklabels(cbarlabels)
    cbar.set_label('my data has units')
    plt.show()
    plt.close()

这是 bad plot 的示例。颜色似乎有限,但颜色条改变了它的颜色/标签限制。我该如何解决?

这是 good plot 的示例.

最佳答案

事实证明,contourf 在设置颜色图的级别时有点棘手,请参阅 this answer 。您可以通过标准化轮廓来获得适当的限制和颜色,如下所示:

import numpy as np
import matplotlib.pyplot as plt

data = np.random.uniform(0, 5, size=(24,30,30))
data[3,:,:]=np.random.uniform(1,3,size=(30,30))  # example of bad plot
fgsize=(12,4)
numrecs = np.size(data,axis=0)
cbar_min = np.min(data)
cbar_max = np.max(data)
cbarlabels = np.linspace(np.floor(cbar_min), np.ceil(cbar_max), num=5, endpoint=True)

# Set the normalisation for 35 levels (as in your example)
import matplotlib.colors as mc
levels = np.linspace(np.floor(cbar_min), np.ceil(cbar_max), 35) # to draw 35 levels
norm = mc.BoundaryNorm(levels, 256)

for tt in range(0, numrecs):
    print cbar_min, cbar_max
    plt.figure(figsize=fgsize, dpi=80)
    plt.title('this is a title')

    # Draw those levels, with proper normalisation, here:
    plt.contourf(data[tt, :, :], levels, vmin=cbar_min, vmax=cbar_max, cmap='coolwarm', levels=levels, norm=norm)

    cbar = plt.colorbar()
    cbar.set_ticks(cbarlabels)
    cbar.set_ticklabels(cbarlabels)
    cbar.set_label('my data has units')
    plt.show()

关于python - 如何设置颜色条轮廓的刻度、颜色和标签的限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35047106/

相关文章:

python - 如何忽略csv文件中的空白行

Python IRC 机器人,不会停止循环

python - 使用 Keras 了解 WeightedKappaLoss

python - 绘制堆积条形图

用于按值绘制线图颜色的 matlab colorbar

python - flask 返回存储在数据库中的图像

python-3.x - 如何将原点居中在 imshow() 图的中心

python - 将事件的时间序列 + 持续时间重新采样为并发事件

python - 更改子图大小并使用 histogram2d 添加颜色条

python - 颜色条中的奇怪范围值,matplotlib