matplotlib:直方图的绘制

Posted xmcwm

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matplotlib:直方图的绘制相关的知识,希望对你有一定的参考价值。

1、matplotlib绘图三部曲

(1)创建画布

(2)绘图——包含绘图与图形修饰

(3)绘图展示

2、直方图的绘制

(1)导入模块

import matplotlib.pyplot as plt
import numpy as np

  将模块导入到脚本中,并更改名字为plt

(2)创建画布

plt.figure(figsize=(8,5), dpi=120)

  使用figure()方法创建画布,figsize=(x,y)参数用于设置画布大小,单位为英寸,dpi参数用于设置图片像素

  matplotlib默认不支持中文和符号和字符

plt.rcParams[‘font.sans-serif‘] = ‘SimHei‘
plt.rcParams[‘axes.unicode_minus‘] = False

  加入上面两行代码,使其能够显示中文和符号

(3)绘图——包括绘图与图形修饰

  • 准备数据(以班级同学身高数据为例)

data = np.random.uniform(low=150.0, high=195.0, size=33)
height = np.array([float("%.1f" % i) for i in data])

  数据一般以数组的形式来表示,这里使用random.uniform()方法随机生成在150195之间的33个身高数据,height指的是班上同学的身高

  • 确定每一组的组距
group_num = 5
ptp = height.max() - height.min()
step = int(np.ceil(ptp / group_num))
bins = np.arange(height.min(), height.max() + step, step)

  先确定分组数目,再对这组数据的进行最大值和最小值求差计算,最后确定每一组的组距,使用ceil方法设置组距,参数为组距;bins为横轴刻度

  • 绘制直方图
plt.hist(height, bins=bins, color="pink", edgecolor="b")

  使用hist()方法绘制直方图,相关参数有color:线的颜色,bins:横轴的刻度,edgecolor:边框的线条颜色

  • 增加标题
plt.title("身高分布直方图")

  使用title()方法为图表增加标题

  • 增加横轴名称
plt.xlabel("身高(cm)", verticalalignment="top")

  使用xlabel()方法设置横轴名称,参数verticalalignment:设置名称的位置

  • 增加纵轴名称
plt.ylabel("人数(个))", rotation=0, horizontalalignment="right")

  使用ylabel()方法设置纵轴名称,参数horizontalalignment:设置名称的位置,rotation:设置名称的旋转角度

  • 增加刻度
plt.xticks(bins)

  使用xticks()方法增加横轴刻度

yticks = np.arange(0, 15)
plt.yticks(yticks)

  使用yticks()方法设置纵轴刻度,参数yticks为设置后的刻度

  • 直方图不需要图例
  • 增加网格线
plt.grid(True,axis="y",alpha=0.2)

  使用grid()方法为直方图增加网格线,参数axis:只在纵轴方向上设置网格线,alpha:设置网格线的透明度

  • 保存图片
plt.savefig("./身高分布直方图.png")

  使用savefig()方法将绘制出的折线图保存为图片,参数为图片的路径+名字

(4)绘图展示

plt.show()

  使用show()方法展示绘制出的图形,不添加任何参数

3、最终效果展示

技术图片

 4、折线图的特点

  概念:将值标注成点,并将这些点按照某种特定顺序连接起来形成的图称为折线图

  应用场景:数据在一个有序的因变量上的变化,它的特点是反映事物随类别变化的趋势,可以清晰展现数据的增减趋势,增减的速率,增减的规律、峰值等特征

  优点:

    • 能够很好的展现沿某个维度的变化趋势
    • 能够比较多组数据在同一个维度上的趋势
    • 适合展现较大的数据集

  缺点:

    • 每张图上不适合展现较多的折线图

以上是关于matplotlib:直方图的绘制的主要内容,如果未能解决你的问题,请参考以下文章

使用 matplotlib 和 pandas 从 csv 文件中绘制直方图

如何绘制直方图的密度而非计数? (Matplotlib)

如何用matplotlib ArtistAnimation绘制直方图或条形动画?

如何用matplotlib ArtistAnimation绘制直方图或条形动画?

Matplotlib:绘制具有非透明边缘的透明直方图

根据 Matplotlib 中的预计数数据绘制直方图