Como definir a proporção no matplotlib


A proporção de aspecto de um gráfico matplotlib refere-se ao aspecto da escala do eixo, ou seja, a proporção da unidade y para a unidade x.

Esta proporção pode ser modificada usando a função matplotlib.axes.Axes.set_aspect() .

Nos bastidores, a função set_aspect() na verdade altera o que é chamado de sistema de coordenadas de dados , mas na prática geralmente queremos alterar o sistema de coordenadas de exibição .

Para facilitar essa conversão, podemos usar este trecho de código:

 #define y-unit to x-unit ratio
ratio = 1.0

#get x and y limits
x_left, x_right = ax. get_xlim ()
y_low, y_high = ax. get_ylim ()

#set aspect ratio
ax. set_aspect ( abs ((x_right-x_left)/(y_low-y_high))*ratio)

Vejamos um exemplo de uso dessa função na prática.

Etapa 1: criar um gráfico Matplotlib básico

Primeiro, vamos criar um gráfico de linhas simples usando Matplotlib:

 import matplotlib.pyplot as plt

#define matplotlib figure and axis
fig, ax = plt. subplots ()

#create simple line plot
ax. plot ([0, 10],[0, 20])

#displayplot
plt. show ()

Etapa 2: definir a proporção (da maneira errada)

Observe que o eixo x é maior que o eixo y. Vamos tentar definir a proporção para 1, ou seja, os eixos x e y devem ser iguais:

 import matplotlib.pyplot as plt

#define matplotlib figure and axis
fig, ax = plt. subplots ()

#create simple line plot
ax. plot ([0, 10],[0, 20])

#attempt to set aspect ratio to 1
ax. set_aspect (1)

#displayplot
plt. show () 

Observe que isso não funcionou conforme o esperado. O eixo y é muito mais longo que o eixo x.

Etapa 3: definir a proporção (da maneira certa)

O código a seguir mostra como usar um cálculo simples para definir a proporção correta:

 import matplotlib.pyplot as plt

#define matplotlib figure and axis
fig, ax = plt. subplots ()

#create simple line plot
ax. plot ([0, 10],[0, 20])

#set aspect ratio to 1
ratio = 1.0
x_left, x_right = ax. get_xlim ()
y_low, y_high = ax. get_ylim ()
ax. set_aspect ( abs ((x_right-x_left)/(y_low-y_high))*ratio)

#displayplot
plt. show () 

Definir proporções do gráfico matplotlib

Observe que este gráfico tem a proporção que esperávamos. Os eixos x e y têm comprimentos iguais.

Etapa 4: ajuste a proporção como desejar

Se quisermos que o eixo y seja maior que o eixo x, podemos simplesmente especificar que a proporção seja um número maior que 1:

 import matplotlib.pyplot as plt

#define matplotlib figure and axis
fig, ax = plt. subplots ()

#create simple line plot
ax. plot ([0, 10],[0, 20])

#set aspect ratio to 3
ratio = 3
x_left, x_right = ax. get_xlim ()
y_low, y_high = ax. get_ylim ()
ax. set_aspect ( abs ((x_right-x_left)/(y_low-y_high))*ratio)

#displayplot
plt. show () 

formato de imagem matplotlib

E se quisermos que o eixo y seja menor que o eixo x, podemos simplesmente especificar que a proporção seja um número menor que 1:

 import matplotlib.pyplot as plt

#define matplotlib figure and axis
fig, ax = plt. subplots ()

#create simple line plot
ax. plot ([0, 10],[0, 20])

#set aspect ratio to .3
ratio = .3
x_left, x_right = ax. get_xlim ()
y_low, y_high = ax. get_ylim ()
ax. set_aspect ( abs ((x_right-x_left)/(y_low-y_high))*ratio)

#displayplot
plt. show () 

Proporção do eixo x do Matplotlib maior que o eixo y

Você pode encontrar mais tutoriais do Matplotlib aqui .

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *