如何在matplotlib绘制散点图时控制替换点位的图片显示尺寸
问题解决方法
核心调整参数
你可以通过修改两个类的入参实现需求:
OffsetImage的zoom参数:控制图片的缩放比例,小于1的数值会等比缩小图片,数值越小图片越小AnnotationBbox的pad/borderpad参数:控制图片外框的内边距,数值越小图片框越小
修改后的参考代码如下:
import matplotlib.pyplot as plt from matplotlib.offsetbox import OffsetImage, AnnotationBbox def getImage(path, zoom=0.1): # 新增zoom参数控制图片缩放 return OffsetImage(plt.imread(path), zoom=zoom) paths = get_img_list() x = mUMAP[0] y = mUMAP[1] fig, ax = plt.subplots(figsize=(16, 8), dpi=80) # 不需要默认散点可以删掉下一行,避免和自定义图片重叠 # ax.scatter(x, y) for x0, y0, path in zip(x, y,paths): ab = AnnotationBbox( getImage(path, zoom=0.08), # 调整zoom数值修改图片大小 (x0, y0), frameon=False, # 需要显示外框就改成True pad=0, # 控制外框和图片的边距,数值越小外框越小 borderpad=0 # 控制外框的边框宽度,数值越小外框越小 ) ax.add_artist(ab) plt.show()
1 控制图片框的大小
- 需要显示外框的话,先把
AnnotationBbox的frameon参数改为True - 调整
pad参数控制图片和外框之间的内边距,数值越大外框越大 - 调整
borderpad参数控制外框的边框宽度,数值越大外框越大 - 不需要外框的话保持
frameon=False即可,此时图片框就是图片本身的边界
2 展示尺寸更小的图片
直接调整OffsetImage的zoom参数即可,该参数默认值为1,是等比缩放不会改变图片长宽比。可以从0.1开始往下调整,比如觉得还是大就改成0.05,直到尺寸符合预期即可。
内容的提问来源于stack exchange,提问作者user3668129
相关产品推荐
相关产品推荐

