将顶部和底部值标签添加到颜色条

Ben*_* Ae 6 python plot matplotlib heatmap colorbar

我想将顶部和底部值添加到我的颜色条中。因此,顶部值的范围是我的数据中值的最大数量,底部是我数据中的最小数量

在此输入图像描述

import numpy as np
import matplotlib.pyplot as plt
import matplotlib

data = np.genfromtxt("E:\\data\\data1.txt", delimiter="\t")
minVal =  np.min(data[np.nonzero(data)])
maxVal =  np.max(data[np.nonzero(data)])

fig, ax = plt.subplots()
im = ax.imshow(data, cmap='Purples',
           interpolation='nearest',
           norm=matplotlib.colors.LogNorm(),
           vmin=minVal,vmax = maxVal,    
               )

cbar = fig.colorbar(im)

print("min ",minVal)
print("max", maxVal)

plt.show()
Run Code Online (Sandbox Code Playgroud)

She*_*ore 4

这是一种使用一些随机数据进行演示的解决方案。想法如下:

  • 从颜色栏中获取现有的刻度线及其标签
  • 添加两个刻度以及最小值和最大值的标签
  • 设置新刻度和新标签

import numpy as np
import matplotlib.pyplot as plt
import matplotlib

data = np.random.randint(0, 50000, (50,50))
minVal =  np.min(data[np.nonzero(data)])
maxVal =  np.max(data[np.nonzero(data)])

print (minVal, maxVal)
# 4, 49983    

fig, ax = plt.subplots()
im = ax.imshow(data, cmap='Purples', interpolation='nearest',
           norm=matplotlib.colors.LogNorm(), vmin=minVal,vmax = maxVal,)

cbar = fig.colorbar(im)

# Get the default ticks and tick labels
ticklabels = cbar.ax.get_ymajorticklabels()
ticks = list(cbar.get_ticks())

# Append the ticks (and their labels) for minimum and the maximum value
cbar.set_ticks([minVal, maxVal] + ticks)
cbar.set_ticklabels([minVal, maxVal] + ticklabels)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述