【问题标题】:Hiding the y-axis in this plot在此图中隐藏 y 轴
【发布时间】:2016-02-06 05:09:40
【问题描述】:

简单问题:我需要从这段代码生成的图中隐藏 y 轴:

import matplotlib.pyplot as plt
import seaborn
seaborn.set(style="white")
import random

objects = [("Zachary's karate club", 78),
            ("dolphins social network", 159),
            ("C. elegans connectome", 2148 ),
            ("US power grid", 6594 ),
            ("PGP web of trust (2004)", 24316),
            ("Linux kernel source file includes", 230213),
            ("Enron emails (1999-2003)", 1148072),
            ("Internet autonomous systems (2005)", 11095298),
            ("CS collaborations (DBLP)", 18e6),
            ("Wikipedia hyperlinks", 350e6),
            ("Twitter follower graph (2012)", 20e9),
            ("Facebook social graph (2011)", 68.7e9),
            ("NSA social graph (?)", 1e11),
            ("human connectome (neuronal)", 1e14)
           ]

fig, ax = plt.subplots(figsize=(16,6))

for i, (name, radius) in enumerate(objects):
    sgn = 2 * (i % 2) - 1
    ax.annotate(name, xy=(radius,0), xytext=(radius,sgn* (0.5 + random.randint(1,12) * 0.1)), ha='center',
                arrowprops=dict(arrowstyle="->", connectionstyle="arc,angleA=0,armA=30,rad=30", facecolor='gray'),
               color="Maroon")
ax.set_xscale('log')
ax.set_xlim(1.e1,1.e15)
ax.set_ylim(0,4)
ax.axes.get_yaxis().set_visible(False)
ax.axhline(color='k', lw=1)
ax.plot([obj[1] for obj in objects], [0]*len(objects), 'ob', markersize=2)
ax.set_yticks([])
ax.tick_params(length=8)
ax.set_xlabel('edges')
seaborn.despine()
plt.show()

应该很简单,但到目前为止我发现的所有代码示例都没有工作,例如fig.axes[0].get_yaxis().set_visible(False)

【问题讨论】:

    标签: python matplotlib seaborn


    【解决方案1】:

    左轴来自seaborn,而不是matplotlib。您可以使用以下命令将其关闭:

    seaborn.despine(left=True)
    

    回应下面的 tcaswell 评论:

    Seaborn 将样条曲线添加到绘图中。 despine 命令接受以下参数来删除它们。但是,您必须明确告诉它关闭左侧或底部。

    seaborn.despine(fig=None, ax=None, top=True, right=True, left=False, bottom=False, offset=None, trim=False)
    

    在哪里

    top, right, left, bottom : boolean, optional
    If True, remove that spine.
    

    【讨论】:

    • Seaborn 主要是 matplotlib 之上的一个包装器,所以你的说法并不完全正确。
    • 是的,Seaborn 使用 matplotlib 作为构建块,提供了灵活性。
    【解决方案2】:

    这有点小技巧,但似乎可以得到你想要的结果。

    ax.set_frame_on(False) #Remove both axes
    ax.axhline(0,color='black') #Put the x axis back
    

    来自两个网站:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-05
      • 2014-11-28
      • 1970-01-01
      • 2016-11-30
      • 2020-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多