【matplotlib 实战】--折线图
折线图是一种用于可视化数据变化趋势的图表,它可以用于表示任何数值随着时间或类别的变化。
折线图由折线段和折线交点组成,折线段表示数值随时间或类别的变化趋势,折线交点表示数据的转折点。
折线图的方向表示数据的变化方向,即正变化还是负变化,折线的斜率表示数据的变化程度。
1. 主要元素
折线图主要由以下四个元素组成:
- 数据点:折线图中的每个数据点都代表着一个时间点或一个数值。
- 折线:折线图中的线条代表着数据的变化趋势。
- X轴:一般是有序变量,表示数据点的变化区间。
- Y轴:数据点在不同时刻的值。

2. 适用的场景
折线图适用于以下分析场景:
- 趋势分析:折线图可以用于展示数据的增长、下降、波动等趋势,帮助分析人员了解数据的变化趋势。
- 问题诊断:折线图可以用于数据异常检测,帮助分析人员快速发现数据的异常情况。
3. 不适用的场景
折线图不适用于以下分析场景:
- 数据分类和分组:折线图不适用于数据分类和分组分析,因为折线图主要用于展示数据的变化趋势,而不是数据的分类和分组情况。
- 数据回归分析:折线图不适用于数据回归分析,因为回归分析需要建立在数据样本中的线性关系,而折线图主要用于展示数据的变化趋势,不能很好地反映数据的线性关系。
4. 分析实战
4.1. 数据来源
数据来源国家统计局公开数据,已经整理好的csv文件在:https://databook.top/nation/A03
本次分析使用其中的 A0301.csv 文件(总人口数据)。
下面的文件路径 fp 要换成自己实际的文件路径。
import pandas as pd
fp = "d:/share/A0301.csv"
df = pd.read_csv(fp)
df

4.2. 数据清理
首先看看 zbCN 字段中有多少种不同的人口统计类别。
df.groupby(by="zbCN").count()

这个数据集中一共有5种不同维度的人口统计:
- 年末总人口
- 男性人口
- 女性人口
- 城镇人口
- 乡村人口
按照类别,将它们分离成5个不同的数据集,为了绘制折线图做准备。
groups = df.groupby(by="zbCN")
dict_group = {}
for g in groups:
dict_group[g[0]] = g[1]
for k, v in dict_group.items():
print("key = {}, value type = {}".format(k, type(v)))

groupby 函数按照 by 参数指定的字段将数据集分组,每个group是一个二元的元组。
第一个元素是用来分组的字段值,第二个元素是分组之后的数据集。
4.3. 分析结果可视化
拆分好数据集之后,最就是可视化展示。
首先封装一个函数,用来显示2个数据:
(直接使用上面分割好的数据集dict_group)
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator
%matplotlib inline
#为了显示中文
matplotlib.rcParams["font.sans-serif"] = ["Microsoft YaHei Mono"]
matplotlib.rcParams["axes.unicode_minus"] = False
#根据key显示两个数据集
def draw(key1, key2):
with plt.style.context("seaborn-v0_8"):
fig = plt.figure()
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
ax.xaxis.set_major_locator(MultipleLocator(4))
ax.xaxis.set_minor_locator(MultipleLocator(2))
data = dict_group[key1]
ax.plot(data["sjCN"], data["value"], "b--o", label=key1)
data = dict_group[key2]
ax.plot(data["sjCN"], data["value"], "g:d", label=key2)
ax.legend()
首先看下男女人口的变化趋势:
key1 = "女性人口(万人)"
key2 = "男性人口(万人)"
#男性人口和女性人口的变化趋势
dict_group[key1] = dict_group[key1].sort_values("sj")
dict_group[key2] = dict_group[key2].sort_values("sj")
draw(key1, key2)

看这个趋势变化,男女人口的差距长期都在几千万上下,所以找不到女朋友也许不是你的责任 : )
再看看城镇和乡村的人口变化。
key1 = "乡村人口(万人)"
key2 = "城镇人口(万人)"
#乡村人口和城镇人口的变化趋势
dict_group[key1] = dict_group[key1].sort_values("sj")
dict_group[key2] = dict_group[key2].sort_values("sj")
draw(key1, key2)

从图中可以看出,1994年左右,乡村人口开始进入城镇;
2010年左右,城镇人口开始超越乡村人口,且人口差距越来越大。
折线图最适合的场景就是展示这类有趋势变化的数据。
【matplotlib 实战】--折线图的更多相关文章
- python中matplotlib画折线图实例(坐标轴数字、字符串混搭及标题中文显示)
最近在用python中的matplotlib画折线图,遇到了坐标轴 "数字+刻度" 混合显示.标题中文显示.批量处理等诸多问题.通过学习解决了,来记录下.如有错误或不足之处,望请指 ...
- python使用matplotlib绘制折线图教程
Matplotlib是一个Python工具箱,用于科学计算的数据可视化.借助它,Python可以绘制如Matlab和Octave多种多样的数据图形.下面这篇文章主要介绍了python使用matplot ...
- Matplotlib学习---用matplotlib画折线图(line chart)
这里利用Jake Vanderplas所著的<Python数据科学手册>一书中的数据,学习画图. 数据地址:https://raw.githubusercontent.com/jakevd ...
- 06. Matplotlib 2 |折线图| 柱状图| 堆叠图| 面积图| 填图| 饼图| 直方图| 散点图| 极坐标| 图箱型图
1.基本图表绘制 plt.plot() 图表类别:线形图.柱状图.密度图,以横纵坐标两个维度为主同时可延展出多种其他图表样式 plt.plot(kind='line', ax=None, figsiz ...
- python用matplotlib画折线图
折线图: import matplotlib.pyplot as plt y1=[10,13,5,40,30,60,70,12,55,25] x1=range(0,10) x2=range(0,10) ...
- Python开发【模块】:matplotlib 绘制折线图
matplotlib 1.安装matplotlib ① linux系统安装 # 安装matplotlib模块 $ sudo apt-get install python3-matplotlib # 如 ...
- 【Python】matplotlib绘制折线图
一.绘制简单的折线图 import matplotlib.pyplot as plt squares=[1,4,9,16,25] plt.plot(squares) plt.show() 我们首先导入 ...
- matplotlib之折线图
1.案例一 # coding=utf-8 from matplotlib import pyplot as plt import random # 设置字体相关 from matplotlib imp ...
- matplotlib系列——折线图
import numpy as np import matplotlib.pyplot as plt import matplotlib #数据准备 #numpy.linspace(start, st ...
- Matplotlib 绘制折线图
Matplotlib matplotlib: 最流行的Python底层绘图库,主要做数据可视化图表,名字取材于MATLAB,模仿MATLAB构建 绘制折线图 绘制两小时的温度变化 from matpl ...
随机推荐
- python 爬虫某东网商品信息 | 没想到销量最高的是
哈喽大家好,我是咸鱼 好久没更新 python 爬虫相关的文章了,今天我们使用 selenium 模块来简单写个爬虫程序--爬取某东网商品信息 网址链接:https://www.jd.com/ 完整源 ...
- Spring事件监听机制使用和原理解析
你好,我是刘牌! 前言 好久没有更新Spring了,今天来分享一下Spring的事件监听机制,之前分享过一篇Spring监听机制的使用,今天从原理上进行解析,Spring的监听机制基于观察者模式,就是 ...
- 前端vue仿京东天猫简单好用的瀑布流瀑布流式布局列表组件waterfall
前端vue仿京东天猫简单好用的瀑布流瀑布流式布局列表组件waterfall, 下载完整代码请访问uni-app插件市场址:https://ext.dcloud.net.cn/plugin?id=130 ...
- 前端热力图组件heatMapGD中国地图 中国热力地图 广东省热力地图 广东省地图 地市选择
快速实现前端中国热力地图 广东省热力地图 广东省地图, 请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=12407 # china 广东省热力 ...
- JavaScript中this的绑定
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <path s ...
- 基准测试工具 --- BenchmarkDotNet
介绍 今天介绍一个非常强大的基于.Net 的基准测试工具BenchmarkDotNet. BenchmarkDotNet 已经被14300多个项目采用,包括非常多的知名开源项目,例如 dotnet/p ...
- ubuntu 终端选中黏贴、自带截图
鼠标选中 -- 复制 鼠标中键 -- 粘贴 注意,在tmux中,这个操作需要加上 Shift 键. PrtSc:截图整个桌面保存到Pictures Ctrl + PrtSc:截图整个桌面到剪贴板 Sh ...
- 【实践篇】推荐算法PaaS化探索与实践
作者:京东零售 崔宁 1. 背景说明 目前,推荐算法部支持了主站.企业业务.全渠道等20+业务线的900+推荐场景,通过梳理大促运营.各垂直业务线推荐场景的共性需求,对现有推荐算法能力进行沉淀和积累, ...
- 关于Linux下服务器MySQL的安装和搭建
一.检测是否已经安装Mysql 检测 # yum list installed | grep mysql //检查安装 # yum -y remove mysql-libs.x86_64 //卸载 / ...
- 因为此网站发送了 Google Chrome 无法处理的杂乱凭据
原文地址 thisisunsafe this is unsafe 这是不安全的,呵呵~ 具体描述 在chrome该页面上,直接键盘敲入这11个字符:thisisunsafe (鼠标点击当前页面任意位置 ...