2017-02-13 4 views
1

Я печатаю диаграмму с линией, исходящей из 2 массивов numpy с таким же количеством поплавков в них, как это, и она работает нормально.Как программировать шаг в зависимости от цветных линий с помощью matplotlib

f_used = sp.interpolate.interp1d(time, distance, kind='cubic') 
timeinterp = sp.arange(0, runtime+incr, incr) 
distinterp = f_used(timeinterp) 
plt.plot(timeinterp, distinterp, '-', lw=3, c="red") 

Пока что так хорошо. На следующем шаге я хочу рисовать линии в зависимости от их высоты (distinterp/timeinterp). Если отношение> 5,0, то скажем, что стиль линии должен быть «пунктирным» или/и получать другой цвет. Я не могу найти решение. У кого-то есть идея?

Если это помогает: Raspbian на Raspberry Pi 3, все программное обеспечение, с помощью Python3

+0

Пожалуйста, взгляните на то, как я отредактировал ваш вопрос и отформатировал ваши блоки кода одинаково (4 отступов пространства) в будущем. Делает это проще на глазах. –

ответ

1

Вы эффективно должны разделить данные в различные части, которые вы хотите, поскольку каждый объект линия может иметь только один стиль/цвет /и т.д. назначенная ему комбинация.

Это должно быть тривиальным использованием NumPy (или SciPy, что в вашем случае просто импортировать основные Numpy функции непосредственно):

mask = (distinterp/timeinterp) > 5.0 
plt.plot(timeinterp[mask], distinterp[mask], ':', lw=3, c='r') 
plt.plot(timeinterp[~mask], distinterp[~mask], '-', lw=3, c='b') 

Лучшим способом может быть использование объектно-ориентированный API Matplotlib в:

mask = (distinterp/timeinterp) > 5.0 
fig, ax = plt.subplots() 
ax.plot(timeinterp[mask], distinterp[mask], ':', lw=3, c='r') 
ax.plot(timeinterp[~mask], distinterp[~mask], '-', lw=3, c='b') 
+0

Хороший ответ, но не возражаете удалить заявление о '' plt.hold (True) '] (http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.hold), что не имеет никакого смысла. Последующие вызовы 'plot' всегда будут отображаться на одни и те же оси, и использование' plt.hold' обесценивается. – ImportanceOfBeingErnest

+0

Большое спасибо за этот быстрый ответ. Кажется, работает. Теперь я могу продолжить работу. –

+0

@ImportanceOfBeingErnest. Ты прав. Исправлена. –

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

  • Нет связанных вопросов^_^