为了账号安全,请及时绑定邮箱和手机立即绑定

如何在seaborn的“岭图”处向轴标签添加单位

如何在seaborn的“岭图”处向轴标签添加单位

翻阅古今 2021-10-12 15:27:59
我想根据 seaborn 'ridge plot' 示例(https://seaborn.pydata.org/examples/kde_ridgeplot.html)执行以下操作:我想将单位添加到 x 轴的 x 标签中,使其在图中显示为[m]中的x。我怎么做?将命令扩展g.map(label, "x")为g.map(label, "x in [m]")导致以下错误:KeyError: "['x [m]'] not in index"我的代码如下:import numpy as npimport pandas as pdimport seaborn as snsimport matplotlib.pyplot as pltsns.set(style="white", rc={"axes.facecolor": (0, 0, 0, 0)})errorNames = ['Error 1 - abc.....',              'Error 2 - abc.....',              'Error 3 - abc.....',              'Error 4 - abc.....',              'Error 5 - abc.....',              'Error 6 - abc.....',              'Error 7 - abc.....',              'Error 8 - abc.....',              'Error 9 - abc.....',              'Error 10 - abc.....',              'Error 11 - abc.....',              'Error 12 - abc.....',              'Error 13 - abc.....']# Create the datars = np.random.RandomState(1979)x = rs.randn(650)#g = np.tile(list("ABCDEFGHIJKLM"), 50)g = np.tile(list(errorNames), 50)df = pd.DataFrame(dict(x=x, g=g))#m = df.g.map(ord)#df["x"] += m# Initialize the FacetGrid objectpal = sns.cubehelix_palette(10, rot=-.25, light=.7)g = sns.FacetGrid(df, row="g", hue="g", aspect=15, height=.5, palette=pal)# Draw the densities in a few stepsg.map(sns.kdeplot, "x", clip_on=False, shade=True, alpha=1, lw=1.5, bw=.2)g.map(sns.kdeplot, "x", clip_on=False, color="w", lw=2, bw=.2)g.map(plt.axhline, y=0, lw=2, clip_on=False)#sns.plt.xlim(-10, 3)# Define and use a simple function to label the plot in axes coordinatesdef label(x, color, label):    ax = plt.gca()    ax.text(0, .2, label, fontweight="bold", color=color,            ha="left", va="center", transform=ax.transAxes)g.map(label, "x")#g.map(label, "x [m]")# Set the subplots to overlap # Erst hier wird geplottedg.fig.subplots_adjust(hspace=-.25)# Remove axes details that don't play well with overlapg.set_titles("")g.set(yticks=[])g.despine(bottom=True, left=True)
查看完整描述

3 回答

?
慕斯王

TA贡献1864条经验 获得超2个赞

一种方法是使用g.axes. 然后获取数组中的最后一个轴并设置该轴的 xlabel:


last_ax = g.axes.flat[-1]

last_ax.set_xlabel("x in [m]")

//img1.sycdn.imooc.com//6165394b0001168006480474.jpg

查看完整回答
反对 回复 2021-10-12
?
红颜莎娜

TA贡献1842条经验 获得超12个赞

只是一个附加说明,您可能希望将 pal 中的数量增加到 13 以保持颜色渐变。

pal = sns.cubehelix_palette(13, rot=-.25, light=.7)


查看完整回答
反对 回复 2021-10-12
?
阿晨1998

TA贡献2037条经验 获得超6个赞

只是玩弄轴对象g,我找到了一种简单且看似直接的方法来使用set_xlabels. 在这里阅读文档,感谢@DavidG 找到它。具体来说,


set_xlabels([label]) 在网格的底行标记 x 轴。


g.map(label, "x")

g.set_xlabels('x in [m]')

//img1.sycdn.imooc.com//6165393d0001d99405260455.jpg

查看完整回答
反对 回复 2021-10-12
  • 3 回答
  • 0 关注
  • 303 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信