Matplotlib pyplot ParasiteAxes не разрешает форматирование метки x

Следующее может независимо установить цвет, шрифт и размер шрифта для левой и правой оси Y, но не может установить шрифт или размер шрифта для оси X. Он может установить цвет оси x. Я использую ParasiteAxes, поскольку они позволяют мне изменять форматирование графика другими способами при работе с matplotlib.animation. Цель состоит в том, чтобы иметь возможность устанавливать шрифт, размер шрифта и цвет по-разному для каждой из меток оси, и они не должны зависеть от меток (по крайней мере, от размера). `

from mpl_toolkits.axisartist.parasite_axes import HostAxes, ParasiteAxes
import matplotlib.pyplot as plt

plt.rcParams.update({'font.size': 16})
plt.rcParams.update({'font.weight': 'normal'})
plt.rcParams.update({'font.family': 'times new roman'})

x = [0, 1, 2]
y1 = [0, 1, 2]
y2 = [1, 2, 3]

fig = plt.figure(figsize=(8, 4.5))

host = fig.add_axes([0.10, 0.1, 0.60, 0.85], axes_class=HostAxes)
host.set_xlim(0, 2)
host.axis["right"].set_visible(False)
host.axis["left"].set_visible(False)

host.set_xlabel('X Axis', fontsize=24, fontfamily='courier new', color='tab:green')

y1_color = 'tab:red'
y1_axis = ParasiteAxes(host, sharex=host)
host.parasites.append(y1_axis)
y1_axis.axis['y1'] = y1_axis.new_fixed_axis(loc='left', offset=(0, 0))
y1_axis.set_ylim(0, 4)
y1_axis.set_ylabel('Y1 Axis')
y1_axis.axis['y1'].label.set(fontsize=12, color=y1_color, fontfamily='courier new')
y1_line, = y1_axis.plot([], [], lw=2, color=y1_color)
y1_line.set_data(x, y1)

y2_color = 'tab:blue'
y2_axis = ParasiteAxes(host, sharex=host)
host.parasites.append(y2_axis)
y2_axis.axis['y2'] = y2_axis.new_fixed_axis(loc='right', offset=(0, 0))
y2_axis.set_ylim(0, 4)
y2_axis.set_ylabel('y2 Axis')
y2_axis.axis['y2'].label.set(fontsize=24, color=y2_color, fontfamily='arial')
y2_line, = y2_axis.plot([], [], lw=2, color=y2_color)
y2_line.set_data(x, y2)

plt.show()

`

Вот получившийся сюжет:

Я ожидал, что метка оси X в приведенном выше коде будет зеленой, 24 пункта Courier New, но на графике она отображается зеленым шрифтом Times New Roman, 16 пунктов (взято из rcParams, за исключением цвета. Если rcParams изменены затем изменяются метки, которые я хочу оставить независимыми от метки оси X. Я был бы признателен за решение, а также за объяснение того, почему объекты с двумя осями ведут себя по-разному.

Мне не понятна цель вашего отзыва. Вы просите меня изменить пример на другой шрифт, предоставляя отзыв для обучения, или считаете, что отсутствие встроенной поддержки шрифта является частью проблемы? В приведенном примере шрифт courier_new в моей системе работает, и в результате метка «Ось Y1» отображается как закодированная, но не для оси X. Если я изменю шрифт с «courier new» на «fantasy», основная проблема останется.

gordonC 18.11.2022 19:23
14 Задание: Типы данных и структуры данных Python для DevOps
14 Задание: Типы данных и структуры данных Python для DevOps
проверить тип данных используемой переменной, мы можем просто написать: your_variable=100
Python PyPDF2 - запись метаданных PDF
Python PyPDF2 - запись метаданных PDF
Python скрипт, который будет записывать метаданные в PDF файл, для этого мы будем использовать PDF ридер из библиотеки PyPDF2 . PyPDF2 - это...
Переменные, типы данных и операторы в Python
Переменные, типы данных и операторы в Python
В Python переменные используются как место для хранения значений. Пример переменной формы:
Почему Python - идеальный выбор для проекта AI и ML
Почему Python - идеальный выбор для проекта AI и ML
Блог, которым поделился Harikrishna Kundariya в нашем сообществе Developer Nation Community.
Как автоматически добавлять котировки в заголовки запросов с помощью PyCharm
Как автоматически добавлять котировки в заголовки запросов с помощью PyCharm
Как автоматически добавлять котировки в заголовки запросов с помощью PyCharm
Анализ продукта магазина на Tokopedia
Анализ продукта магазина на Tokopedia
Tokopedia - это место, где продавцы могут продавать свои товары. Товар должен быть размещен на витрине, чтобы покупателям было легче найти товар...
3
1
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я не могу сказать, почему способ, которым вы в настоящее время настраиваете свойства xlabel, не работает, но похоже, что вы используете

host.set_xlabel('X Axis')
host.axis["bottom"].label.set(fontsize=24, fontfamily='courier new', color='tab:green')

вместо host.set_xlabel('X Axis', fontsize=24, fontfamily='courier new', color='tab:green') решает это с помощью matplotlib 3.6.2.

Спасибо, это решает мою проблему. К сожалению, существует несколько API, которые имеют одну и ту же функцию, но различаются и не задокументированы. Если кто-то знает о документации, описывающей API, который я предоставил в примере, было бы неплохо иметь указатель для справки.

gordonC 21.11.2022 18:47

Другие вопросы по теме