如何在 Python 中的矩形内绘制圆形热图
How to draw a circular heatmap within a rectangle in Python
假设我有一张图片,我在图片的一部分上有一个边界框。如何在此矩形内绘制圆形热图?
你需要在想要的位置新建一个Axes
,用极坐标pcolor
图构造一个"heatmap":
import matplotlib.pyplot as plt
import numpy as np
fig,ax1 = plt.subplots()
# plot dummy image
ax1.imshow(np.random.rand(200,200),cmap='viridis')
# create new Axes, position is in figure relative coordinates!
relpos = [0.6, 0.6, 0.2, 0.2]
ax2 = fig.add_axes(relpos, polar=True)
ax2.axis('off')
phi = np.linspace(0,2*np.pi,50)
r = np.linspace(0,1,50)
gradient = np.tile(np.linspace(0,1,r.size)[:,None],phi.size)
ax2.pcolor(gradient,cmap='hot_r')
结果:
颜色渐变从颜色图中线性采样,在上面的示例中命名为 hot_r
。您可以同时使用颜色图和 gradient
变量的过渡,结果将始终是径向相关的。
您唯一需要注意的是将矩形(以只有您能分辨的单位给出)转换为相对图形单位(其中 (0,0) 是图形的左下角,并且(1,1) 是左上角)。轴定位以通常用于盒形对象的方式工作:[left,bottom,width,height]
.
假设我有一张图片,我在图片的一部分上有一个边界框。如何在此矩形内绘制圆形热图?
你需要在想要的位置新建一个Axes
,用极坐标pcolor
图构造一个"heatmap":
import matplotlib.pyplot as plt
import numpy as np
fig,ax1 = plt.subplots()
# plot dummy image
ax1.imshow(np.random.rand(200,200),cmap='viridis')
# create new Axes, position is in figure relative coordinates!
relpos = [0.6, 0.6, 0.2, 0.2]
ax2 = fig.add_axes(relpos, polar=True)
ax2.axis('off')
phi = np.linspace(0,2*np.pi,50)
r = np.linspace(0,1,50)
gradient = np.tile(np.linspace(0,1,r.size)[:,None],phi.size)
ax2.pcolor(gradient,cmap='hot_r')
结果:
颜色渐变从颜色图中线性采样,在上面的示例中命名为 hot_r
。您可以同时使用颜色图和 gradient
变量的过渡,结果将始终是径向相关的。
您唯一需要注意的是将矩形(以只有您能分辨的单位给出)转换为相对图形单位(其中 (0,0) 是图形的左下角,并且(1,1) 是左上角)。轴定位以通常用于盒形对象的方式工作:[left,bottom,width,height]
.