Recebi o seguinte código de um colega. Ele desenha um gráfico polar mostrando a porcentagem de três coisas em três anéis. Não tenho muita certeza de como o gráfico polar é desenhado no código, mas parece que é alguma conversão de um gráfico de barras. A versão do matplotlib que estou usando é 3.9.2. Não consegui fazer o quadro quadrado ao redor dos anéis desaparecer. Como você pode ver no código de exemplo, tentei várias maneiras pesquisando online. Executar o mesmo código no Matplotlib 3.7.0 não mostra o quadro quadrado. Sinto que isso pode ser uma correção simples de uma linha, mas não consegui descobrir. Espero que alguém possa me ajudar aqui. Obrigado.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from math import pi
data = [15, 20, 12]
fig, ax = plt.subplots(figsize=(6, 6), facecolor='white')
ax = plt.subplot(projection='polar', frameon=False)
startangle = 90
colors = ['#005a85', '#4c4c4d', '#048543']
colors_bg = ['#818589', '#818589', '#818589']
xs = [(i * pi *2)/ 100 for i in data]
xs_bg = [(i * pi *2)/ 100 for i in [100,100,100]]
ys = [-0.2, 1, 2.2]
left = (startangle * pi * 6)/ 360 #this is to control where the bar starts
# plot bars and points at the end to make them round
for i, x in enumerate(xs_bg):#draw the background grey circles
ax.barh(ys[i], x, left=left, height=0.4, color=colors_bg[i])
for i, x in enumerate(xs):
ax.barh(ys[i], x, left=left, height=0.4, color=colors[i])
ax.scatter(x+left, ys[i], s=60, color=colors[i], zorder=2)
ax.scatter(left, ys[i]-0.01, s=60, color=colors[i], zorder=2)
plt.ylim(-4, 4)
# clear ticks, grids, spines
plt.xticks([])
plt.yticks([])
ax.spines.clear()
# Other attempts to remove the frame, none worked
ax.axis("off")
ax.set_axis_off()
ax.grid(False)
ax.get_xaxis().set_visible(False)
ax.get_yaxis().set_visible(False)
plt.gca().get_xaxis().set_visible(False)
plt.gca().get_yaxis().set_visible(False)
plt.tight_layout()
plt.show()
Você criou dois subplots um em cima do outro. Um com
plt.subplots
e o outro complt.subplot
. Na versão 3.7, o subplot original era automaticamente excluído quando o segundo era adicionado no topo. Mas isso mudou na v3.8 . Você deveria ter visto um aviso de descontinuação ao executar com a v3.7. Você escondeu com sucesso o segundo, mas não o primeiro subplot. Para corrigir, simplesmente não faça o primeiro subplot. Por exemplo, substitua esta linhacom um que só cria uma figura