2015-03-02 14 views
5

Chcę narysować siatkę na osi X na wykresie matplotlib na pozycjach mniejszych znaczników, ale nie na pozycjach głównych znaczników. Moje kleszcze burmistrza są na pozycjach 0, 1, 2, 3, 4, 5 i muszą tam pozostać. Chcę siatki o 0,5, 1,5, 2,5, 3,5, 4,5.Jak ustawić lokalizację mniejszych znaczników w matplotlib?

.... 
from matplotlib.ticker import MultipleLocator 
.... 
minorLocator = MultipleLocator(0.5) 
ax.xaxis.set_minor_locator(minorLocator) 
plt.grid(which='minor') 

Powyższy kod nie działa, ponieważ daje lokalizacje na poziomie 0,5, 1,0, 1,5, ... W jaki sposób można ustawić położenie drobnych kleszczy ręcznie?

Odpowiedz

13

Można użyć matplotlib.ticker.AutoMinorLocator. Spowoduje to automatyczne umieszczenie mniejszych tyknięć N-1 w miejscach rozmieszczonych równomiernie pomiędzy większymi znacznikami.

Na przykład, jeśli użyjesz AutoMinorLocator(5), to umieści 4 drobne drobne punkty w równych odstępach między każdą parą dużych tyknięć. Dla swojego przypadku użycia chcesz AutoMinorLocator(2), aby po prostu umieścić go w środkowym punkcie.

import matplotlib.pyplot as plt 
import numpy as np 

from matplotlib.ticker import AutoMinorLocator 

N = 1000 
x = np.linspace(0, 5, N) 
y = x**2 

fig, ax = plt.subplots() 

ax.plot(x, y) 

minor_locator = AutoMinorLocator(2) 
ax.xaxis.set_minor_locator(minor_locator) 
plt.grid(which='minor') 

plt.show() 

Example plot

Korzystanie AutoMinorLocator ma tę zaletę, że powinna trzeba skalować swoje dane w górę, na przykład dzięki czemu główne kleszcze są w [0, 10, 20, 30, 40, 50], wtedy twoje drobne kleszcze będą skalowane w górę do pozycji [5, 15, 25, 35, 45].

Jeśli naprawdę potrzebujesz miejsc o ustalonym położeniu, nawet po skalowaniu/zmianie, a następnie wyszukaj matplotlib.ticker.FixedLocator. Dzięki temu możesz przekazać stałą listę, na przykład FixedLocator([0.5, 1.5, 2.5, 3.5, 4.5]).

+1

Wielkie dzięki! To jest rozwiązanie, którego szukałem :) – smurd

+0

@Ffisegydd czy ta metoda działa również z datami '(DD/MM/YYYY)'? – 3kstc

Powiązane problemy