Конечный результат, которого я пытаюсь достичь, - это иметь "более толстую" черную границу вокруг моего графика вдоль xmin, xmax, ymin и & max.Я пробовал несколько разных вещей (например, просто нарисовал прямоугольник на графике, см. Ниже), но я не смог достичь желаемых результатов по нескольким причинам.
Потому что я не могу простоиспользуйте колючки (я установил 2 из них, чтобы всегда быть в 0), мне нужно добавить какую-то другую линию или прямоугольник, чтобы создать желаемую границу.
По умолчанию метки первого и последнего тика нависают над осями,Я «преодолел» это, изменив горизонтальное или вертикальное выравнивание, но они все еще могли бы использовать некоторые дополнительные отступы.Я знаю, что это возможно, но требует преобразования и немного неуклюже.
Теперь я хотел бы удалить первую и последнюю отметки на обеих осях.Это связано с тем, что при рисовании прямоугольника он всегда находится внутри области графика, но первый и последний отметки всегда находятся вне его, независимо от толщины прямоугольника.Увеличение толщины прямоугольника приводит только к тому, что он перекрывает первую и последнюю метку тика, а фактическая метка остается за пределами прямоугольника.
Любые другие предложения о том, как добиться такого рода границы, при этом всегда сохраняя ось на0, 0 будет приветствоваться.Это общий желаемый результат.
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
from matplotlib.patches import Rectangle
X = np.random.randint(low=-9, high=9, size=10)
Y = np.random.randint(low=-9, high=9, size=10)
fig, ax = plt.subplots()
ax.axis([-10, 10, -10, 10])
ax.spines['left'].set_position('zero')
ax.spines['bottom'].set_position('zero')
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
plt.setp(ax.xaxis.get_majorticklabels()[0], ha='left')
plt.setp(ax.xaxis.get_majorticklabels()[-1], ha='right')
plt.setp(ax.yaxis.get_majorticklabels()[0], va='bottom')
plt.setp(ax.yaxis.get_majorticklabels()[-1], va='top')
patPlotBorder = ax.add_artist(Rectangle((-10, -10), 20, 20, fill=False, color='k', linewidth=2))
ax.grid(True)
fig.set_tight_layout(True)
ax.scatter(X, Y, c="b", marker="o", s=40)
plt.show()
