Подпись звонка plot
абсолютно сумасшедшая. Это связано с тем, что оно со временем выросло и является одной из наиболее часто используемых функций, поэтому всегда поддерживается обратной совместимостью.
В документации указаны следующие способы вызова этой функции.
plot([x], y, [fmt], data=None, **kwargs)
plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)
Аргументы в квадратных скобках являются необязательными, а эллипсы обозначают произвольное число следующих передаваемых аргументов.
Рассматривая приведенные выше случаи и переименовывая соответствующие аргументы:
1
plt.plot([-1,-1], [-1,1], 'k')
plt.plot( x , y , fmt)
Как и ожидалось, 'k'
- это формат, который будет использоваться.
2
plt.plot([0,0],[-1,1], False)
plt.plot( x , y , y2 )
Здесь False
не является допустимой строкой формата. Следовательно, это интерпретируется как данные для новой строки. Поскольку нет другого следующего аргумента, который можно интерпретировать, он не может быть x2
, следовательно, он должен быть y2
. False
эквивалентно 0
. Таким образом, вы получите одну точку в точке (0,0), которую вы не видите на графике, потому что маркер не указан. Если бы вы использовали
plt.plot([0,0],[-1,1], False, "o")
вместо этого вы увидите оранжевую точку.

3.
То же, что и выше. Единственное отличие состоит в том, что вы получаете линию другого цвета в соответствии с используемым цветовым циклом (см. Ниже в этом ответе).
4.
plt.plot([2,2],[-1,1], (0,0.75,0))
plt.plot( x , y , y2 )
Опять же, третий аргумент не является допустимой строкой формата. Это снова интерпретируется как значения y следующей строки. На этот раз, в отличие от 2. и 3., y2
содержит несколько координат. Поэтому линия вдоль точек (0,0), (1,0.75), (2,0)
проведена.

Во всех случаях, кроме первого, цвет не указан. В этом случае в соответствии с документами
По умолчанию каждой строке присваивается свой стиль, указанный в «цикле стилей». Параметры свойств fmt и line необходимы только в том случае, если вы хотите явно отклониться от этих значений по умолчанию. Кроме того, вы также можете изменить цикл стиля, используя 'axes.prop_cycle' rcParam.
Поскольку в цикле свойств по умолчанию содержится только цвет, вы получите везде одинаковый стиль линий, но другого цвета.
Вы можете распечатать цикл по умолчанию
print(plt.rcParams["axes.prop_cycle"])
# cycler('color', ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b',
# '#e377c2', '#7f7f7f', '#bcbd22', '#17becf'])
Или вы можете установить его
plt.rcParams["axes.prop_cycle"] = plt.cycler("color", ["red", "#001eff", (0, 0.75, 0)])
Пример доступен на странице matplotlib: Стилизация с помощью cycler , а также Цвета в цикле свойств по умолчанию
cycler
также имеет свою собственную страницу документации, https://matplotlib.org/cycler/, поскольку она может в равной степени использоваться для других целей, кроме matplotlib.
Возвращаясь к началу вопроса; для того чтобы все линии были одинакового цвета, можно установить цветовой цикл на один цвет
plt.rcParams["axes.prop_cycle"] = plt.cycler("color", ["k"])
В этом случае все линии на осях будут выглядеть черными.