Ответ 1
Вам нужно будет написать код для этого, но вам не нужно заранее знать какие-либо данные. Другими словами, xx
может измениться, и это все равно будет работать, как вы ожидаете (я думаю).
В принципе, вам нужны метки x-tick, которые у вас есть, но вам не нравятся ограничения. Поэтому напишите код на
- сохранить тики,
- отрегулируйте пределы и
- Восстановить старые тики.
from matplotlib import pyplot as plt
import numpy as np
xx = np.arange(10)
np.random.seed(101)
yy = np.random.random( 10 )
plt.plot(xx, yy, 'o' )
xticks, xticklabels = plt.xticks()
# shift half a step to the left
# x0 - (x1 - x0) / 2 = (3 * x0 - x1) / 2
xmin = (3*xticks[0] - xticks[1])/2.
# shaft half a step to the right
xmax = (3*xticks[-1] - xticks[-2])/2.
plt.xlim(xmin, xmax)
plt.xticks(xticks)
plt.show()
Это приводит к следующему рисунку:
Как вы можете видеть, у вас есть одна и та же проблема для значений y, которые вы можете исправить, следуя той же процедуре.
Другой вариант - отключить обрезку строки, используя ключевое слово clip_on
: plt.plot(xx, yy, 'o', clip_on=False)
:
Теперь круги правы на краю, но они не обрезаются и не проходят через рамку осей.