2016-08-06 7 views
1

Ich bin mir der markevery Option bewusst, die es erlaubt, nur einen Marker an jedem n-ten Punkt zu platzieren. Allerdings verwende ich die MaxNLocator, um Tick-Positionen zu definieren und möchte nur Markierungen an diesen Tick-Positionen anzeigen. Wie kann ich Marker nur an Tick-Positionen anzeigen, entweder mit einer Option oder manuell?Wie setze ich Marker nur bei Tick-Positionen in Matplotlib?

Antwort

2

Sie können die Ticks mit ax.get_xticks() bekommen, finden Sie die closest point entsprechend jedem xtick und dann den Index auf die x-Werte. Mit den Indizes ist es einfach, die Xtick-Werte zu plotten.

#!/usr/bin/env python 
# a bar plot with errorbars 
import numpy as np 
import matplotlib.pyplot as plt 
plt.close('all') 

def find_nearest(array,value): 
    idx = (np.abs(array-value)).argmin() 
    return idx 

x = np.linspace(-1, 1, 100) 
y = x**2 

fig, ax = plt.subplots(1, 1) 

ax.plot(x, y, '--') 

xtick = ax.get_xticks() 

idx = [find_nearest(x, tick) for tick in xtick] 

ax.plot(x[idx], y[idx], 'ro') 

plt.show()