Considera los siguientes datos a modo de ejemplo:
# Datos
categories = ["Velocidad", "Potencia", "Autonomía", "Confort", "Precio"]
values = [4, 3, 5, 4, 2]
Un gráfico radar (o spider chart) compara varias variables numéricas en ejes dispuestos en círculo, por lo que necesita una proyección polar en lugar de la cartesiana habitual. Calcula un ángulo por categoría con numpy, repite el primer valor y ángulo al final para cerrar la forma, y dibuja con ax.plot.
import numpy as np
import matplotlib.pyplot as plt
angles = np.linspace(0, 2 * np.pi, len(categories), endpoint = False).tolist()
values_closed = values + values[:1]
angles_closed = angles + angles[:1]
fig, ax = plt.subplots(subplot_kw = dict(projection = "polar"))
ax.plot(angles_closed, values_closed)
ax.set_xticks(angles)
ax.set_xticklabels(categories)
# plt.show()

Relleno
Añade ax.fill justo después de ax.plot, usando los mismos ángulos y valores cerrados, para sombrear el área bajo la línea.
import numpy as np
import matplotlib.pyplot as plt
angles = np.linspace(0, 2 * np.pi, len(categories), endpoint = False).tolist()
values_closed = values + values[:1]
angles_closed = angles + angles[:1]
fig, ax = plt.subplots(subplot_kw = dict(projection = "polar"))
ax.plot(angles_closed, values_closed)
ax.fill(angles_closed, values_closed, alpha = 0.25)
ax.set_xticks(angles)
ax.set_xticklabels(categories)
# plt.show()

Colores
Fija color tanto en plot como en fill para cambiar el color de la línea y del relleno.
import numpy as np
import matplotlib.pyplot as plt
angles = np.linspace(0, 2 * np.pi, len(categories), endpoint = False).tolist()
values_closed = values + values[:1]
angles_closed = angles + angles[:1]
fig, ax = plt.subplots(subplot_kw = dict(projection = "polar"))
ax.plot(angles_closed, values_closed, color = "#C44E52")
ax.fill(angles_closed, values_closed, color = "#C44E52", alpha = 0.25)
ax.set_xticks(angles)
ax.set_xticklabels(categories)
# plt.show()

Para comparar más de un grupo, repite las llamadas a plot y fill para cada serie sobre los mismos ejes polares y añade una leyenda.
import numpy as np
import matplotlib.pyplot as plt
angles = np.linspace(0, 2 * np.pi, len(categories), endpoint = False).tolist()
angles_closed = angles + angles[:1]
values_a = values + values[:1]
values_b = [3, 4, 3, 5, 4] + [3]
fig, ax = plt.subplots(subplot_kw = dict(projection = "polar"))
ax.set_xticks(angles)
ax.set_xticklabels(categories)
ax.plot(angles_closed, values_a, label = "Modelo A")
ax.fill(angles_closed, values_a, alpha = 0.15)
ax.plot(angles_closed, values_b, label = "Modelo B")
ax.fill(angles_closed, values_b, alpha = 0.15)
ax.legend(loc = "upper right", bbox_to_anchor = (1.3, 1.1))
# plt.show()

También te puede interesar