2016-05-11 3 views
2

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

plt.quiver(phia[sl1,sl2], R0a[sl1,sl2],u,v, color='white', headlength=0, headwidth = 1, pivot = 'middle', scale = scale, width=width, linewidth = 0.5) 

Участок находится в полярной оси, если это имеет значение. Это работает для большинства линий, за исключением очень коротких. Некоторые искусственные хвосты с границы производятся после линий в этих случаях. Один из сюжетов я сгенерированных, что больше всего страдает от этого заключается в следующем:

Quiver plot with artifacts at the end of lines

Любые решения этой проблемы или предложения, чтобы обойти это будет весьма признателен! Благодаря!

ответ

3

Указание параметра headaxislength для стрелок равным нулю делает трюк:

import numpy as np 
import matplotlib.pyplot as plt 

theta = np.linspace(0, 2*np.pi, 16) 
r = np.linspace(0, 1, 6) 
x = np.cos(theta)[:,np.newaxis]*r 
y = np.sin(theta)[:,np.newaxis]*r 

quiveropts = dict(color='white', headlength=0, pivot='middle', scale=3, 
    linewidth=.5, units='xy', width=.05, headwidth=1) # common options 
f, (ax1, ax2) = plt.subplots(1,2, sharex=True, sharey=True) 
ax1.quiver(x,y, -y, x, headaxislength=4.5, **quiveropts) # the default 
ax2.quiver(x,y, -y, x, headaxislength=0, **quiveropts) 

Код выше результатов в следующих quiverplots, без наконечников стрел. quiverplot without arrows

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