Curso matplotlib - Combinando gráfico de dispersão com gráfico de linhas
Utilizar o plt.plot()
para gerar gráfico de dispersão com linhas talvez não seja a melhor ideia, pois a personalização dos marcadores é mais simples quando utilizamos o plt.scatter()
.
A melhor forma de gerar um gráfico de dispersão com linhas é combinando dois elemento gráficos separadamente, sendo um o gráfico de linha (plt.plot()
) e o outro o gráfico de dispersão (plt.scatter()
), o que é feito da seguinte forma:
plt.figure(figsize=(12,6))
plt.plot(horario, temperatura, c='red', linewidth=3.5)
plt.scatter(horario, temperatura, marker='s', edgecolors='k', facecolors='g', s=250, linewidths=3.5)
plt.show()
Figura 1 - Combinando gráfico de dispersão com gráfico de linhas.
Ordem de plotagem
No gráfico acima (Figura 1), observe que a linha foi desenhada em cima dos pontos, enquanto que no gráfico anterior, a linha estava desenhada por baixo. Por padrão, o plt.plot()
aloca a linha por de baixo dos pontos.
Quando adicionamos vários elementos gráficos, existe uma prioridade de qual ordem será utilizada para desenhar o gráfico. Entretanto, podemos controlar esta ordem de forma muito simples, através do parâmetro zorder
.
O parâmetro zorder
deve receber um número (int
ou float
) que indica a ordem de plotagem do elemento. Elementos com maior valor de zorder
são desenhados por cima dos demais. Por exemplo, caso queira deixar a linha por baixo dos marcadores, basta adicionar zorder=-1
em plt.plot()
:
plt.figure(figsize=(12,6))
plt.plot(horario, temperatura, c='red', linewidth=3.5, zorder=-1)
plt.scatter(horario, temperatura, marker='s', edgecolors='k', facecolors='g', s=250,
linewidths=3.5)
plt.show()
Figura 2 - Combinando gráfico de dispersão com gráfico de linhas.
Ou especificar a ordem em todos os elementos (recomendado):
plt.figure(figsize=(12,6))
plt.plot(horario, temperatura, c='red', linewidth=3.5, zorder=1)
plt.scatter(horario, temperatura, marker='s', edgecolors='k', facecolors='g', s=250,
linewidths=3.5, zorder=2)
plt.show()
Figura 3 - Combinando gráfico de dispersão com gráfico de linhas.
Transparência
Também é possível adicionar transparência aos elementos gráficos, o que é feito passando um número (float
) entre 0.0
(completamente transparente) e 1.0
(totalmente preenchido) através do parâmetro alpha
.
Por exemplo, para deixar os marcadores com metade da sua transparência, basta passar alpha=0.5
em plt.scatter()
:
plt.figure(figsize=(12,6))
plt.plot(horario, temperatura, c='red', linewidth=3.5, zorder=1)
plt.scatter(horario, temperatura, marker='s', edgecolors='k', facecolors='g', s=250,
linewidths=3.5, zorder=2, alpha=0.5)
plt.show()
Figura 4 - Combinando gráfico de dispersão com gráfico de linhas.
Para deixar a linha transparente, basta passar alpha=0.5
em plt.plot()
:
plt.figure(figsize=(12,6))
plt.plot(horario, temperatura, c='red', linewidth=3.5, zorder=1, alpha=0.5)
plt.scatter(horario, temperatura, marker='s', edgecolors='k', facecolors='g', s=250,
linewidths=3.5, zorder=2)
plt.show()
Figura 5 - Combinando gráfico de dispersão com gráfico de linhas.