iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python数据可视化之用Matplotlib绘制常用图形
  • 368
分享到

Python数据可视化之用Matplotlib绘制常用图形

Matplotlib绘制常用图形PythonMatplotlib库 2022-06-02 22:06:56 368人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录一、散点图二、柱状图三、直方图四、扇形图总结一、散点图 散点图用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式。 特点:判断变量之间是否存在数量关联趋势,表示离群点

目录
  • 一、散点图
  • 二、柱状图
  • 三、直方图
  • 四、扇形图
  • 总结

一、散点图

散点图用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联总结坐标点的分布模式
特点:判断变量之间是否存在数量关联趋势,表示离群点的分布规律。

散点图绘制

plt.scatter(x,y) # 以默认的形状颜色绘制散点图

实例: 假设我们获取到了上海2020年5,10月份每天白天的最高气温(分别位于列表a、b),那么此时如何观察气温和随时间变化的某种规律。


# 绘制图形所需的数据
y_5 = [11,17,16,11,12,11,12,13,10,14,8,13,12,15,14,17,18,21,16,17,30,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,15,10,11,13,12,13,6]

代码如下:


import matplotlib.pyplot as plt

# 设置字体
plt.rcParams['font.sans-serif']=['SimHei'] # 替换sans_serif字体
plt.rcParams['axes.unicode_minus']=False # 解决坐标轴负数的负号显示问题

plt.figure(figsize=(12,5), dpi=100)

y_5 = [11,17,16,11,12,11,12,13,10,14,8,13,12,15,14,17,18,21,16,17,30,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,15,10,11,13,12,13,6]
x = range(1, 32)

plt.scatter(x, y_5, label='五月份')
plt.scatter(x, y_10, label='十月份')

# 增加标题,坐标描述
plt.xlabel("时间")
plt.ylabel("日期")
plt.title("气温和随时间变化的某种规律")

# 添加图形注释
plt.legend(loc='best')

plt.show()

在这里插入图片描述

上图虽然绘制出5、10月气温随日期的变化,但两者混在一起,不便于观察,现通过修改x数据,将10月的坐标点集体往坐标轴右侧移动,改进的代码如下:


import matplotlib.pyplot as plt

# 设置字体
plt.rcParams['font.sans-serif']=['SimHei'] # 替换sans_serif字体
plt.rcParams['axes.unicode_minus']=False # 解决坐标轴负数的负号显示问题

plt.figure(figsize=(12,5), dpi=100)

y_5 = [11,17,16,11,12,11,12,13,10,14,8,13,12,15,14,17,18,21,16,17,30,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,15,10,11,13,12,13,6]
x_5 = range(1, 32)
x_10 = range(33, 64)

plt.scatter(x_5, y_5, label='五月份')
plt.scatter(x_10, y_10, label='十月份')

# 刻度显示
x_t = list(x_4)+list(x_10)
x_l = ["5月{}号".fORMat(i) for i in x_4]
x_l += ["10月{}号".format(i-31) for i in x_10]
plt.xticks(x_t[::3], x_l[::3], rotation=45)

# 添加图形注释
plt.legend(loc='best')

plt.show()

在这里插入图片描述

二、柱状图

柱状图是用宽度相同的条形的高度或长短来表示数据多少的图形。柱状图可以横置或纵置,纵置时也称为柱形图。

特点

能够直观反映出各个数据的大小;
易于比较数据之间的差别。

柱状图绘制

plt.bar(x, width, align=‘center', **kwargs)


Parameters:    
x : sequence of Scalars.

width : scalar or array-like, optional, 柱状图的宽度

align: {‘center', ‘edge'}, optional, default: ‘center'
Alignment of the bars to the x coordinates:
‘center': Center the base on the x positions.
‘edge': Align the left edges of the bars with the x positions.
每个柱状图的位置对齐方式, 默认柱状图的中心与x坐标中心对齐

**kwargs:
color: 选择柱状图的颜色

水平条形图绘制

plt.barh(y, width) # 绘制以y为y轴位置的水平条形图

实例:假设我们获取到了2019年内地电影票房前20的电影(列表a)和电影票房数据(列表b),绘制柱状图直观地展示数据,代码如下:


import matplotlib.pyplot as plt
# 设置字体
plt.rcParams['font.sans-serif']=['SimHei'] # 替换sans_serif字体
plt.rcParams['axes.unicode_minus']=False # 解决坐标轴负数的负号显示问题

plt.figure(figsize=(15,10),dpi=100)
# 准备电影的名字以及电影的票房数据
movie_name = ["流浪地球","复仇者联盟4:终局之战","哪吒之魔童降世","疯狂的外星人",
              "飞驰人生","蜘蛛侠:英雄远征","扫毒2天地对决","烈火英雄","大黄蜂",
              "惊奇队长","比悲伤更悲伤的故事","哥斯拉2:怪兽之王","阿丽塔:战斗天使",
              "银河补习班","狮子王","反贪风暴4","熊出没","大侦探皮卡丘","新喜剧之王",
              "使徒行者2:谍影行动","千与千寻"]
y = [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,5.22]
# 放进横坐标的数字列表
x = range(len(movie_name))

# 画出条形图
# 颜色color参数表示条形图的顺序颜色,可循环
plt.bar(x, y, width=0.5, color=['b','r','g','y','c','m','y','k','c','g','g'])

# 修改刻度名称,并旋转90度
plt.xticks(x, movie_name, rotation=90)

# 展示图形
plt.show()

在这里插入图片描述


# 水平条形图
plt.figure(figsize=(15,10),dpi=100)
plt.barh(movie_name, y, color=['b','r','g','y','c','m','k'])
plt.show()

在这里插入图片描述

有时候为了公平起见,我们需要对比不同电影首日和首周的票房收入,让数据更有说服力。假设数据如下:


movie_name = ['雷神3:诸神黄昏','正义联盟','寻梦环游记']
first_day = [10587.6,10062.5,1275.7] # 首日票房
first_weekend=[36224.9,34479.6,11830] # 首周票房

绘制不同电影首日和首周票房的数据图,代码如下:


import matplotlib.pyplot as plt
# 设置字体
plt.rcParams['font.sans-serif']=['SimHei'] # 替换sans_serif字体
plt.rcParams['axes.unicode_minus']=False # 解决坐标轴负数的负号显示问题

plt.figure(figsize=(15,10),dpi=100)
# 准备数据
movie_name = ['雷神3:诸神黄昏','正义联盟','寻梦环游记']

# 构造首日票房,首周票房数据
first_day = [10587.6,10062.5,1275.7]
first_weekend=[36224.9,34479.6,11830]
x = range(len(movie_name))

# 绘制第一个柱状图
plt.bar(x, first_day, width=0.25)
# 接着绘制第二个柱状图
plt.bar([i+0.25 for i in x], first_weekend, width=0.25)

# 修改刻度名称
# 显示x轴中文,固定在首日和首周的中间位置
plt.xticks([i+0.125 for i in x], movie_name)

plt.show()

在这里插入图片描述

注意点

x轴坐标刻度显示位置的调整,既可以通过绘制图形时调整x数据,也可以通过绘制x轴刻度时调整刻度的方法来实现x轴刻度显示在两个柱状图中间。如果不做任何调整,它是默认与第一个柱状图中间对齐的。

三、直方图

直方图,形状类似柱状图却有着与柱状图完全不同的含义。直方图牵涉统计学的概念,首先要对数据进行分组,然后统计每个分组内数据元的数量。 在坐标系中,横轴标出每个组的端点,纵轴表示频数,每个矩形的高代表对应的频数,称这样的统计图为频数分布直方图。

特点:绘制连续性的数据,展示一组或者多组数据的分布情况,用于统计数据分布的特征。

相关概念

组数:在统计数据时,把数据按照不同的范围分成几个组,分成的组的个数称为组数;
组距:每一组两个端点的差。

直方图绘制

plt.hist(x,bins=None)
绘制以x为数值,bins为组数,组数 = 极差/组距

实例:假设我们获取到了一些电影的时长,绘制直方图展示电影时长的分布情况,代码如下:


import matplotlib.pyplot as plt
# 设置字体
plt.rcParams['font.sans-serif']=['SimHei'] # 替换sans_serif字体
plt.rcParams['axes.unicode_minus']=False # 解决坐标轴负数的负号显示问题

plt.figure(figsize=(15,10),dpi=100)
# 准备数据,电影时长
time =[131,  98, 125, 131, 124, 139, 131, 117, 128, 108, 
       135, 138, 131, 102, 107, 114, 119, 128, 121, 142, 
       127, 130, 124, 101, 110, 116, 117, 110, 128, 128, 
       115,  99, 136, 126, 134,  95, 138, 117, 111, 78, 
       132, 124, 113, 150, 110, 117,  86,  95, 144, 105, 
       126, 130,126, 130, 126, 116, 123, 106, 112, 138, 
       123,  86, 101,  99, 136,123, 117, 119, 105, 137, 
       123, 128, 125, 104, 109, 134, 125, 127,105, 120, 
       107, 129, 116, 108, 132, 103, 136, 118, 102, 120, 
       114,105, 115, 132, 145, 119, 121, 112, 139, 125, 
       138, 109, 132, 134,156, 106, 117, 127, 144, 139, 
       139, 119, 140,  83, 110, 102,123,107, 143, 115, 
       136, 118, 139, 123, 112, 118, 125, 109, 119, 133, 
       112, 114, 122, 109, 106, 123, 116, 131, 127, 115, 
       118, 112, 135,115, 146, 137, 116, 103, 144,  83, 
       123, 111, 110, 111, 100, 154,136, 100, 118, 119, 
       133, 134, 106, 129, 126, 110, 111, 109, 141, 120, 
       117, 106, 149, 122, 122, 110, 118, 127, 121, 114, 
       125, 126,114, 140, 103, 130, 141, 117, 106, 114, 
       121, 114, 133, 137,  92,121, 112, 146,  97, 137, 
       105,  98, 117, 112,  81,  97, 139, 113,134, 106, 
       144, 110, 137, 137, 111, 104, 117, 100, 111, 101, 
       110, 105, 129, 137, 112, 120, 113, 133, 112,  83, 
       94, 146, 133, 101, 131, 116, 111, 84, 137, 115, 
       122, 106, 144, 109, 123, 116, 111,111, 133, 150]

# 组距
bins = 2
# 组数,极差/组距
groups = int((max(time) - min(time)) / 2)

# 绘制直方图
plt.hist(time, groups)

# 指定x轴刻度的范围
plt.xticks(list(range(min(time), max(time)))[::2])

# 添加坐标描述
plt.xlabel('电影时长大小')
plt.ylabel('电影的数量')

# 增加网格显示
plt.grid(True, linestyle='--', alpha=0.5)
plt.show()

在这里插入图片描述

四、扇形图

扇形图,用整个圆表示总数,用圆内各个扇形的大小表示各部分数量占总数的百分数。

扇形图绘制

plt.pie(x, explode=None, labels=None)

x:扇形数据
explode:设置某几个分块是否要分离饼图
labels:每块扇形标签
autopct:百分比数据标签
shadow:是否显示阴影
plt.pie()有3个返回值:
patches:绘制饼图每一块的对象
texts:文本的列表
autotexts:百分比的文本列表

实例:假设我们获取到了一些电影的排片数据,绘制扇形图展示电影的排片占比情况,代码如下:


import matplotlib.pyplot as plt
# 设置字体
plt.rcParams['font.sans-serif']=['SimHei'] # 替换sans_serif字体
plt.rcParams['axes.unicode_minus']=False # 解决坐标轴负数的负号显示问题

# 饼图绘制
plt.figure(figsize=(15, 10), dpi=100)
# 电影排片数据
movie_name = ['雷神3:诸神黄昏','正义联盟','东方快车谋杀案','寻梦环游记','全球风暴','降魔传','追捕','七十七天','密战','狂兽','其它']
place_count = [60605,54546,45819,28243,13270,9945,7679,6799,6101,4621,20105]

# 绘制扇形图
plt.pie(place_count, labels=movie_name, autopct="%1.2f%%")

# 指定显示的pie是正圆
plt.axis('equal')

# 设置图例和标题
plt.legend(loc="best")
plt.title("排片占比情况")

plt.show()

在这里插入图片描述

扇形图优化的手段添加阴影,分离特定数据等:


import matplotlib.pyplot as plt
# 设置字体
plt.rcParams['font.sans-serif']=['SimHei'] # 替换sans_serif字体
plt.rcParams['axes.unicode_minus']=False # 解决坐标轴负数的负号显示问题

plt.figure(figsize=(15, 10), dpi=100)
movie_name = ['雷神3:诸神黄昏','正义联盟','东方快车谋杀案','寻梦环游记','全球风暴','降魔传','追捕','七十七天','密战','狂兽','其它']
place_count = [60605,54546,45819,28243,13270,9945,7679,6799,6101,4621,20105]

# 绘制扇形图,添加阴影效果,并让占比最大的雷神3分离
explode = [0.1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
res = plt.pie(place_count, labels=movie_name, explode=explode, autopct="%1.2f%%", shadow=True)
patches, texts, autotexts = res
print(patches)  # 表示每个扇形的对象
print(texts)  # 每个文本对象
print(autotexts)  # 每个百分比对象

# 指定显示的pie是正圆
plt.axis('equal')

# 设置图例和标题
plt.legend(loc="best")
plt.title("排片占比情况")

plt.show()

打印的扇形图返回值:

在这里插入图片描述

优化后的扇形图:

在这里插入图片描述

总结

本文讲述了使用Matplotlib绘制散点图、柱状图、直方图、扇形图的基本操作。

到此这篇关于python数据可视化之用Matplotlib绘制常用图形的文章就介绍到这了,更多相关Matplotlib绘制图形内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python数据可视化之用Matplotlib绘制常用图形

本文链接: https://www.lsjlt.com/news/10865.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python数据可视化之怎么用Matplotlib绘制常用图形
    这篇文章主要介绍Python数据可视化之怎么用Matplotlib绘制常用图形,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、散点图散点图用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或...
    99+
    2023-06-15
  • Python matplotlib数据可视化图绘制
    目录前言1.折线图2.直方图3.箱线图4.柱状图5.饼图6.散点图前言 导入绘图库: import matplotlib.pyplot as plt import numpy as ...
    99+
    2024-04-02
  • Python数据可视化实践之使用Matplotlib绘制图表
    目录一. Matplotlib 简介二. 安装与导入三. 基本绘图操作1. 折线图2. 柱状图3. 饼图四. 图表定制五. 多图展示六. 总结一. Matplotlib 简介 Mat...
    99+
    2023-05-18
    Python Matplotlib绘制图表 Python Matplotlib
  • Python数据可视化之使用matplotlib绘制简单图表
    目录一、绘制折线图二、绘制柱形图或堆积图形三、绘制条形图或堆积条形图 四、绘制堆积面积图五、绘制直方图六、绘制饼图或者圆环图 七、绘制散点图或气泡图八、绘制箱形图...
    99+
    2024-04-02
  • Python matplotlib可视化之绘制韦恩图
    目录本文速览1、matplotlib_venn(1)2组数据venn图(2)3组数据venn图2、pyvenn2组数据venn3组数据venn4组数据venn5组数据venn6组数据...
    99+
    2024-04-02
  • 【Matplotlib绘制图像目录】Python数据可视化之美
    前言 大家好,我是阿光。 本专栏整理了《Matplotlib绘制图像大全》,内包含了各种常见的绘图方法,以及Matplotlib各种内置函数的使用方法,帮助我们快速便捷的绘制出数据图像。 正在更...
    99+
    2023-08-31
    matplotlib python pandas numpy scipy
  • Python利用matplotlib模块数据可视化绘制3D图
    目录前言1 matplotlib绘制3D图形2 绘制3D画面图2.1 源码2.2 效果图3 绘制散点图3.1 源码3.2 效果图4 绘制多边形4.1 源码4.2 效果图5 三个方向有...
    99+
    2024-04-02
  • Python Matplotlib数据可视化绘图之(三)————散点图
    文章目录 前言一、所用到的模块二、单一颜色的普通不分组散点图1.示例数据如下2.代码如下2.1 代码如下(示例):2.1.1 Case1: 三、多种颜色的普通不分组散点图1....
    99+
    2023-10-26
    matplotlib python 开发语言 pycharm numpy
  • Python数据可视化之绘制柱状图和条形图
    目录一、实验目的:二、实验内容:三、实验过程(附结果截图):一、实验目的: 1.掌握Python中柱状图、条形图绘图函数的使用 2.利用上述绘图函数实现数据可视化 二、实验内容: 1...
    99+
    2024-04-02
  • python数据可视化matplotlib绘制折线图示例
    目录plt.plot()函数各参数解析各参数具体含义为:x,ycolorlinestylelinewidthmarker关于marker的参数plt.plot()函数各参数解析 pl...
    99+
    2024-04-02
  • 基于python的matplotlib、numpy库实现的图形绘制(数据可视化)
    一、sin,cos函数 1.题目要求 编写程序,绘制正弦曲线和余弦曲线。 提示:利用numpy的linspace()、sin()或cos()函数生成样本数据、正弦或余弦值。 2.函数讲解及代码 import matplotlib....
    99+
    2023-10-06
    python numpy matplotlib
  • Python可视化Matplotlib介绍和简单图形的绘制
    目录1. 什么是Matplotlib2. 实现一个最简单的Matplotlib画图以折线图为例2.1 matplotlib.pyplot模块2.2 图形绘制流程1.创建画布 – pl...
    99+
    2024-04-02
  • python用matplotlib可视化绘图详解
    目录1、Matplotlib 简介2、Matplotlib图形绘制1)折线图2)柱状图3)条形图3)饼图4)散点图5)直方图6)箱型图7)子图1、Matplotlib 简介 Matp...
    99+
    2024-04-02
  •  python如何用matplotlib可视化绘图
    本篇文章为大家展示了 python如何用matplotlib可视化绘图,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1、Matplotlib 简介Matplotlib 简介:Matplot...
    99+
    2023-06-26
  • Python可视化神器pyecharts之绘制箱形图
    目录箱形图概念 用处箱形图系列模板第一个箱形图复杂一点的图例箱形图 概念 后面的图形都是一些专业的统计图形,当然也会是我们可视化的对象。 箱形图(Box-plot)又称为盒...
    99+
    2024-04-02
  • Python数据可视化之环形图
    目录1.引言2.方式一:饼图形式3.方式二:条形图形式1.引言 环形图(圆环)在功能上与饼图相同,整个环被分成不同的部分,用各个圆弧来表示每个数据所占的比例值。但其中心的空白可用于显...
    99+
    2024-04-02
  • Python matplotlib可视化绘图详解
    目录一、绘制线性图形二、绘制柱状图形三、绘制直方图四、绘制散点图五、绘制极坐标六、绘制饼图总结一、绘制线性图形 执行如下代码 import matplotlib.pyplot a...
    99+
    2024-04-02
  • python使用Matplotlib绘制多种常见图形
    目录柱状图水平绘制柱状图多个柱状图叠加型柱状图散点图气泡图直方图箱线图添加文字描述添加文字描述 方法二多个图形描绘 subplots使用Pandas 绘图Matplotlib官网&n...
    99+
    2024-04-02
  • python数据可视化之饼状图怎么绘制
    这篇文章主要介绍“python数据可视化之饼状图怎么绘制”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“python数据可视化之饼状图怎么绘制”文章能帮助大家解决问题。Pyplot 是 Matplot...
    99+
    2023-07-02
  • Python数据可视化之简单折线图的绘制
    目录创建RandomWalk类选择方向绘制随机漫步图模拟多次随机漫步给点着色突出起点和终点增加点数调整尺寸以适用屏幕创建RandomWalk类 为模拟随机漫步,我们将创建一个Rand...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作