Как построить список, элементами которого являются None или элементы, содержащие квадратную скобку (список в списке) в Matplotlib - PullRequest
0 голосов
/ 03 мая 2020

У меня есть список, который выглядит следующим образом:

a = [None, None, None, None, None, [0.0016], [0.0015], [0.0014], [0.0014], [0.0013], None, None, None]

Проблема в том, что когда я хочу построить этот список, он возвращает ошибку:

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

ValueError : установка элемента массива с последовательностью.

На самом деле я хочу, чтобы эти значения None игнорировались и выглядели как пустые места.

В качестве примера использования функции sin в качестве массив, мой желаемый вывод с пустыми пробелами будет что-то вроде: пример

Ответы [ 2 ]

0 голосов
/ 05 мая 2020

Вы можете изменить каждое Нет на 0 следующим образом:

import matplotlib.pyplot as plt

a = [None, None, None, None, None, [0.0016], [0.0015], [0.0014], [0.0014], [0.0013], None, None, None]

plt.plot([x[0] if not x is None else 0 for x in a])
plt.show()
0 голосов
/ 03 мая 2020

Сначала вам нужно преобразовать элементы, что вы можете сделать, используя короткую функцию и понимание списка. Чтобы обеспечить построение значений None, вам также необходимо установить xlim графика, чтобы ось x переместилась от 0 к длине списка. (Вы неявно выводите значения на оси Y против индексов списка на оси X.)

def transform(item):
    if item is None:
        return None
    else:
        return item[0]

a = [transform(item) for item in a]
plt.xlim(0, len(a))
plt.plot(a)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...