在python中创建用于数据比较的条形图

悉达多·艾扬格

对于一个项目,我编写了一个代码,学生可以在其中输入他的姓名、录取编号、数学、物理和化学分数。现在我想要一个条形图来将他的得分与最高得分者进行比较。我定义了一个列表(l_math、l_chem 和 l_phy),它是所有学生的所有分数的列表。我什至将最大分数定义为: max_math 、 max_chem 和 max_phy ...

我尝试使用 Pandas 并更改 Charles Landau 编写的代码:

import random
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

s = "Crime Type Summer|Crime Type Winter".split("|")

# Generate dummy data into a dataframe
j = {x: [random.choice(["ASB", "Violence", "Theft", "Public Order", "Drugs"]
                   ) for j in range(300)] for x in s}
df = pd.DataFrame(j)

index = np.arange(5)
bar_width = 0.35

fig, ax = plt.subplots()
summer = ax.bar(index, df["Crime Type Summer"].value_counts(), bar_width,
            label="Summer")

winter = ax.bar(index+bar_width, df["Crime Type Winter"].value_counts(),
             bar_width, label="Winter")

ax.set_xlabel('Category')
ax.set_ylabel('Incidence')
ax.set_title('Crime incidence by season, type')
ax.set_xticks(index + bar_width / 2)
ax.set_xticklabels(["ASB", "Violence", "Theft", "Public Order", "Drugs"])
ax.legend()

plt.show()

但我不知道如何修改此代码以将其用于我的需要...

任何帮助将不胜感激!!

jinchuika

只需修改您发布的代码,就可以解决问题:

import random
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# assuming math, chem, physics ()
student_scores = [9, 1.5, 4.6]
max_score = [9.1, 8.5, 7.8]

df = pd.DataFrame({
    'student_scores': student_scores,
    'max_score': max_score
})

index = np.arange(len(df))
bar_width = 0.35
fig, ax = plt.subplots()
summer = ax.bar(index, df["student_scores"], bar_width, label="Student scores")

winter = ax.bar(index+bar_width, df["max_score"], bar_width, label="Max Scores")

ax.set_xlabel('Course')
ax.set_ylabel('Score')
ax.set_title('Current student vs Max score')
ax.set_xticks(index + bar_width / 2)
ax.set_xticklabels(["Math", "Chem", "Physics"])
ax.legend()

plt.show()

请注意,两个分数列表中的顺序应该相同。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章