Оси Matplotlib имеют функции axhline
и axvline
для рисования горизонтальных или вертикальных линий при заданной координате y или x (соответственно) независимо от шкалы данных осей.
Есть ли аналогичная функция для построения постоянной диагонали? Например, если у меня есть диаграмма рассеяния переменных с подобным доменом, часто бывает полезно знать, попадают ли они выше или ниже строки y = x
:
mean, cov = [0, 0], [(1, .6), (.6, 1)]
x, y = np.random.multivariate_normal(mean, cov, 100).T
y += x + 1
f, ax = plt.subplots(figsize=(6, 6))
ax.scatter(x, y, c=".3")
ax.plot([-3, 3], [-3, 3], ls="--", c=".3")
ax.set(xlim=(-3, 3), ylim=(-3, 3))
Конечно, это можно сделать программно, захватив ограничения по оси, (ax.get_xlim()
и т.д.), но что a) делает несколько дополнительных шагов и b) является хрупким в случаях, когда больше данных может оказаться на графике и сдвиг пределов. (На самом деле в некоторых случаях просто добавление самой постоянной линии растягивает оси).
Было бы предпочтительнее просто, например, ax.axdline(ls="--", c=".3")
, но неясно, существует ли что-то подобное в кодовой базе matplotlib. Все, что вам нужно сделать, это изменить код axhline
на график из [0, 1]
в координатах осей для x
и y
, я думаю.