Просто для того, чтобы четко указать что-то явно:
Основной поток - это в основном поток пользовательского интерфейса.
Так что, говоря, что вы не можете выполнять сетевые операции в основном потоке, вы не можете создавать сети операции в потоке пользовательского интерфейса, что означает , вы не можете выполнять сетевые операции в блоке *runOnUiThread(new Runnable() { ... }*
внутри некоторого другого потока.
(у меня был только длинный момент царапин на голове пытаясь понять, почему я получал эту ошибку где-то, кроме моего основного потока. Вот почему, этот поток помог, и, надеюсь, этот комментарий поможет кому-то другому.)
plt.plot
возвращает список объектов Line2D
, нанесенных на график, даже если вы построили только одну строку.
Эта запятая распаковывает одно значение в line
.
ex
a, b = [1, 2]
a, = [1, ]
Возвращаемое значение функции является кортежем или списком, содержащим один элемент, и этот синтаксис «распаковывает» значение из кортежа / списка в простую переменную.
Метод plot
возвращает объекты, содержащие информацию о каждой строке в графике в виде списка. В python вы можете развернуть элементы списка с запятой. Например, если вы построили две строки, вы должны сделать:
line1, line2 = plt.plot(x,y,'-',x,z,':')
Где line1
будет соответствовать x,y
, а строка2 соответствует x,z
. В вашем примере есть только одна строка, поэтому вам нужна запятая, чтобы сообщить ей о расширении списка из 1 элемента. То, что у вас есть, эквивалентно
line = plt.plot(x,y,'-')[0]
или
line = ply.plot(x,y,'-')
line = line[0]
Ваш код должен работать, если вы опустите запятую, только потому, что вы не используете line
. В вашем простом примере plt.plot(x,y,'-')
будет достаточно.