Estou aprendendo a usar matplotlib
estudando exemplos, e muitos exemplos parecem incluir uma linha como a seguinte antes de criar um único gráfico ...
fig, ax = plt.subplots()
Aqui estão alguns exemplos...
Vejo essa função usada muito, mesmo que o exemplo esteja apenas tentando criar um único gráfico. Existe alguma outra vantagem? A demonstração oficial de subplots()
também é usada f, ax = subplots
na criação de um único gráfico, e só faz referência a machado depois disso. Este é o código que eles usam.
# Just a figure and one subplot
f, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('Simple plot')
python
matplotlib
plot
visualization
neelshiv
fonte
fonte
Respostas:
plt.subplots()
é uma função que retorna uma tupla contendo uma figura e eixos de objetos. Portanto, ao usarfig, ax = plt.subplots()
você descompacta essa tupla nas variáveisfig
eax
. Terfig
é útil se você deseja alterar os atributos no nível da figura ou salvar a figura como um arquivo de imagem posteriormente (por exemplo, comfig.savefig('yourfilename.png')
). Você certamente não precisa usar o objeto de figura retornado, mas muitas pessoas o usam mais tarde, por isso é comum ver. Além disso, todos os objetos de eixos (os objetos que possuem métodos de plotagem) têm um objeto de figura pai de qualquer maneira, portanto:é mais conciso do que isso:
fonte
ax11, ax12, ax21, ax22
usarfig.add_subplot(221)
(ou 222, 223, 224, respectivamente).Apenas um suplemento aqui.
A seguinte pergunta é: e se eu quiser mais subtramas na figura?
Como mencionado no Doc, podemos usar
fig = plt.subplots(nrows=2, ncols=2)
para definir um grupo de subparcelas com grade (2,2) em um objeto de figura.Então, como sabemos, o
fig, ax = plt.subplots()
retorna uma tupla, vamos tentarfig, ax1, ax2, ax3, ax4 = plt.subplots(nrows=2, ncols=2)
primeiro.Isso gera um erro, mas não se preocupe, porque agora vemos que
plt.subplots()
realmente retorna uma tupla com dois elementos. O primeiro deve ser um objeto de figura e o outro deve ser um grupo de objetos de subparcelas.Então, vamos tentar novamente:
e verifique o tipo:
Obviamente, se você usar parâmetros como (nrows = 1, ncols = 4), o formato deverá ser:
Portanto, lembre-se de manter a construção da lista igual à grade de subparcelas que definimos na figura.
Espero que isso seja útil para você.
fonte
fig, axes = plt.subplots(nrows=10, ncols=3)
eaxes = axes.flatten()
. Agora você pode se referir a cada subtrama pelo seu índice:axes[0]
,axes[1]
, ...nrows=1
, como então,axes
for devolvido plano com comprimento igual ancols
fig, axes = plt.subplots(nrows=1, ncols=3, squeeze=False)
Como complemento à pergunta e às respostas acima, também há uma diferença importante entre
plt.subplots()
eplt.subplot()
, observe a falta's'
no final.Pode-se usar
plt.subplots()
para fazer todas as suas subparcelas de uma só vez e retornar a figura e os eixos (plural de eixo) das subparcelas como uma tupla. Uma figura pode ser entendida como uma tela em que você pinta seu esboço.Visto que você pode usar
plt.subplot()
se desejar adicionar as subparcelas separadamente. Retorna apenas o eixo de uma subtrama.No entanto,
plt.subplots()
é preferido porque oferece opções mais fáceis de personalizar diretamente toda a sua figuraenquanto que, com
plt.subplot()
, será necessário especificar individualmente para cada eixo que pode se tornar complicado.fonte
ax3 = plt.subplot(2,1,3)
não funcionará porque é 2 por 1, que possui apenas 2 gráficos.Além das respostas acima, você pode verificar o tipo de objeto
type(plt.subplots())
que retorna uma tupla, por outro lado,type(plt.subplot())
retornosmatplotlib.axes._subplots.AxesSubplot
que não podem ser descompactados.fonte