【问题标题】:How to use a dictonary for offset in seaborn.despine?如何在 seaborn.despine 中使用字典进行偏移?
【发布时间】:2018-02-22 06:04:11
【问题描述】:

我正在尝试单独调节刺的偏移量。例如,我希望左侧脊柱的距离比底部脊柱的距离大。 在文档中它说 offset-keyword 也接受字典;但是,我收到一条错误消息,但我不知道这意味着什么。令人惊讶的是,我找不到任何字典偏移组合的示例。

http://seaborn.pydata.org/generated/seaborn.despine.html

偏移量:int 或 dict,可选 绝对距离,以点为单位,刺应该远离轴(负值将刺向内移动)。单个值适用于 所有的刺; dict 可用于设置每边的偏移值。

这是我的无效示例代码:

sns.despine(ax=ax, trim=True, offset={'left':10,'right':10,'top':20,'bottom':13})

这是错误信息:

TypeError: unsupported operand type(s) for *: 'dict' and 'int'

总结: 我想知道如何单独设置每个脊椎的偏移量;最好使用 seaborn.despine。 (关于错误告诉我的其他解释也将不胜感激。)

谢谢:-)

编辑:
我尝试了 ImportanceOfBeingErnest 中的示例代码(仅添加了 'ticks' 作为样式),但仍然得到相同的结果。任何想法为什么会发生这种情况?

import matplotlib.pyplot as plt
import seaborn as sns

sns.set_style('ticks') 
fig,ax=plt.subplots()
ax.plot([1,2,3])

sns.despine(ax=ax, trim=True, offset={'left':10,'right':10,'top':20,'bottom':13})

plt.show()

情节显示出来了,但脊椎根本没有改变。

TypeError: unsupported operand type(s) for *: 'dict' and 'int'

resulting plot

【问题讨论】:

  • 似乎在这里工作。也许发布minimal reproducible example
  • 是的,它不可重现。使用上述内容时,我会得到something like this
  • 我更新了答案并添加了建议的迷你示例。
  • 很难看出错误从何而来;通常,使示例可验证还意味着说明完整的错误回溯(不仅仅是最后一行)并说明正在使用的库的版本。我最好的猜测是您使用的是旧版本的 seaborn 或 matplotlib 或它们的一些不兼容的组合。
  • 你确定你有最新版本的seaborn吗?这是一个非常新的功能。

标签: python matplotlib seaborn


【解决方案1】:

这是我的问题的解决方案。是的,正如ImportanceOfBeingErnestPaul H 指出的那样,使用的seaborn 版本确实存在问题。

基本上,归结为我没有正确使用anaconda 环境。
澄清我的具体问题是:我使用了安装最新 seaborn 版本(0.8.1)的 anaconda 环境:conda install -c conda-forge seaborn
但是,我并没有在环境中专门安装 spyder(我的主 IDE)。不过,我可以从环境中启动 spyder;所以我从来没有质疑过。好吧,事实证明 spyder 然后在其他地方寻找模块,我有一个较旧的 seaborn 版本(0.7.1)。这以前从来不是问题,但我很高兴现在知道。我在环境中安装了 spyder,现在它会查找正确的模块,并且 seaborn.despine 中的偏移量工作得很好:-) conda install -c anaconda spyder
然后来自jrinker's answer:
conda update -n $ENV_NAME spyder

【讨论】:

    猜你喜欢
    • 2020-07-19
    • 1970-01-01
    • 2012-12-07
    • 1970-01-01
    • 2013-12-29
    • 1970-01-01
    • 2020-01-01
    • 2014-11-10
    • 1970-01-01
    相关资源
    最近更新 更多