Observação
Clique aqui para baixar o código de exemplo completo
Propriedades de texto e layout #
Controlando propriedades de texto e seu layout com Matplotlib.
matplotlib.text.Text
instâncias têm uma variedade de propriedades que podem ser configuradas por meio de argumentos de palavra-chave para set_title
, set_xlabel
,
text
, etc.
Propriedade |
Tipo de valor |
---|---|
alfa |
|
cor de fundo |
qualquer cor matplotlib |
bbox |
|
clip_box |
uma instância matplotlib.transform.Bbox |
grampear |
bool |
clip_path |
|
cor |
qualquer cor matplotlib |
família |
[ |
propriedades da fonte |
|
alinhamento horizontal ou ha |
[ |
etiqueta |
qualquer string |
espaçamento entre linhas |
|
multialinhamento |
[ |
nome ou nome da fonte |
string por exemplo, [ |
selecionador |
[Nenhum|float|bool|callable] |
posição |
(x,y) |
rotação |
[ ângulo em graus | |
tamanho ou tamanho da fonte |
[ tamanho em pontos | tamanho relativo, por exemplo, |
estilo ou estilo de fonte |
[ |
texto |
string ou qualquer coisa imprimível com conversão '%s' |
transformar |
|
variante |
[ |
alinhamento vertical ou va |
[ |
visível |
bool |
peso ou peso da fonte |
[ |
x |
|
y |
|
zorder |
qualquer número |
Você pode dispor o texto com os argumentos
horizontalalignment
de alinhamento verticalalignment
, e
multialignment
. horizontalalignment
controla se o argumento posicional x para o texto indica o lado esquerdo, central ou direito da caixa delimitadora de texto. verticalalignment
controla se o argumento posicional y para o texto indica a parte inferior, central ou superior da caixa delimitadora de texto. multialignment
, apenas para strings separadas por nova linha, controla se as diferentes linhas são justificadas à esquerda, ao centro ou à direita. Aqui está um exemplo que usa o
text()
comando para mostrar as várias possibilidades de alinhamento. O uso de transform=ax.transAxes
ao longo do código indica que as coordenadas são dadas em relação à caixa delimitadora dos eixos, sendo (0, 0) o canto inferior esquerdo dos eixos e (1, 1) o canto superior direito.
import matplotlib.pyplot as plt
import matplotlib.patches as patches
# build a rectangle in axes coords
left, width = .25, .5
bottom, height = .25, .5
right = left + width
top = bottom + height
fig = plt.figure()
ax = fig.add_axes([0, 0, 1, 1])
# axes coordinates: (0, 0) is bottom left and (1, 1) is upper right
p = patches.Rectangle(
(left, bottom), width, height,
fill=False, transform=ax.transAxes, clip_on=False
)
ax.add_patch(p)
ax.text(left, bottom, 'left top',
horizontalalignment='left',
verticalalignment='top',
transform=ax.transAxes)
ax.text(left, bottom, 'left bottom',
horizontalalignment='left',
verticalalignment='bottom',
transform=ax.transAxes)
ax.text(right, top, 'right bottom',
horizontalalignment='right',
verticalalignment='bottom',
transform=ax.transAxes)
ax.text(right, top, 'right top',
horizontalalignment='right',
verticalalignment='top',
transform=ax.transAxes)
ax.text(right, bottom, 'center top',
horizontalalignment='center',
verticalalignment='top',
transform=ax.transAxes)
ax.text(left, 0.5*(bottom+top), 'right center',
horizontalalignment='right',
verticalalignment='center',
rotation='vertical',
transform=ax.transAxes)
ax.text(left, 0.5*(bottom+top), 'left center',
horizontalalignment='left',
verticalalignment='center',
rotation='vertical',
transform=ax.transAxes)
ax.text(0.5*(left+right), 0.5*(bottom+top), 'middle',
horizontalalignment='center',
verticalalignment='center',
fontsize=20, color='red',
transform=ax.transAxes)
ax.text(right, 0.5*(bottom+top), 'centered',
horizontalalignment='center',
verticalalignment='center',
rotation='vertical',
transform=ax.transAxes)
ax.text(left, top, 'rotated\nwith newlines',
horizontalalignment='center',
verticalalignment='center',
rotation=45,
transform=ax.transAxes)
ax.set_axis_off()
plt.show()
Fonte padrão #
A fonte padrão base é controlada por um conjunto de rcParams. Para definir a fonte para expressões matemáticas, use rcParams começando com mathtext
(consulte mathtext ).
rcParam |
uso |
---|---|
|
Lista de famílias de fontes (instaladas na máquina do usuário) e/ou . |
|
O estilo padrão, ex |
|
Variante padrão, ex |
|
Alongamento padrão, ex |
|
Peso padrão. String ou inteiro |
|
Tamanho de fonte padrão em pontos. Tamanhos de fonte relativos ( |
Matplotlib pode usar famílias de fontes instaladas no computador do usuário, ou seja, Helvetica, Times, etc. As famílias de fontes também podem ser especificadas com aliases de famílias genéricas como ( ).{'cursive', 'fantasy', 'monospace',
'sans', 'sans serif', 'sans-serif', 'serif'}
Observação
Para acessar a lista completa de fontes disponíveis:
matplotlib.font_manager.get_font_names()
O mapeamento entre os aliases de famílias genéricas e as famílias de fontes reais (mencionadas no padrão rcParams ) é controlado pelos seguintes rcParams:
Alias de família genérica baseada em CSS |
rcParam com mapeamentos |
---|---|
|
|
|
|
|
|
|
|
|
|
Se algum nome de família genérico aparecer em 'font.family'
, substituímos essa entrada por todas as entradas no mapeamento rcParam correspondente. Por exemplo:
matplotlib.rcParams['font.family'] = ['Family1', 'serif', 'Family2']
matplotlib.rcParams['font.serif'] = ['SerifFamily1', 'SerifFamily2']
# This is effectively translated to:
matplotlib.rcParams['font.family'] = ['Family1', 'SerifFamily1', 'SerifFamily2', 'Family2']
Texto com glifos não latinos #
A partir da v2.0, a fonte padrão , DejaVu, contém glifos para muitos alfabetos ocidentais, mas não para outros scripts, como chinês, coreano ou japonês.
Para definir a fonte padrão para ser compatível com os pontos de código necessários, anexe o nome da fonte a 'font.family'
(recomendado) ou às listas de alias desejadas.
# first method
matplotlib.rcParams['font.family'] = ['Source Han Sans TW', 'sans-serif']
# second method
matplotlib.rcParams['font.family'] = ['sans-serif']
matplotlib.rcParams['sans-serif'] = ['Source Han Sans TW', ...]
As listas de alias de família genérica contêm fontes que são enviadas junto com o Matplotlib (para que tenham 100% de chance de serem encontradas) ou fontes que têm uma probabilidade muito alta de estarem presentes na maioria dos sistemas.
Uma boa prática ao definir famílias de fontes personalizadas é anexar uma família genérica à lista de famílias de fontes como último recurso.
Você também pode configurá-lo em seu .matplotlibrc
arquivo:
font.family: Source Han Sans TW, Arial, sans-serif
Para controlar a fonte usada por artista, use os argumentos de palavra-chave name , fontname ou fontproperties documentados acima .
No linux, fc-list pode ser uma ferramenta útil para descobrir o nome da fonte; por exemplo
$ fc-list :lang=zh family
Noto to Sans Mono CJK TC,Noto Sans Mono CJK TC Bold
Noto Sans CJK TC,Noto Sans CJK TC Medium
Noto Sans CJK TC,Noto Sans CJK TC DemiLight
Noto Sans CJK KR,Noto Sans CJK KR Black
Noto Sans CJK TC,Noto Sans CJK TC Black
Noto Sans Mono CJK TC,Noto Sans Mono CJK TC Regular
Noto Sans CJK SC,Noto Sans CJK SC Light
lista todas as fontes que suportam chinês.