Arhn - архитектура программирования

Проблема с фигурой Python при настройке matplotlib.rcParams['text.usetex'] = True для использования LaTeX в метках И использовании немецкой локали для использования запятой

Я хочу создать цифры, в которых метки x и y отображают свои числовые значения, правильно отформатированные для немецкого языка, т. Е. Используя запятую в качестве десятичного разделителя. Я также хочу использовать элементы LaTeX, например. в метке оси x или y или легенде графика. Следующий код показывает, что первая фигура создана по желанию для англоязычной версии.

# -*- coding: utf-8 -*-
import numpy as np
import matplotlib
import matplotlib.pyplot as plt

import locale

#  Set to German locale to get comma decimal separater
locale.setlocale(locale.LC_NUMERIC, "deu_deu")

# Use LaTeX elements
matplotlib.rcParams['text.usetex'] = True

t = np.linspace(0.0, 1.0, 100)
s = t*np.cos(4 * np.pi * t) + 2

fig, ax = plt.subplots(figsize=(6, 4))
ax.plot(t, s)

ax.set_xlabel(r'Time $t$ with $t \le 1$')
ax.set_ylabel('Velocity $v(t)$')

plt.show()

fig.savefig("Mein_Test1.pdf")


fig2, ax2 = plt.subplots(figsize=(6, 4))
ax2.plot(t, s)

ax2.set_xlabel(r'Time $t$ with $t \le 1$')
ax2.set_ylabel('Velocity $v(t)$')

plt.ticklabel_format(useLocale=True)

plt.show()

fig2.savefig("Mein_Test2.pdf")

Первая цифра выглядит так, как хотелось бы, с красивыми английскими точками в качестве десятичных разделителей и хорошим интервалом в метках осей. , и я могу использовать символ LaTeX "\le" в метке оси x:

Тем не менее, на втором рисунке показан некрасивый интервал в числах меток осей со слишком большим пространством позади десятичный разделитель:

Если я не использую "matplotlib.rcParams['text.usetex'] = True", то у меня не может быть элементов LaTeX в метке, т. е. нет символа "\le", но тогда интервал правильный даже для немецких запятых. Таким образом, здесь, похоже, есть некоторый конфликт между немецкой локалью и «text.usetex». Любые идеи, чтобы получить оба права? Спасибо!


Ответы:


1

В конце концов я нашел способ добиться желаемого результата, посмотрев ответ на этот вопрос, используя также лямбда-функцию. Вот код:

# -*- coding: utf-8 -*-
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

import locale

# Set to German locale to get comma decimal separater
locale.setlocale(locale.LC_NUMERIC, "deu_deu")

# Use LaTeX elements
mpl.rcParams['text.usetex'] = True

t = np.linspace(0.0, 1.0, 100)
s = t*np.cos(4 * np.pi * t) + 2

fig2, ax2 = plt.subplots(figsize=(6, 4))

ax2.ticklabel_format(useLocale=True)

ax2.plot(t, s)

ax2.set_xlabel(r'Time $t$ with $t \le 1$')
ax2.set_ylabel('Velocity $v(t)$')

plt.ticklabel_format(useLocale=True)


ax2.get_yaxis().set_major_formatter(mpl.ticker.FuncFormatter(lambda x, loc: locale.format_string('%1.3f', x, 1)))
ax2.get_xaxis().set_major_formatter(mpl.ticker.FuncFormatter(lambda x, loc: locale.format_string('%0.2f', x, 2)))

plt.show()

fig2.savefig("Mein_Test2.png")

Теперь я получаю желаемый результат:

23.02.2020
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..