使用 python (3.12.4) 使用此代码为条形图生成 pgf 输出
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
plt.rc('font',**{'family':'serif','serif':['Palatino'], 'size': 20})
plt.rc('text', usetex=True)
fig, ax = plt.subplots()
df = pd.DataFrame({'a':[1,3,4,2], 'b':[1,2,3,4]})
df.plot.bar(x='a', y='b', ax=ax)
plt.xticks(rotation=0)
plt.savefig(f'out.pgf',bbox_inches='tight')
并用 pdflatex 编译它(pdflatex --version pdfTeX 3.141592653-2.6-1.40.26)
\documentclass{standalone}
\usepackage{palatino}
\usepackage{tikz}
\usepackage{amsmath}
\def\mathdefault#1{#1}
\begin{document}
\input{out.pgf}
\end{document}
在 x 和 y 刻度标签上产生不同的字体类型:
我希望有相同的字体类型。这是一个错误,还是有解决方法?
好的,手动将
\mathdefault{}
引入到 x 轴上的每个标签至少会产生所需的输出。
甚至可能存在比这更难读的退出代码片段(甚至可能没有):
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
plt.rc('font',**{'family':'serif','serif':['Palatino'], 'size': 20})
plt.rc('text', usetex=True)
fig, ax = plt.subplots()
df = pd.DataFrame({'a':[1,3,4,2], 'b':[1,2,3,4]})
df.plot.bar(x='a', y='b', ax=ax)
plt.xticks(rotation=0)
labels=ax.get_xticklabels()
for i,_ in enumerate(labels):
labels[i].set_text(f'$\\mathdefault{{{labels[i].get_text()}}}$')
ax.set_xticklabels(labels)
plt.savefig(f'out.pgf',bbox_inches='tight')