2016-02-05 3 views
2

Простого вопроса: мне нужно, чтобы скрыть ось у от сюжета, порожденным этого кодом:Скрытие оси у в этом участке

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() 

enter image description here

должен быть достаточно простым, но все примеры кода, которые я нашел до сих пор, не сработали, например fig.axes[0].get_yaxis().set_visible(False)

ответ

5

Левая ось от 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. 
+1

Seaborn в основном обертка поверх Matplotlib поэтому ваше утверждение не совсем верно. – tacaswell

Смежные вопросы