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

如何在matplotlib图中添加轴偏移量?

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

如何在matplotlib图中添加轴偏移量?

首先回答最常见的情况。可以通过将图中的艺术家移动一定量来实现躲避。将点用作该偏移的单位可能会很有用。例如,您可能需要将情节上的标记移动5点。
可以通过在艺术家的数据转换中添加翻译来完成此转换。我在这里提出一个建议

ScaledTranslation

现在,为了保持最通用,可以编写一个函数,该函数将绘图方法,轴和数据作为输入,此外还应应用一些闪避功能,例如

draw_dodge(ax.errorbar, X, y, yerr =y/4., ax=ax, dodge=d, marker="d" )

完整的功能代码:

import matplotlib.pyplot as pltfrom matplotlib import transformsimport numpy as npimport pandas as pddef draw_dodge(*args, **kwargs):    func = args[0]    dodge = kwargs.pop("dodge", 0)    ax = kwargs.pop("ax", plt.gca())    trans = ax.transData  + transforms.ScaledTranslation(dodge/72., 0,  ax.figure.dpi_scale_trans)    artist = func(*args[1:], **kwargs)    def iterate(artist):        if hasattr(artist, '__iter__'): for obj in artist:     iterate(obj)        else: artist.set_transform(trans)    iterate(artist)    return artistX = ["a", "b"]Y = np.array([[1,2],[2,2],[3,2],[1,4]])Dodge = np.arange(len(Y),dtype=float)*10Dodge -= Dodge.mean()fig, ax = plt.subplots()for y,d in zip(Y,Dodge):    draw_dodge(ax.errorbar, X, y, yerr =y/4., ax=ax, dodge=d, marker="d" )ax.margins(x=0.4)plt.show()

您可以使用这项功能

ax.plot
ax.scatter
但是不与任何的seaborn功能等,因为他们没有任何有用的艺术家复工用。


现在对于所讨论的情况,剩下的问题是以有用的格式获取数据。一种选择如下。

df1 = pd.Dataframe({'x':list('ffffssss'),          'y':[1,2,3,4,5,6,7,8],          'h':list('abababab')})df2 = df1.copy()df2['y'] = df2['y']+0.5N = len(np.unique(df1["x"].values))*len([df1,df2])Dodge = np.linspace(-N,N,N)/N*10fig, ax = plt.subplots()k = 0for df in [df1,df2]:    for (n, grp) in df.groupby("h"):        x = grp.groupby("x").mean()        std = grp.groupby("x").std()        draw_dodge(ax.errorbar, x.index, x.values,         yerr =std.values.flatten(), ax=ax,         dodge=Dodge[k], marker="o", label=n)        k+=1ax.legend()        ax.margins(x=0.4)plt.show()



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

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

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