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?
1
A
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()