python - 在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()
但我不知道如何修改此代码以满足我的需要...
任何帮助将不胜感激!!
解决方案
只需修改您发布的代码,这应该可以解决问题:
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()
看到两个分数列表中的顺序应该相同。
推荐阅读
- django - 如何在 django-rest-auth 上实现自定义详细序列化程序并对其进行序列化
- azure - Azure Front Door 是否适用于特定范围的 IP 地址?
- c - 在 C 中运行 make 文件时的最新消息
- azure - Azure API - 如何确定 VM 是否正在运行或已解除分配
- php - 环境变量/.env 文件
- webpack - Laravel Mix/Webpack 目录前缀
- javascript - 如何获取 this.value 作为放置在 JavaScript 事件处理程序中的函数中的参数?
- opengl - 如何从 Gamemaker Studio 2 着色器中获取房间(或屏幕)坐标?
- node.js - 如何在nodejs中使用多线程或进程
- r - 创建具有 2 个分类列的所有组合的数据框,然后按每个组合对第 3 列求和