метка заговора в matplotlib после написания xy python - PullRequest
0 голосов
/ 27 апреля 2018

Мне нужно создать метку линии вне функции построения графиков для моих координатных точек. У меня есть список списков для циклического создания отдельных строк для каждой фазы тестовых данных:

fig = plt.figure(figsize=(11,8.5))
ax = fig.add_subplot(111)    
list_of_x_points = [[1,2,3],[4,5,6,7,8],[9,10,11,12],...]
    list_of_y_points = [[1,1,1],[2,2,2,2,2],[3,3,3,3],...]

for i in range(len(list_of_x_points)):
    ax.plot(list_of_x_points[i], list_of_x_points[i], linecolor = "b" , linewidth = 1, linestyle = 'dashed'))

Если после linestyle будет вставлена ​​этикетка, она будет печататься каждый раз, когда происходит цикл. Я хочу, чтобы он был напечатан только один раз. Я пробовал ax.legend(['Line Name']) после и вне цикла for, но он не работает. Как я могу назначить метку для линии на графике? График выглядит так:

enter image description here

1 Ответ

0 голосов
/ 27 апреля 2018

Как было указано, я создал тестируемую версию своего кода, и ax.legend() сработало.

fig = plt.figure(figsize=(11,8.5))
ax = fig.add_subplot(111)    
list_of_x_points = [[1,2,3],[4,5,6,7,8],[9,10,11,12]]
list_of_y_points = [[1,1,1],[2,2,2,2,2],[3,3,3,3]]

for i in range(len(list_of_x_points)):
    ax.plot(list_of_x_points[i], list_of_x_points[i], "-b" , linewidth = 1, linestyle = 'dashed')
ax.legend(['Print this'])
plt.show()

Все еще не понимая, что не так с моим исходным кодом, я продолжал искать и нашел очевидный ответ:

for i in range(len(list_of_x_points)):
    ax.plot(list_of_x_points[i], list_of_x_points[i], "-b" , linewidth = 1, linestyle = 'dashed', label = "Print this" if i == 0 else "")
ax.legend()
plt.show()

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

...