Matplotlib без numpy или panda

#python #arrays #list #csv #matplotlib

Вопрос:

я пытаюсь создать штриховую графику с помощью matplotlib, но я не могу использовать numpy или panda. так что мне бы хотелось немного помочь с разделением прутьев

вот мой код:

 import matplotlib.pyplot as plt

eixo_X_ano = [78,82,86,90,94]
eixo_Y_AMM = [1.8,1.75,1.9,1.77,1.74]
eixo_Y_AMF = [1.71,1.69,1.8,1.73,1.82]


plt.title("Altura Media dos atletas que ganharam medalhas")
plt.xlabel("Anos")
plt.ylabel("Altura media")


largura = 2
plt.ylim(1,2.50)
plt.bar(eixo_X_ano - largura/2, eixo_Y_AMM, largura, label = "Masculino", color = "teal")
plt.bar(eixo_X_ano   largura/2, eixo_Y_AMF, largura, label = "Feminino", color = "r")
plt.legend()
plt.xticks(eixo_X_ano)
plt.show()
 

Комментарии:

1. numpy является зависимостью от matplotlib . Без использования numpy операции между a list и a float не векторизуются.

Ответ №1:

Если вы не используете numpy, вы не можете выполнять арифметику массивов (то есть eixo_X_ano - largura/2 ). Ты должен сделать это сам:

 import matplotlib.pyplot as plt

eixo_X_ano = [78,82,86,90,94]
eixo_Y_AMM = [1.8,1.75,1.9,1.77,1.74]
eixo_Y_AMF = [1.71,1.69,1.8,1.73,1.82]

plt.title("Altura Media dos atletas que ganharam medalhas")
plt.xlabel("Anos")
plt.ylabel("Altura media")

largura = 2

x1 = [i - largura/2 for i in eixo_X_ano]
x2 = [i   largura/2 for i in eixo_X_ano]

plt.ylim(1,2.50)
plt.bar(x1, eixo_Y_AMM, largura, label = "Masculino", color = "teal")
plt.bar(x2, eixo_Y_AMF, largura, label = "Feminino", color = "r")
plt.legend()
plt.xticks(eixo_X_ano)
plt.show()
 

Как сказал Майкл, ваше ограничение против numpy глупо. Matplotlib импортирует numpy, поэтому нет необходимости импортировать его самостоятельно.

Комментарии:

1. это ограничение, которое сделал профессор