Есть ли список стилей линий в matplotlib?


Я пишу сценарий, который будет делать некоторые заговоры. Я хочу, чтобы он построил несколько рядов данных, каждый из которых имеет свой уникальный стиль линии (не цвет). Я могу легко перебирать список, но есть ли такой список уже доступен в python?

5 59

5 ответов:

по данным док вы можете найти их, делая это :

from matplotlib import lines
lines.lineStyles.keys()
>>> ['', ' ', 'None', '--', '-.', '-', ':']

вы можете сделать то же самое с метки

plot документация

http://matplotlib.org/1.5.3/api/pyplot_api.html#matplotlib.pyplot.plot имеет список стилей линии + маркера:

character description
'-'       solid line style
'--'      dashed line style
'-.'      dash-dot line style
':'       dotted line style
'.'       point marker
','       pixel marker
'o'       circle marker
'v'       triangle_down marker
'^'       triangle_up marker
'<'       triangle_left marker
'>'       triangle_right marker
'1'       tri_down marker
'2'       tri_up marker
'3'       tri_left marker
'4'       tri_right marker
's'       square marker
'p'       pentagon marker
'*'       star marker
'h'       hexagon1 marker
'H'       hexagon2 marker
'+'       plus marker
'x'       x marker
'D'       diamond marker
'd'       thin_diamond marker
'|'       vline marker
'_'       hline marker

так как это часть pyplot.plot docstring, вы также можете увидеть его из терминала с:

import matplotlib.pyplot as plt
help(plt.plot)

из моего опыта приятно иметь цвета и маркеры в списке, чтобы я мог перебирать их при построении графика.

вот как я получаю список таких вещей. Пришлось немного покопаться.

import matplotlib
colors_array = matplotlib.colors.cnames.keys()
markers_array = matplotlib.markers.MarkerStyle.markers.keys()

в python3 the .keys() метод возвращает a

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

вы можете создавать линии между A и B с поперечными полосами, такими как

A||||||||||||||||||||||||||||||||||||||||||||||| B

A|| || || || || || || || || || || || || || || || B

A| | | | | | | | | | | | | | | | | | | | | | | | B

увеличивая ширину линии и указание пользовательского шаблона тире:

ax.plot(x, y, dashes=[30, 5, 10, 5])

документация matplotlib.lines.Line2Dговорит о set_dashes(seq):

установить последовательность тире, последовательность тире с вкл выкл чернил в точках. Если последовательность пуста или если сл = (никто, никто), метода linestyle будет установлен в твердой.

ПРИЗНАВАЕТ: последовательность включено-выключено чернил внутри очки

Я думаю, что это можно было бы сказать лучше: когда он рисует линию, последовательность чисел указывает, сколько точек нарисовано вдоль линии, а затем сколько точек осталось (если есть два числа), сколько нарисовано, сколько неокрашено (в случае четырех чисел в последовательности). С помощью четырех чисел можно создать пунктирную линию: [30, 5, 3, 5] дает 30-точечный тире, 5-точечный разрыв, 3-точечный тире (точка) и 5-точечный разрыв. Тогда это повторяемость.

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