Matplotlib-第4关:直方图


任务描述

本关任务:绘制一个包含直方图与线形图的图形。

相关知识

为了完成本关任务,你需要掌握:1.直方图和条形图的区别,2.如何绘制直方图。

  • 适用场景:和柱状图类似,适合用于展示二维数据集,展示数据的分布情况,其中一个轴表示需要对比的分类维度,另一个轴代表相应的数值。
什么是直方图

单从外表上看直方图和条形图非常相似。首先需要区分清楚概念:直方图和条形图。

  • 条形图用长条形表示每一个类别,长条形的长度表示类别的频数,宽度表示表示类别。

  • 直方图是一种统计报告图,形式上也是一个个的长条形,但是直方图用长条形的面积表示频数,所以长条形的高度表示频数组距,宽度表示组距,其长度和宽度均有意义。当宽度相同时,一般就用长条形长度表示频数。

绘制直方图

直方图一般用来描述等距数据。直观上,直方图各个长条形是衔接在一起的,表示数据间的数学关系。

 
 
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. import matplotlib
  4. # 设置matplotlib正常显示中文和负号
  5. matplotlib.rcParams['font.sans-serif']=['SimHei'] # 用黑体显示中文
  6. matplotlib.rcParams['axes.unicode_minus']=False # 正常显示负号
  7. # 随机生成(10000,)服从正态分布的数据
  8. data = np.random.randn(10000)
  9. plt.hist(data,bins=30, normed=0, facecolor="red", alpha=0.7)
  10. # 显示横轴标签
  11. plt.xlabel("区间")
  12. # 显示纵轴标签
  13. plt.ylabel("频数/频率")
  14. # 显示图标题
  15. plt.title("频数/频率分布直方图")

参数 作用
data 必选参数,绘图数据
bins 直方图的长条形数目,可选项,默认为10
normed 是否将得到的直方图向量归一化,可选项,默认为0,代表不归一化,显示频数。normed=1,表示归一化,显示频率。
facecolor 长条形的颜色
edgecolor 长条形边框的颜色
alpha 透明度
编程要求

在右侧编辑器Begin-End处补充代码,根据输入数据将直方图与线形图绘制在同一面板中,并设置直方图为红色,线形图为蓝色,具体要求如下:

  • 图形的figsize(10, 10)

  • 文件名为Task4/img/T1.png

测试说明

平台会对你编写的代码进行测试:

预期输出:你的答案与正确答案一致

import matplotlib
matplotlib.use("Agg")
import numpy as np
import matplotlib.pyplot as plt



def student(data,x,y):
    '''
    根据输入数据将直方图与线形图绘制在同一面板中,并设置直方图为红色,线形图为蓝色
    :param data: 绘制直方图数据,类型为list
    :param x,y: 绘制线形图数据,类型为list

    :return: None
    '''
    # ********* Begin *********#
    plt.figure(figsize=(10, 10))

    # 绘制直方图
    plt.hist(data, color='red')

    # 绘制线形图
    plt.plot(x, y, color='blue')

    # 设置图例
    

    # 保存图形
    save_dir = 'Task4/img/'
    plt.savefig(f'{save_dir}T1.png')
    plt.close()
    # ********* End *********#

猜你喜欢

转载自blog.csdn.net/Joy19981127/article/details/134836294
今日推荐