2017-02-07 9 views
1

Я играл с настройкой галочки в rcParams, используя «in», «out», включающий и выключая левый, правый, нижний и верхний тики, но мне еще предстоит найти способ сделать что-то кажется таким простым. Я просто хочу, чтобы и правые, и левые галочки y-axes были обращены влево, а верхняя и нижняя оси x гаснут вниз.Почему у меня ограниченный выбор по тику в matplotlib? (управление отдельными осями)

Как это сделать? Есть ли способ изменить объекты Tick после их создания?

Heres сниппет меня дурачится с вещами, я, возможно, не в полной мере понять:

from pylab import * 
from numpy import * 
import matplotlib.pyplot as plt 
% matplotlib inline 

plt.rc("font",size=18) 
plt.rc("figure",figsize=(14,3.5)) 
matplotlib.rcParams.update({'ytick.left': True}) 
rc("ytick",direction="in") 
matplotlib.rcParams.update({'ytick.right': True}) 
rc("ytick",direction="out") 
#rc("ytick.major",left=True) 
#rc("ytick.major",right=True) 
#plt.rc("ytick",left=False) 

# test 
y = [2,3,4,5,6,7,8,9,12,13,4,23,23,34,3] 
x = [i for i in range(len(y))] 
plot(x,y) 

Прямо сейчас я пытаюсь сделать это в записной книжке Jupyter.

EDIT: Я нашел довольно приемлемое решение и поместил его в комментарии.

+0

matplotlib 2.0.0 был выпущен в прошлом месяце, может быть, у него есть новые возможности? – f5r5e5d

ответ

0

Таким образом, после некоторого лужения и входа от умных коллег, мое лучшее решением было это:

import matplotlib.pyplot as plt 
import mpl_toolkits.axisartist as aa 
% matplotlib inline 

y = array([3,2,4,5,7,8]) 
x = [i for i in range(len(y))] 

fig = plt.figure() 

#********************************************************* 
#****************** Here's the magic********************** 
#********************************************************* 
ax = aa.Subplot(fig,111) # 1 row, 1 column, 1st plot 
fig.add_subplot(ax) 

ax.axis["bottom","left"].major_ticks.set_tick_out(True) 
ax.axis["bottom","left"].minor_ticks.set_tick_out(True) 
ax.axis["top","right"].major_ticks.set_tick_out(False) 
ax.axis["top","right"].minor_ticks.set_tick_out(False) 

#********************************************************* 

ax.plot(x,y) 
ax.plot(x,y2) 
#ax.set_ylim(0,30) 
ax.set_yscale("log") 
ax.set_xscale("log") 

tickCtrl

важная часть, кажется, использует axisartist для создания сюжетного, потому что, когда я пытаюсь используйте "plt.subplots()" Я получаю ошибки при попытке вызвать ось ["bottom"].

Это странно для меня, потому что я считаю, что ось-ориентир всегда используется для рисования осей с помощью matplotlib. Мне бы хотелось услышать более подробное объяснение тем, кто имеет более глубокое понимание, чем я.

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

  • Нет связанных вопросов^_^