Menu
CoddyTech

柱状图

本课属于 Coddy Machine Learning 学习旅程的“数据与图表”单元。第 26 课,共 60 课。

本章将数据转换为摘要。学完后,你将制作一份包含两张图表的报告,就像这样:

两张并排的图表:一张柱状图显示每个工作日的平均降雨量,周四降雨量最大;一张直方图显示每日降雨量,大多数日子的降雨量几乎为零

从条形图开始。口味没有顺序,因此从一个到下一个的连线毫无意义。ax.bar(categories, values) 会为每个类别绘制一个条形:

flavors = ["Chocolate", "Vanilla", "Mint", "Mango"]
sold = [42, 27, 15, 21]
fig, ax = plt.subplots()
ax.bar(flavors, sold)
ax.set_title("Scoops Sold")
ax.set_ylabel("Scoops")
plt.show()

标题为“售出的冰激凌球数”的条形图,包含四个条形:巧克力 42,香草 27,薄荷 15,芒果 21

柱形从 0 开始,因此高度可以直接比较:巧克力的 42 是芒果的 21 的两倍。在训练模型之前,可以用柱形表示每个答案出现的频率,看看是否有某个答案占主导。

challenge icon

挑战

中等

48 名学生回答了他们如何上学。counts 保存了各代码对应的答案:1 表示步行,2 表示骑自行车,3 表示乘公交车,4 表示开车。要比较各学校的情况,请绘制占比图:

  1. 将计数转换为百分比,并四舍五入到小数点后 1 位(48 人中的 12 人占 25.0)。
  2. 将它们绘制成柱状图:Walk、Bike、Bus、Car。
  3. 给纵轴添加标签 Students (%)。

你的图表应该像这样,数据来自一所规模较小的学校:

标题为 Getting to School 的柱状图,包含四根表示百分比的柱子:Walk 为 26.7,Bike 为 13.3,Bus 为 40,Car 为 20

你的程序不会打印任何内容。Coddy 会在输出中描述你的柱子。

亲手试试

import numpy as np
import matplotlib.pyplot as plt

# 1 = 步行,2 = 骑自行车,3 = 乘公交车,4 = 开车
answers = np.array([1, 3, 1, 4, 3, 3, 4, 3, 4, 4, 3, 4, 4, 4, 3, 3,
                    2, 2, 2, 1, 1, 3, 1, 1, 1, 2, 3, 3, 1, 3, 2, 1,
                    3, 4, 3, 3, 1, 1, 1, 2, 3, 1, 3, 4, 4, 3, 2, 4])


# 返回一个数组:统计从 1 到 4 每个编号对应的值有多少个
def count_codes(values):
    counts = []
    for code in range(1, 5):
        counts.append((values == code).sum())
    return np.array(counts)


counts = count_codes(answers)
fig, ax = plt.subplots()
ax.set_title("Getting to School")

# 在下方编写你的代码

# 不要修改下面这行代码
plt.show()
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

数据与图表中的所有课

自己练习: Python 在线编译器