как выровнять метку оси вправо

По умолчанию matplotlib отображает метку оси в центре оси. Я хотел бы переместить метку таким образом, чтобы она была выровнена с концом оси, как для горизонтальной, так и для вертикальной оси. Например, для горизонтальной оси я хотел бы видеть:

+--------------------+
|                    |
|                    |
|                    |
|                    |
|                    |
+--------------------+
                 label

Можно ли сделать это с глобальной настройкой matplotlib?

Ответы на вопрос(2)

которое вводит магическую ценность25 что я не очень понимаю, мягко говоря,

plt.xlabel('pollo', horizontalalignment='right', position=(1,25))

Более разумный подход заключается в использовании того, чтоy позиционироватьaxes.xaxis выбрал ... С этой идеей вменяемая процедура обычно

получить объект, используя.get_object(...) метод родительского контейнераизменить объектобновить родителя, используя его.set_object(...) метод

В нашем случае мы строим график, затем получаем текущую осьax который содержитxaxis который содержитlabel чью позицию и выравнивание мы хотим изменить.

...
plt.xlabel('...')
...
ax = plt.gca()
label = ax.xaxis.get_label()
x_lab_pos, y_lab_pos = label.get_position()
label.set_position([1.0, y_lab_pos])
label.set_horizontalalignment('right')
ax.xaxis.set_label(label)
...
plt.show()

С уважением действовать непосредственно наmatplotlibпо умолчанию, я пролисталаplt.rcParams структура данных, но я не нашел ничего полезного. Конечно, это не значит, что это невозможно, просто я не вижу жизнеспособного решения.

 Ruggero Turra04 июл. 2016 г., 17:01
Мне интересно, если это возможно сделать через глобальные настройки Matplotlib
Решение Вопроса

Хорошо, я оставлю в покое мой другой ответ (1), но это хороший

...
plt.xlabel('x_description', horizontalalignment='right', x=1.0)
plt.ylabel('y_description', horizontalalignment='right', y=1.0)
...

как видите, больше нет магических чисел, и работает как дляxlabel а такжеylabel.

Обратите внимание, что в обоих случаях мы собираемся изменить горизонтальное выравнивание по причинам, которые в конечном итоге были мне ясны, когда я впервые изменил вертикальное выравнивание вylabel...

(1) потому что идея получить объект, модифицировать этот объект и вернуть его обратно - хорошая идея сама по себе, не так ли?

 anatol11 июл. 2017 г., 11:39
Невозможно редактировать, так как не более 6 символов, должно бытьplt.xlabel('x description', horizontalalignment='right', x=1.0)
 gboffi11 июл. 2017 г., 12:33
@anatol exchangehorizontalalignment а такжеx/y (в обоих утверждениях, пожалуйста) - это более 6 символов ... и спасибо, что поймали мою ошибку!

Ваш ответ на вопрос