Как управлять глобальными структурами в c [duplicate]

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

from matplotlib import lines

fig, ax = plt.subplots()

plt.plot([0, 5], [1, 1], label='y=1')
plt.plot([0, 5], [2, 2], label='y=2')
plt.plot([0, 5], [3, 3], label='y=3')

handles, _  = ax.get_legend_handles_labels()

vertical_pos = [5, 7, 10]
colors = ['r', 'g', 'b']

for x, c in zip(vertical_pos, colors):
    plt.plot([x, x], [0, 3], color=c, label='Vertical x=%s' %x)

_, labels = ax.get_legend_handles_labels()

for c in colors:
    vertical_line = lines.Line2D([], [],  marker='|', linestyle='None', color=c,
                          markersize=10, markeredgewidth=1.5)
    handles.append(vertical_line)

plt.legend(handles, labels)

РЕДАКТИРОВАТЬ (используя axvline вместо plot)

for x, c in zip(vertical_pos, colors):
    ax_ = plt.axvline( x=x, linestyle='-', color=c, label='Vertical x=%s' %x)

_, labels = ax.get_legend_handles_labels()

for c in colors:
    vertical_line = lines.Line2D([], [],  marker='|', linestyle='None', color=c,
                          markersize=10, markeredgewidth=1.5)
    handles.append(vertical_line)

plt.legend(handles, labels)

[115 ] enter image description here

0
задан 20.01.2019, 07:26

1 ответ

Не помещайте никакой код в файлы .h.

.h файлы предназначены для объявлений данных, объявлений внешних переменных и объявлений функций.

.c файлы являются правильным местом для определения переменных и функций.

Переместите весь код из файлов .h в файлы .c

Также добавьте защиту файлов .h. Это просто определение. Если это определение уже определено - это означает, что этот файл уже был включен и его содержимое должно быть пропущено

#ifdef MYGUARD_H
#define MYGUARD_H

/* .h file content

#endif
0
ответ дан 07.04.2019, 12:08
  • 1
    @tmfmnk, Что короткий и чистый код теперь:-) – R Yoda 26.01.2019, 20:39

Теги

Похожие вопросы