栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

将图像插入饼图切片

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将图像插入饼图切片

那肯定是可能的。我们可以从正常的饼图开始。然后,我们需要将图像放入图中。这是通过

plt.imread
和通过使用来完成的
matplotlib.offsetbox.OffsetImage
。我们将需要找到合适的坐标和缩放级别来放置图像,以使其与各自的饼图完全重叠。然后,将饼的楔形路径用作图像的剪切路径,以便仅保留楔形内的部分。将未填充的楔形的zorder设置为较高的数字可确保将边框放置在图像的顶部。这样看起来像是楔子充满了图像。

import matplotlib.pyplot as pltfrom matplotlib.patches import PathPatchfrom matplotlib.offsetbox import OffsetImage, AnnotationBboxtotal = [5,7,4]labels = ["Raspberries", "Blueberries", "Blackberries"]plt.title('Berries')plt.gca().axis("equal")wedges, texts = plt.pie(total, startangle=90, labels=labels,  wedgeprops = { 'linewidth': 2, "edgecolor" :"k","fill":False,  })def img_to_pie( fn, wedge, xy, zoom=1, ax = None):    if ax==None: ax=plt.gca()    im = plt.imread(fn, format='png')    path = wedge.get_path()    patch = PathPatch(path, facecolor='none')    ax.add_patch(patch)    imagebox = OffsetImage(im, zoom=zoom, clip_path=patch, zorder=-10)    ab = AnnotationBbox(imagebox, xy, xycoords='data', pad=0, frameon=False)    ax.add_artist(ab)positions = [(-1,0.3),(0,-0.5),(0.5,0.5)]zooms = [0.4,0.4,0.4]for i in range(3):    fn = "data/{}.png".format(labels[i].lower())    img_to_pie(fn, wedges[i], xy=positions[i], zoom=zooms[i] )    wedges[i].set_zorder(10)plt.show()


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/647400.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号