Edit: Miałem to otwarty i lewo, więc nie zauważyłem @ Odpowiedź Ricarda. Ponieważ matplotlib będzie konwertował pliki na numpy, niezależnie od tego, istnieją skuteczniejsze sposoby na to.
Jako przykład:
wykreślanie dwóch różnych pozycjach, po jednej z przerywaną lineStyle a drugi ze stałym lineStyle.
E.g.
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 100)
y1 = 2 * x
y2 = 3 * x
xthresh = 4.5
diff = np.abs(y1 - y2)
below = diff < xthresh
above = diff >= xthresh
# Plot lines below threshold as dotted...
plt.plot(x[below], y1[below], 'b--')
plt.plot(x[below], y2[below], 'g--')
# Plot lines above threshold as solid...
plt.plot(x[above], y1[above], 'b-')
plt.plot(x[above], y2[above], 'g-')
plt.show()
Dla przypadku, gdzie są one cykliczne, użyj zamaskowanych tablice:
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 100)
y1 = 2 * np.cos(x)
y2 = 3 * np.sin(x)
xthresh = 2.0
diff = np.abs(y1 - y2)
below = diff < xthresh
above = diff >= xthresh
# Plot lines below threshold as dotted...
plt.plot(np.ma.masked_where(below, x), np.ma.masked_where(below, y1), 'b--')
plt.plot(np.ma.masked_where(below, x), np.ma.masked_where(below, y2), 'g--')
# Plot lines above threshold as solid...
plt.plot(np.ma.masked_where(above, x), np.ma.masked_where(above, y1), 'b-')
plt.plot(np.ma.masked_where(above, x), np.ma.masked_where(above, y2), 'g-')
plt.show()
Co o wykonanie dwóch działek na krzywej? Jeden z pierwszym zbiorem punktów (zanim wartości zaczną się zbierać), a drugi z drugim zestawem. Po prostu ustaw działki tak, aby miały ten sam styl (kolor, marker itp.), Z wyjątkiem stylu linii! :) –
Dzięki, spróbuję tego. Mam kilka innych wątków, w których linie dalej się rozchodzą, zmieniając i tracąc znaczenie. To będzie oznaczać, że będę miał mnóstwo komend fabularnych, ale mam nadzieję, że uda mi się to rozwiązać. – Sceeerutinizer
@ RicardoCardenes- Proponuję umieścić swój komentarz jako odpowiedź, aby można go było wznowić/zaakceptować. Jest to właściwy sposób :-) –