程序员

数据可视化——matplotlib模块

2019-01-16  本文已影响13人  阿提艾斯

matplotlib是一个数据可视化函数库。
matpoltlib的子模块pyplot提供了2D图表制作的基本函数。
例子:https://matplotlib.org/gallery.html

散点图绘制

  import matplotlib.pyplot as plt
  # x, y分别是x坐标和y坐标的列表
  plt.scatter(x, y, c='red', alpha=0.5)  # c指定颜色,alpha指定透明度
  plt.show()

直方图

直方图是一种对数据分布情况的图形表示。
首先要对数据进行分组,然后统计每个分组内数据的数量。
作用:
·显示个分组频率或数量分布的情况
·易于显示各组之间频率或数量的差别
直方图绘制:
plt.hist(data, bins)
data:数据列表
bins:分组边界
例子:

"""
    作者:RTS
    日期:2019/1/16
    版本:5.0
    2.0新增功能:模拟掷两个骰子, 统计两个骰子点数和
    3.0新增功能:可视化抛掷两个骰子的结果
    4.0新增功能:直方图,对结果进行简单的数据统计和分析
    5.0新增功能:科学计算
"""
import matplotlib.pyplot as plt
import numpy as np

# 解决中文显示问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False


def main():
    """
        主函数
    """
    total_times = 10000

    # 记录骰子的结果,科学计算见参考资料[1]
    roll1_arr = np.random.randint(1, 7, size=total_times)
    roll2_arr = np.random.randint(1, 7, size=total_times)
    result_arr = roll1_arr + roll2_arr

    hist, bins = np.histogram(result_arr, bins=range(2, 14)) # 输出直方图的统计结果
    print(hist)
    print(bins)

    # 数据可视化
    plt.hist(result_arr, bins=range(2, 14), density=1, edgecolor='black', linewidth=1, rwidth=0.8) # normed(density)设置频率总和为1;edgecolor设置边界颜色;linewidth设置边界线宽度;rwidth设置直方图柱子宽度
    # The 'normed' kwarg was deprecated in Matplotlib 2.1 and will be removed in 3.1. Use 'density' instead.
    # 设置x轴坐标点显示
    tick_labels = ['2点', '3点', '4点', '5点', '6点', '7点', '8点', '9点', '10点', '11点', '12点']
    tick_pos = np.arange(2, 13) + 0.5 # 设置左边点位置偏移0.5
    plt.xticks(tick_pos, tick_labels)

    plt.title('骰子点数统计')
    plt.xlabel('点数')
    plt.ylabel('频率')
    plt.show()


if __name__ == '__main__':
    main()

一般不支持中文,需要修改一些参数

 # 解决中文显示问题,在声明下修改参数
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 修改为黑体
plt.rcParams['axes.unicode_minus'] = False

参考资料:
[1] 2019/1/17更新

上一篇下一篇

猜你喜欢

热点阅读