Построить график нескольких процессов в Python

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

x_axis_data1 = [1,2,3,4,5,6,7,8]
x_axis_data2 = [1,2,3,4,5,6,7,8]
x_axis_data3 = [1,2,3,4,5,6,7,8]

alive_for_time = 6
sleep_for_time = 2

plt.plot(x_axis_data1, "process1", dashes = [alive_for_time,  
sleep_for_time])
plt.plot(x_axis_data2, "process2", dashes = [alive_for_time, 
sleep_for_time])
plt.plot(x_axis_data3, "process3", dashes = [alive_for_time, 
sleep_for_time])


plt.show()

Я не уверен, как построить против строки в pyplot. Теперь у меня есть эта ошибка:

ValueError: Illegal format string "process1"; two marker symbols   

1 ответ

Решение

Вы должны использовать label ключевое слово и legend() функция.

Некоторые комментарии:

  • label ключевое слово, которое описывает, какая строка появится, когда в конце вы вызываете legend() функция.
  • Черточки не очень хороший способ представить то, что вы хотите, поскольку они находятся в "единицах графика" (пикселях), и вам, скорее всего, нужны "единицы данных" (время). Попробуйте увеличить график, и вы увидите, что штрихи не увеличиваются соответственно.
импортировать matplotlib.pyplot как plt

x_axis_data1 = [1,2,3,4,5,6,7,8]
x_axis_data2 = [1,2,3,4,5,6,7,8]
x_axis_data3 = [1,2,3,4,5,6,7,8]

alive_for_time = 6
sleep_for_time = 2

plt.plot(x_axis_data1, [1] * len(x_axis_data1), тире = [alive_for_time,
sleep_for_time], label="process1")

plt.plot(x_axis_data2, [2] * len(x_axis_data2), тире = [alive_for_time, 
sleep_for_time], label="process2")

plt.plot(x_axis_data2, [3] * len(x_axis_data3), тире = [alive_for_time, 
sleep_for_time], label="process3")

plt.legend()


plt.show()

Другие вопросы по тегам