#python #python-3.x #matplotlib
#python #python-3.x #matplotlib
Вопрос:
(Используя Python 3.6.1 на Win10, в virtualenv, в котором в основном просто установлены numpy / pandas / matplotlib, для обработки чисел. У меня не установлен Tkinter, и я предпочел бы оставить его таким.)
У меня есть следующий тестовый код, пытающийся статически отобразить текст MathML:
import matplotlib
matplotlib.use('agg')
import matplotlib.pyplot as plot
def render(mathml):
plot.clf()
plot.rc('font', family='monospace', size=72)
plot.axis('off')
plot.text(0, 0, f'{mathml}')
plot.savefig(f'hax.png')
render('$lorem^{ipsum}
В результате test.png
текст отображается шрифтом по умолчанию (DejaVu без наклонного), а не моноширинным шрифтом:
Явное указание шрифта (например family='Courier New'
) также не имеет никакого эффекта, как и изменение формата вывода. Размер текста изменен правильно, и ошибка или предупреждение не отображаются - на выходе просто не отображается правильный шрифт.
Что здесь происходит? Как я могу это исправить?
Комментарии:
1. У меня не установлен Tkinter, и я предпочел бы сохранить его таким образом ,
tkinter
он уже отделен от стандартной библиотеки Python, поэтому он уже установлен.2. С помощью установщика Windows standard вполне возможно опустить его (вместе с IDLE).
Ответ №1:
Параметры для математических шрифтов указаны в руководстве
DejaVu Sans (по умолчанию), DejaVu Serif, шрифты Computer Modern (из (La) TeX), шрифты STIX (с хорошо сочетаются со временем) или шрифт Unicode, который вы предоставляете
Придерживаясь значения по умолчанию, вы можете получить ощущение "пишущей машинки", используя mathtt
import matplotlib.pyplot as plt
def render(mathml):
plt.clf()
plt.rc('font', size=72)
plt.axis('off')
plt.text(0, 0, f'$\mathtt{{{mathml}}}
Использовать пользовательский набор шрифтов для mathtext можно с помощью параметра mathtext.fontset
rc.
plt.rcParams["mathtext.fontset"] = "custom"
Для нового шрифта courier это может выглядеть так
import matplotlib.pyplot as plt
def render(mathml):
plt.clf()
plt.rc('font', size=72)
plt.rc('mathtext', fontset="custom", tt="Courier New")
plt.axis('off')
plt.text(0, 0, f'$\mathtt{{{mathml}}}
Комментарии:
1. Мне даже не приходило в голову, что может потребоваться отдельный метод для выбора шрифта для текста MathML по сравнению с обычным текстом. Я протестировал исходный код с простой
'lorem ipsum'
строкой, и это сработало. Попробовав этот подход, сначала я получил ошибку, котораяmathtt{
является неизвестным символом. Это вводило в заблуждение - я забыл удалить$
тестовый ввод, поэтому, по-видимому, механизм рендеринга просто увидел$mathtt{$
, что за ним следует мусор. Теперь работает отлично. Спасибо 🙂
)
В результате test.png
текст отображается шрифтом по умолчанию (DejaVu без наклонного), а не моноширинным шрифтом:
Явное указание шрифта (например family='Courier New'
) также не имеет никакого эффекта, как и изменение формата вывода. Размер текста изменен правильно, и ошибка или предупреждение не отображаются - на выходе просто не отображается правильный шрифт.
Что здесь происходит? Как я могу это исправить?
Комментарии:
1. У меня не установлен Tkinter, и я предпочел бы сохранить его таким образом ,
tkinter
он уже отделен от стандартной библиотеки Python, поэтому он уже установлен.2. С помощью установщика Windows standard вполне возможно опустить его (вместе с IDLE).
Ответ №1:
Параметры для математических шрифтов указаны в руководстве
DejaVu Sans (по умолчанию), DejaVu Serif, шрифты Computer Modern (из (La) TeX), шрифты STIX (с хорошо сочетаются со временем) или шрифт Unicode, который вы предоставляете
Придерживаясь значения по умолчанию, вы можете получить ощущение "пишущей машинки", используя mathtt
Использовать пользовательский набор шрифтов для mathtext можно с помощью параметра mathtext.fontset
rc.
Для нового шрифта courier это может выглядеть так
Комментарии:
1. Мне даже не приходило в голову, что может потребоваться отдельный метод для выбора шрифта для текста MathML по сравнению с обычным текстом. Я протестировал исходный код с простой
'lorem ipsum'
строкой, и это сработало. Попробовав этот подход, сначала я получил ошибку, котораяmathtt{
является неизвестным символом. Это вводило в заблуждение - я забыл удалить$
тестовый ввод, поэтому, по-видимому, механизм рендеринга просто увидел$mathtt{$
, что за ним следует мусор. Теперь работает отлично. Спасибо 🙂
)
plt.show()
render('lorem^{ipsum}')
Использовать пользовательский набор шрифтов для mathtext можно с помощью параметра mathtext.fontset
rc.
Для нового шрифта courier это может выглядеть так
Комментарии:
1. Мне даже не приходило в голову, что может потребоваться отдельный метод для выбора шрифта для текста MathML по сравнению с обычным текстом. Я протестировал исходный код с простой
'lorem ipsum'
строкой, и это сработало. Попробовав этот подход, сначала я получил ошибку, котораяmathtt{
является неизвестным символом. Это вводило в заблуждение - я забыл удалить$
тестовый ввод, поэтому, по-видимому, механизм рендеринга просто увидел$mathtt{$
, что за ним следует мусор. Теперь работает отлично. Спасибо 🙂
)
В результате test.png
текст отображается шрифтом по умолчанию (DejaVu без наклонного), а не моноширинным шрифтом:
Явное указание шрифта (например family='Courier New'
) также не имеет никакого эффекта, как и изменение формата вывода. Размер текста изменен правильно, и ошибка или предупреждение не отображаются — на выходе просто не отображается правильный шрифт.
Что здесь происходит? Как я могу это исправить?
Комментарии:
1. У меня не установлен Tkinter, и я предпочел бы сохранить его таким образом ,
tkinter
он уже отделен от стандартной библиотеки Python, поэтому он уже установлен.2. С помощью установщика Windows standard вполне возможно опустить его (вместе с IDLE).
Ответ №1:
Параметры для математических шрифтов указаны в руководстве
DejaVu Sans (по умолчанию), DejaVu Serif, шрифты Computer Modern (из (La) TeX), шрифты STIX (с хорошо сочетаются со временем) или шрифт Unicode, который вы предоставляете
Придерживаясь значения по умолчанию, вы можете получить ощущение «пишущей машинки», используя mathtt
Использовать пользовательский набор шрифтов для mathtext можно с помощью параметра mathtext.fontset
rc.
Для нового шрифта courier это может выглядеть так
Комментарии:
1. Мне даже не приходило в голову, что может потребоваться отдельный метод для выбора шрифта для текста MathML по сравнению с обычным текстом. Я протестировал исходный код с простой
'lorem ipsum'
строкой, и это сработало. Попробовав этот подход, сначала я получил ошибку, котораяmathtt{
является неизвестным символом. Это вводило в заблуждение — я забыл удалить$
тестовый ввод, поэтому, по-видимому, механизм рендеринга просто увидел$mathtt{$
, что за ним следует мусор. Теперь работает отлично. Спасибо 🙂
)
plt.show()
Комментарии:
1. Мне даже не приходило в голову, что может потребоваться отдельный метод для выбора шрифта для текста MathML по сравнению с обычным текстом. Я протестировал исходный код с простой
'lorem ipsum'
строкой, и это сработало. Попробовав этот подход, сначала я получил ошибку, котораяmathtt{
является неизвестным символом. Это вводило в заблуждение — я забыл удалить$
тестовый ввод, поэтому, по-видимому, механизм рендеринга просто увидел$mathtt{$
, что за ним следует мусор. Теперь работает отлично. Спасибо 🙂
)В результате test.png
текст отображается шрифтом по умолчанию (DejaVu без наклонного), а не моноширинным шрифтом:
Явное указание шрифта (например family='Courier New'
) также не имеет никакого эффекта, как и изменение формата вывода. Размер текста изменен правильно, и ошибка или предупреждение не отображаются — на выходе просто не отображается правильный шрифт.
Что здесь происходит? Как я могу это исправить?
Комментарии:
1. У меня не установлен Tkinter, и я предпочел бы сохранить его таким образом ,
tkinter
он уже отделен от стандартной библиотеки Python, поэтому он уже установлен.2. С помощью установщика Windows standard вполне возможно опустить его (вместе с IDLE).
Ответ №1:
Параметры для математических шрифтов указаны в руководстве
DejaVu Sans (по умолчанию), DejaVu Serif, шрифты Computer Modern (из (La) TeX), шрифты STIX (с хорошо сочетаются со временем) или шрифт Unicode, который вы предоставляете
Придерживаясь значения по умолчанию, вы можете получить ощущение «пишущей машинки», используя mathtt
Использовать пользовательский набор шрифтов для mathtext можно с помощью параметра mathtext.fontset
rc.
Для нового шрифта courier это может выглядеть так
Комментарии:
1. Мне даже не приходило в голову, что может потребоваться отдельный метод для выбора шрифта для текста MathML по сравнению с обычным текстом. Я протестировал исходный код с простой
'lorem ipsum'
строкой, и это сработало. Попробовав этот подход, сначала я получил ошибку, котораяmathtt{
является неизвестным символом. Это вводило в заблуждение — я забыл удалить$
тестовый ввод, поэтому, по-видимому, механизм рендеринга просто увидел$mathtt{$
, что за ним следует мусор. Теперь работает отлично. Спасибо 🙂
)
plt.show()
render(‘lorem^{ipsum}’)
Использовать пользовательский набор шрифтов для mathtext можно с помощью параметра mathtext.fontset
rc.
Для нового шрифта courier это может выглядеть так
Комментарии:
1. Мне даже не приходило в голову, что может потребоваться отдельный метод для выбора шрифта для текста MathML по сравнению с обычным текстом. Я протестировал исходный код с простой
'lorem ipsum'
строкой, и это сработало. Попробовав этот подход, сначала я получил ошибку, котораяmathtt{
является неизвестным символом. Это вводило в заблуждение — я забыл удалить$
тестовый ввод, поэтому, по-видимому, механизм рендеринга просто увидел$mathtt{$
, что за ним следует мусор. Теперь работает отлично. Спасибо 🙂
)
В результате test.png
текст отображается шрифтом по умолчанию (DejaVu без наклонного), а не моноширинным шрифтом:
Явное указание шрифта (например family='Courier New'
) также не имеет никакого эффекта, как и изменение формата вывода. Размер текста изменен правильно, и ошибка или предупреждение не отображаются — на выходе просто не отображается правильный шрифт.
Что здесь происходит? Как я могу это исправить?
Комментарии:
1. У меня не установлен Tkinter, и я предпочел бы сохранить его таким образом ,
tkinter
он уже отделен от стандартной библиотеки Python, поэтому он уже установлен.2. С помощью установщика Windows standard вполне возможно опустить его (вместе с IDLE).
Ответ №1:
Параметры для математических шрифтов указаны в руководстве
DejaVu Sans (по умолчанию), DejaVu Serif, шрифты Computer Modern (из (La) TeX), шрифты STIX (с хорошо сочетаются со временем) или шрифт Unicode, который вы предоставляете
Придерживаясь значения по умолчанию, вы можете получить ощущение «пишущей машинки», используя mathtt
Использовать пользовательский набор шрифтов для mathtext можно с помощью параметра mathtext.fontset
rc.
Для нового шрифта courier это может выглядеть так
Комментарии:
1. Мне даже не приходило в голову, что может потребоваться отдельный метод для выбора шрифта для текста MathML по сравнению с обычным текстом. Я протестировал исходный код с простой
'lorem ipsum'
строкой, и это сработало. Попробовав этот подход, сначала я получил ошибку, котораяmathtt{
является неизвестным символом. Это вводило в заблуждение — я забыл удалить$
тестовый ввод, поэтому, по-видимому, механизм рендеринга просто увидел$mathtt{$
, что за ним следует мусор. Теперь работает отлично. Спасибо 🙂