Установка положения позвоночника на участке - PullRequest
1 голос
/ 05 мая 2019

Я хочу изменить местоположение осей осей графика matplotlib (например, «влево») на конкретное значение данных. Я знаю, что я могу использовать matplotlib.spines.set_position () для этой цели, и на линейном графике это работает нормально. Однако на логарифмическом (или полулогарифмическом) графике ось по какой-то причине не отображается. Следующий код и скриншот демонстрируют проблему: демонстрационная позиция позвоночника на бревенчатом участке

# test axis location on log plot
from matplotlib import pyplot as plt

figure = plt.figure()
axes = figure.add_subplot(121)
handle, = axes.plot([0.2, 1], [1, 2], 'ro')
axes.xaxis.set_label_text('X')
axes.yaxis.set_label_text('Y')
axes.set_xscale('log')
axes.set_xlim(0.02, 2)
axes.spines['left'].set_position(('data', 0.1))
axes.spines['left'].set_linewidth(3)
axes.set_title('log')

axes2 = figure.add_subplot(122)
handle2, = axes2.plot([0.2, 1], [1, 2], 'ro')
axes2.xaxis.set_label_text('X')
axes2.yaxis.set_label_text('Y')
axes2.set_xlim(0, 2)
axes2.spines['left'].set_position(('data', 0.5))
axes2.spines['left'].set_linewidth(3)
axes2.set_title('linear')

plt.show()

На левом полулогарифмическом графике «левый» позвоночник больше не отображается вообще, тогда как он отображается в правильном месте на правом линейном графике. В качестве обходного пути я могу преобразовать координаты данных в координаты осей и затем использовать set_position (('axes', xxx )), где xxx относится к преобразованной координате. Однако, чтобы обеспечить динамическое масштабирование и изменение масштаба графика, я бы предпочел установить для позвоночника конкретное значение данных, а не значение оси.

Я использую matplotlib v 3.0.2 и Python 3.6 на платформе Windows. Этот вопрос, кажется, связан (но отличается от): Положения шипов в матплотлибе Установка шипов в матплотлибрх

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...