2013-11-12 3 views
2

Ищу комбинацию LineStyle/линейный символ, который, по существу, холодный фронт символ: Triangles pointing upSawtooth стиль линии в matplotlib?

Я попытался с помощью опции маркеров для добавления треугольников с вращением, что соответствует наклону кривых на каждом но он выглядит уродливым и, откровенно говоря, не работает.

Кто-нибудь знает, как создать такой стиль линии, или знать какие-либо пакеты, которые делают что-то вроде этого? Благодаря!

ответ

3

Вот моя попытка, я использую quiver рисовать треугольники, то нужны нормальные векторы линии:

import pylab as pl 
import numpy as np 

x = np.linspace(0, 2*np.pi, 100) 
y = np.sin(x) 

dx = np.diff(x) 
dy = np.diff(y) 

x2 = np.linspace(0, 2*np.pi, 10) 
y2 = np.sin(x2) 

dx = np.zeros_like(x2) + 1e-12 
dy = np.sin(x2+dx) - y2 

length = np.sqrt(dx**2 + dy**2) 
dx /= length 
dy /= length 

fig, ax = pl.subplots() 
ax.set_aspect("equal") 
ax.plot(x, y, lw=4) 

size = 20 
ax.quiver(x2, y2, -dy, dx, headaxislength=size, headlength=size, headwidth=size, color="blue") 
pl.margins(0.2) 

выход:

enter image description here

+0

Это выглядит как хороший вариант! У меня есть более жесткие линии, чтобы рисовать, так что это немного грубо, но это работает! Благодаря! – ferrihydrite

Смежные вопросы