2013-06-16 10 views
24

Czy ktoś może mi pomóc ustawić tyknięcia na ustalonej pozycji za pomocą matplotlib? Próbowałem za pomocą FixedPosition jak ten poradnik opisuje:Jak ustawić tyknięcia na ustalonej pozycji, matplotlib

ax = pl.gca() 
ax.xaxis.set_major_locator(eval(locator)) 

http://scipy-lectures.github.io/intro/matplotlib/matplotlib.html#figures-subplots-axes-and-ticks

Ale gdy próbuję uruchomić, to mówi mi, że metody set_major_locator nie istnieje.

Prosty przykład byłby bardzo użyteczny.

Dzięki.

+2

Ten link jest mylące z kontekstu. Użycie 'eval' może być bardzo sprytne przy generowaniu ich przykładowych liczb, nie jest jasne, jaka jest wartość' locator'. – tacaswell

Odpowiedz

47

Po prostu użyj ax.set_xticks(positions) lub ax.set_yticks(positions).

Na przykład:

import matplotlib.pyplot as plt 

fig, ax = plt.subplots() 
ax.set_xticks([0.15, 0.68, 0.97]) 
ax.set_yticks([0.2, 0.55, 0.76]) 
plt.show() 

enter image description here

+2

ta metoda usunie istniejące już tiki na działkach. Co się stanie, jeśli chcę dodać te dodatkowe tiki bez wpływu na istniejące? – dnth

+0

@dnth: Możesz "twinx()" lub "twiny()" wykres stworzyć nową oś z kleszczami po przeciwnej stronie. –

+0

@dnth Możesz uzyskać lokalizacje za pomocą 'locs = ax.xaxis.get_ticklocs()', zmodyfikuj tę listę, aby dodać odpowiednie tiki, a następnie postępuj zgodnie z sugestiami Joe z 'ax.set_xticks (locs)'. – ryanjdillon

1
import numpy as np 
import matplotlib.ticker as ticker 
import matplotlib.pyplot as plt 

name_list = ('Omar', 'Serguey', 'Max', 'Zhou', 'Abidin') 
value_list = np.random.randint(0, 99, size = len(name_list)) 
pos_list = np.arange(len(name_list)) 

ax = plt.axes() 
ax.xaxis.set_major_locator(ticker.FixedLocator((pos_list))) 
ax.xaxis.set_major_formatter(ticker.FixedFormatter((name_list))) 
plt.bar(pos_list, value_list, color = '.75', align = 'center') 

plt.show() 
+0

Chcesz opracować? –

+0

To było pomocne. – ConanG

Powiązane problemy