Как изменить шрифт в $$, который находится в математической форме в Python - PullRequest
0 голосов
/ 08 декабря 2018

Когда я попытался опрашивать фигуру с помощью matplotlib, я написал метку оси x с текстом и «математическим текстом».Поскольку я должен написать химическую формулу на этикетке, она была написана как «$ CO_2 $ Концентрация».Вопрос в том, что я надеюсь, что шрифт должен быть раз новым римским, но я не могу как-то изменить шрифт в знаке доллара.Есть кто-нибудь, кто может помочь мне это исправить?Большое спасибо!

import numpy as np 
import matplotlib.pyplot as plt
import pandas as pd

xf1 = pd.read_excel('1812_GPT.xlsx',sheetname= 'PVD_CO2CH4_600',usecols=[1])
deltapx1 = pd.read_excel('1812_GPT.xlsx',sheetname= 'PVD_CO2CH4_600',usecols=[3])
Px1 = pd.read_excel('1812_GPT.xlsx',sheetname= 'PVD_CO2CH4_600',usecols=[5])

ax1 = plt.subplot(111) 

l1, = ax1.plot(xf1,Px1,'s',markerfacecolor='black')

font1 = {'family' : 'Times New Roman',
'weight' : 'normal',
'size'   : 14,
 }

ax1.set_xlabel(r'$CO_2$ pressure', font1)
ax1.set_ylabel(r'$CO_2$ concentration', font1)

plt.show()

Это ссылка на изображение, вы можете увидеть картинку и обнаружить, что "CO2" не в Times New Roman.https://flic.kr/p/2dmh8pj

Ответы [ 2 ]

0 голосов
/ 08 декабря 2018

Я не думаю, что легко можно изменить любой математический текст на произвольный шрифт.Однако, в случае "CO_2", который состоит только из обычных символов , вы можете использовать \mathdefault{}, чтобы заставить математический текст использовать символы из обычного шрифта.

import matplotlib.pyplot as plt

plt.rcParams["font.family"] = "serif"
plt.rcParams["font.serif"] = ["Times New Roman"] + plt.rcParams["font.serif"]

fig, ax = plt.subplots()

ax.set_xlabel(r'$\mathdefault{CO_2}$ pressure')
ax.set_ylabel(r'$\mathdefault{CO_2}$ concentration')

plt.show()

enter image description here

Что-то вроде r"$\mathdefault{\sum_\alpha^\beta\frac{i}{9}}$ будет по-прежнему отображаться в обычном математическом наборе шрифтов по умолчанию (за исключением "i" и 9, которые, конечно, присутствуют в Times New Roman).

enter image description here

Для общего случая вы также можете изменить полный набор математических шрифтов на любой из доступных, cm, stix, stixsans, dejavuserif, dejavusans.Наиболее близким к «Times New Roman» будет stix.

import matplotlib.pyplot as plt

rc = {"font.family" : "serif", 
      "mathtext.fontset" : "stix"}
plt.rcParams.update(rc)
plt.rcParams["font.serif"] = ["Times New Roman"] + plt.rcParams["font.serif"]


fig, ax = plt.subplots()

ax.set_xlabel(r'$CO_2$ pressure')
ax.set_ylabel(r'$CO_2$ concentration')

plt.show()

enter image description here

Общая рекомендация по чтению будет MathTextучебник .

0 голосов
/ 08 декабря 2018

Я считаю, что лучше определить все семейство шрифтов сразу, а не независимо (при условии, что вы хотите использовать один и тот же шрифт).Дайте этому попытку

plt.rc('text', usetex=True )
plt.rc('font', family='Times New Roman', weight='normal', size=14)
plt.rcParams['mathtext.fontset'] = 'Times New Roman'
ax1.set_xlabel('$CO_2$ pressure')
ax1.set_ylabel('$CO_2$ concentration')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...