数据可视化——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更新