matplotlib fontdict参数应用的坑

背景:

  • win10, anaconda 4.8.3, python 3.8.3,
  • 在matplotlib.pyplot画图时,发现一些字体的属性不起作用

办法

  • 检查windows系统字体文件夹下,各字体文件的style show/hide信息。
  • 有些字体的 font style 只有Regular , 那么即使在程序中更改了fontdict(style='italic"), 也不会有斜体效果,但是程序也不报错。图片见下。
  • 例子程序见图片下方。
  • 在这里插入图片描述
#
#给坐标轴标签加文本框
#bbox 参数, 用help(ax.xlabel)不易查出来
#
import matplotlib.pyplot as plt
import numpy as np

#显示负号
plt.rcParams['axes.unicode_minus']=False

x=np.linspace(0.5, 3.5, 100)
y=np.sin(x)

fig=plt.figure(figsize=(8,8))
ax=fig.add_subplot(111)

face_edge_color='r'

box=dict(facecolor=face_edge_color, pad=2, alpha=0.4, edgecolor=face_edge_color,) #alpha-只作用于fc.

ax.plot(x,y, c='b', ls='--', lw=2)

#set text contents
#title="$y=\sin(x)$"
#前后有 $ 符号时,部分fontdict的属性值无法改变,但也不报错
title="y=sin(x)"
xaxis_label="$x\_axis$"
yaxis_label="$y\_axis$"

ax.set_xlabel(xaxis_label, fontsize=18, bbox=box)
ax.set_ylabel(yaxis_label, fontsize=18, bbox=box)
ax.set_title(title, va="bottom",
                 fontdict=dict(fontsize=16,
                                    color='r',
                                    family='Times New Roman',
                                    weight='light',
                                    style='italic',
                                    ),
                )

ax.yaxis.set_label_coords(-0.08, 0.5) #axes coords
ax.xaxis.set_label_coords(1.0, -0.05) #axes coords

ax.grid(ls='-.', lw=1, color='gray', alpha=0.5)

plt.show()

猜你喜欢

转载自blog.csdn.net/seeker3/article/details/108402285
今日推荐