Python数据分析(四)matplotlib常用统计图总结

本文详细介绍了使用Python的matplotlib库绘制各种统计图表的方法,包括折线图、散点图、条形图和直方图。通过实例展示了如何利用matplotlib分析数据趋势、分布情况和比较数据差异。同时,文章讨论了选择合适图表类型的重要性,并提供了代码示例来展示数据的内在关联、数量统计和频率分布。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

往期推荐:
Python数据分析(一)matplotlib基础绘图和调整x轴刻度
Python数据分析(二)matplotlib折线图应用实例——绘制10点到12点的气温
Python数据分析(三)matplotlib折线图应用实例——自定义图形风格



前言

matplotlib能够绘制折线图散点图柱状图直方图、箱线图、饼图等

如何选择哪种统计图来更直观的呈现数据?


对比常用统计图

  • 折线图
    以折线的上升或下降来表示统计数量的增减变化的统计图,能够显示数据的变化趋势,反映事物的变化情况(变化)
  • 直方图
    由一系列高度不等的纵向条纹或线段表示数据分布的情况,一般用横轴表示数据范围,纵轴表示分布情况,绘制连续性的数据,展示一组或者多组数据的分布状况(统计)
  • 条形图
    排列在工作表的列或行中的数据可以绘制到条形图中,绘制离散性的数据,能够一眼看出各个数据的大小,比较数据之间的差别(统计)
  • 散点图
    用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式,判断变量之间是否存在数量关联趋势,展示离群点(分布规律)

01 绘制散点图

假设通过爬虫你获取到了北京2016年3,10月份每天白天的最高气温(分别位于列表a,b),那么此时如何寻找出气温和随时间(天)变化的某种规律

a = [11, 17, 16, 11, 12, 11, 12, 6, 6, 7, 8, 9, 12, 15, 14, 17, 18, 21, 16, 17, 20, 14, 15, 15, 15, 19, 21, 22, 22, 22, 23]
b = [26, 26, 28, 19, 21, 17, 16, 19, 18, 20, 20, 19, 22, 23, 17, 20, 21, 20, 22, 15, 11, 15, 5, 13, 17, 10, 11, 13, 12, 13, 6]

代码如下:

import numpy as np
import matplotlib
from matplotlib import pyplot as plt
import random
from matplotlib.font_manager import FontProperties

font = FontProperties(fname="/System/Library/Fonts/Supplemental/Songti.ttc", size=14)

y_3 = [11, 17, 16, 11, 12, 11, 12, 6, 6, 7, 8, 9, 12, 15, 14, 17, 18, 21, 16, 17, 20, 14, 15, 15, 15, 19, 21, 22, 22, 22, 23]
y_10 = [26, 26, 28, 19, 21, 17, 16, 19, 18, 20, 20, 19, 22, 23, 17, 20, 21, 20, 22, 15, 11, 15, 5, 13, 17, 10, 11, 13, 12, 13, 6]

x_3 = range(1, 32)
x_10 = range(49, 80)

plt.figure(figsize=(20, 8), dpi=80)

# 绘图
plt.scatter(x_3, y_3, label="3月")
plt.scatter(x_10, y_10, label="10月")

_x = list(x_3)+list(x_10)
_xticks = ["3月{}日".format(i) for i in x_3]
_xticks += ["10月{}日".format(i-50) for i in x_10]

# 刻度线
plt.xticks(_x[::3], _xticks[::3], rotation = 45, fontproperties=font)
# plt.xticks(x_10[::3], _xticks_10[::3], rotation = 45, fontproperties=font)

plt.yticks(fontproperties=font)

# 标签
plt.xlabel("月份", fontproperties=font)
plt.ylabel("温度(°c)", fontproperties=font)
plt.title("3月和10月的气温变化规律", fontproperties=font)

# 显示图例
plt.legend(prop=font)

# 显示图形
plt.show()

散点图更多应用场景:

  • 不同条件(维度)之间的内在关联关系
  • 观察数据的离散聚合程度

02 绘制条形图

假设你获取到了2017年内地电影票房前20的电影(列表a)和电影票房数据(列表b),那么如何更加直观的展示该数据?

a = [“战狼2”, “速度与激情8”, “功夫瑜伽”, “西游伏妖篇”, “变形金刚5:最后的骑士”, “摔跤吧!爸爸”, “加勒比海盗5:死无对证”, “金刚:骷髅岛”, “极限特工:终极回归”, “生化危机6:终章”, “乘风破浪”, “神偷奶爸3”, “智取威虎山”, “大闹天竺”, “金刚狼3:殊死-战”, “蜘蛛侠:英雄归来”, “悟空传”, “银河护卫队2”, “情圣”, “新木乃伊”]
b = [56.01, 26.94, 17.53, 16.49, 15.45, 12.96, 11.8, 11.61, 11.28, 11.12, 10.49, 10.3, 8.75, 7.55, 7.32,
6.99, 6.88, 6.86, 6.58, 6.23] 单位:亿

代码如下(示例):

_x = range(len(a))
_y = b

plt.bar(_x, b, width = 0.2)
# bar绘制竖直条形图,只能接受含数字的可迭代对象
# barh绘制横向条形图,只能接受含数字的可迭代对象
# width表示竖直条形图长条的宽度,默认为0.8 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值