Alterar a espessura da linha de grade no gráfico de superfície 3D em Python - Matplotlib
Pré-requisitos: Matplotlib
Usando a biblioteca Matplotlib, podemos traçar o gráfico tridimensional importando o kit de ferramentas mplot3d. Neste gráfico, vamos alterar a espessura da linha de grade em um gráfico de superfície tridimensional. O Surface Plot é o diagrama de dados 3D que mostra a relação funcional entre a variável dependente (Y) e duas variáveis independentes (X e Y) em vez de mostrar os pontos de dados individuais.
As linhas de grade são as linhas que cruzam o gráfico para mostrar as divisões dos eixos. As linhas de grade do gráfico ajudam o visualizador do gráfico a ver qual valor é representado pelo ponto de dados não rotulado específico do gráfico. Ajuda especialmente quando o gráfico é muito complicado de analisar, então, de acordo com a necessidade, podemos ajustar ou alterar a espessura das linhas da grade ou os estilos das linhas da grade.
Abordagem
- Importe as bibliotecas necessárias.
- Crie os dados 3D para plotagem.
- Crie o sistema de coordenadas tridimensional usando ax = matplotlib.pyplot.gca ('projection = 3d') aqui gca significa get current grid e nessa passagem o parâmetro projection = 3d irá gerar o sistema de coordenadas tridimensional .
- Agora, para alterar a espessura da linha de grade, temos que atualizar as informações dos eixos dos respectivos eixos usando ax.xaxis.update ({'linewidth': 3}) ou qualquer largura de grade que você deseja definir para o eixo x da mesma maneira você pode definir o eixo Y e o eixo Z apenas escrevendo eixo y, eixo z no lugar do eixo x, respectivamente.
- Se quiser mudar a cor do respectivo eixo basta passar 'color': 'red' no dicionário ax.xaxis.update ({'linewidth': 3, 'color': 'red'}) ou a cor que desejar definir.
- Agora, depois de fazer as alterações, plote o gráfico de superfície usando ax.plot_surface (x, y, z) nos dados 3D que passam.
- Defina os rótulos X, Y e Z usando ax.set_xlabel(), ax.set_ylabel(), ax.set_zlabel() na passagem de parâmetro da string.
- Agora visualize o gráfico usando a função matplotlib.pyplot.show().
Exemplo 1: Alterar a espessura das linhas de grade do eixo X no gráfico de superfície 3D usando Matplotlib.
# importing necessary libraries
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
# function to create data for plotting
def data_creation():
# creating 3d data
x = np.outer(np.linspace(-3, 3, 30), np.ones(30))
y = x.copy().T # transpose
z = np.cos(x ** 2 + y ** 2)
return (x,y,z)
# main function
if __name__ == '__main__':
# creating three dimensional co-ordinate system
ax = plt.gca(projection='3d')
# calling data creation function and storing in
# the variables
data_x,data_y,data_z = data_creation()
# changing grid lines thickness of x axis to 3
ax.xaxis._axinfo["grid"].update({"linewidth":3})
# plotting surface plot
ax.plot_surface(data_x,data_y,data_z)
# giving label name to x,y and z axis
ax.set_xlabel("X axis")
ax.set_ylabel("Y axis")
ax.set_zlabel("Z axis")
# visualizing the plot
plt.show()
Saída:
No exemplo acima, alteramos a espessura da linha de grade do eixo X, como você pode ver na figura acima, as linhas de grade do eixo X têm uma linha mais espessa com a cor cinza. Isso pode ser feito atualizando o dicionário _axinfo do respectivo eixo no código de exemplo acima, nosso respectivo eixo é o eixo X.
Exemplo 2: Alterar a espessura das linhas de grade do eixo X no gráfico de superfície 3D usando Matplotlib.
# importing necessary libraries
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
# function to create data for plotting
def data_creation():
# creating 3d data
x = np.outer(np.linspace(-3, 3, 30), np.ones(30))
y = x.copy().T # transpose
z = np.cos(x ** 2 + y ** 2)
return (x,y,z)
# main function
if __name__ == '__main__':
# creating three dimensional co-ordinate system
ax = plt.gca(projection='3d')
# calling data creation function and storing in the variables
data_x,data_y,data_z = data_creation()
# changing grid lines thickness of Y axis to 3
ax.yaxis._axinfo["grid"].update({"linewidth":3})
# plotting surface plot
ax.plot_surface(data_x,data_y,data_z)
# giving label name to x,y and z axis
ax.set_xlabel("X axis")
ax.set_ylabel("Y axis")
ax.set_zlabel("Z axis")
# visualizing the plot
plt.show()
Saída:
No exemplo acima, alteramos a espessura da linha de grade do eixo Y, como você pode ver na figura acima, as linhas de grade do eixo Y têm uma linha mais espessa com a cor cinza. Tínhamos definido a espessura da linha de grade do eixo Y como 3.
Exemplo 3: Alterando a espessura das linhas de grade do eixo Z em plotagem de superfície 3D usando Matplotlib.
# importing necessary libraries
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
# function to create data for plotting
def data_creation():
# creating 3d data
x = np.outer(np.linspace(-3, 3, 30), np.ones(30))
y = x.copy().T # transpose
z = np.cos(x ** 2 + y ** 2)
return (x,y,z)
# main function
if __name__ == '__main__':
# creating three dimensional co-ordinate system
ax = plt.gca(projection='3d')
# calling data creation function and storing in the variables
data_x,data_y,data_z = data_creation()
# changing grid lines thickness of Z axis to 3
ax.zaxis._axinfo["grid"].update({"linewidth":3})
# plotting surface plot
ax.plot_surface(data_x,data_y,data_z)
# giving label name to x,y and z axis
ax.set_xlabel("X axis")
ax.set_ylabel("Y axis")
ax.set_zlabel("Z axis")
# visualizing the plot
plt.show()
Saída:
No exemplo acima, alteramos a espessura da linha de grade do eixo Z, como você pode ver na figura acima, as linhas de grade do eixo Z têm uma linha mais espessa com a cor cinza. Tínhamos definido a espessura da linha de grade do eixo Z como 3.
Exemplo 4: Alterando a espessura da linha de grade e a cor de todos os três eixos usando Matplotlib.
# importing necessary libraries
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
# function to create data for plotting
def data_creation():
# creating 3d data
x = np.outer(np.linspace(-3, 3, 30), np.ones(30))
y = x.copy().T # transpose
z = np.cos(x ** 2 + y ** 2)
return (x,y,z)
# main function
if __name__ == '__main__':
# creating three dimensional co-ordinate system
ax = plt.gca(projection='3d')
# calling data creation function and storing in the variables
data_x,data_y,data_z = data_creation()
# changing grid lines thickness of x axis to 1
ax.xaxis._axinfo["grid"].update({"linewidth":1})
# changing grid lines thickness of Y axis to 1 and giving color to red
ax.yaxis._axinfo["grid"].update({"linewidth":1,'color':'red'})
# changing grid lines thickness of Z axis to 1 and giving color to green
ax.zaxis._axinfo["grid"].update({"linewidth":1,'color':'green'})
# plotting surface plot
ax.plot_surface(data_x,data_y,data_z)
# giving label name to x,y and z axis
ax.set_xlabel("X axis")
ax.set_ylabel("Y axis")
ax.set_zlabel("Z axis")
# visualizing the plot
plt.show()
Saída:
No exemplo acima, definimos a espessura da linha de grade dos eixos X, Y e Z para 1 e alteramos a cor do eixo Y para vermelho e do eixo Z para verde, atualizando o _axinfo e atualizando o dicionário que definimos largura da linha e cor do gráfico 3D.
Atenção geek! Fortaleça suas bases com o Python Programming Foundation Course e aprenda o básico.
As postagens do blog Acervo Lima te ajudaram? Nos ajude a manter o blog no ar!
Faça uma doação para manter o blog funcionando.
70% das doações são no valor de R$ 5,00...
Diógenes Lima da Silva