2016-01-27 2 views
0

Есть ли способ получить вертикальную пунктирную линию в matplotlib, чтобы всегда касаться верхней и нижней частей yaxis? Я рисую две вертикальные линии, с пространством между ними, и я хочу, чтобы они касались верхней и нижней части моего ура. Они касаются нижней части yaxis, но они будут касаться только верхней части yaxis моего сюжета, если я изменю начальное значение y, чтобы линия Linestyle касалась вверху. Я также попытался использовать ax.vlines и получил тот же результат.точка пунктирная линия касание yaxis мин. И макс в matplotlib

Возможно - есть способ изменить расстояние между точкой и тире в linestyle, чтобы сделать это?

plt.plot((55843.8747516981, 55843.8747516981), (yminPlot, 4.53), linewidth=2, 
     linestyle='-.', color='r') 
plt.plot((55843.8747516981, 55843.8747516981), (7.03, ymaxPlot), linewidth=2, 
     linestyle='-.', color='r') 

ответ

1

Если я правильно понимаю ваш вопрос, вы можете решить эту проблему путем изменения порядка, как рисуется вторая линия, чтобы быть оттянутая сверху донизу

plt.plot((55843.8747516981, 55843.8747516981), (yminPlot, 4.53), linewidth=2, 
     linestyle='-.', color='r') 
plt.plot((55843.8747516981, 55843.8747516981), (ymaxPlot, 7.03), linewidth=2, 
     linestyle='-.', color='r') 
+0

Блестящий! Спасибо! – grover

1

Вы можете использовать преобразования координат (transformations tutorial). Для того, чтобы нарисовать линию от основания до вершины в определенной координате х:

import matplotlib.transformas as transforms 

# get current axes 
ax = plt.gca() 

# define a blended transformation 
# ax.transData ... use data coordinates 
# ax.transAxes ... use axes coordinates ranging from (0,0) to (1,1) 
trans = transforms.blended_transform_factory(ax.transData, ax.transAxes) 

# plot a vertical line at x=55843.8747516981 
# note that the 
plt.plot((55843.8747516981,55843.8747516981), (0,1), linewidth=2, linestyle='-.', color='r', transform=trans) 
+0

Очень умный, спасибо за эту заметку. – grover