python数据分析与可视化工具介绍-matplotlib库

众所周知,python的数据分析库主要是numpy,pandas,和matplotlib,而前面两个主要是数据处理工具库,最后一个才是真正的作图展示工具库。本节来学习一下matploatlib工具库的使用。

Matplotlib常用绘图函数

pyplot简介


matplotlib.pyplot
。matplotlib.pyplot是命令样式函数的集合,使matplotlib像MATLAB一样工作。每个pyplot函数对图形进行一些更改:例如,创建图形,在图形中创建绘图区域,在绘图区域中绘制一些线条,用标签装饰图形等,
导入包:import matplotlib.pyplot as plt.

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt# 如果没有指定横坐标x,则横坐标x会从0开始,自增。(0,1,2,3,4……)
# 如果我们只绘制一个值,该值就是一个点,我们需要指定marker来设置标记,否则该点不可见。
# plt.plot(10, marker="o")
# 绘制多个点。
plt.plot([1, 5, 8, 4, 6], marker=">")
#如果没有指定横坐标x,则横坐标x会从0开始(1,0)(5,1)……
# 显式指定横坐标。
plt.plot([1, 3, 5, 7, 9], [2, 4, 16, 8, 10], marker="o")
#绘制点(1,2)(3,4)……
plt.show()

折线图

# 可以一次性绘制多个图形。

# 格式字符串可以指定标记形状,颜色与线型。

plt.plot([1, 3], [2, 4], "r-o", [5, 8], [10, 2], "g--x")

下图如定义,红色实线圆点以及绿色虚线叉点。

支持中文

# 默认情况下,matplotlib使用的是西方字体(不支持中文的),
# 如果需要显式中文,可以将字体设置成支持中文的字体。"SimHei"——黑体
mpl.rcParams["font.family"] = "SimHei"
plt.plot([1, -2, 3], [5, -10, 6])
plt.title("中文标题")
# 当字体设置成支持中文的字体时,负号也会使用Unicode字符集的负号(不支持显式)。
# 我们需要恢复成ASCII字符集中的负号。当出现负号是正常显示
mpl.rcParams["axes.unicode_minus"]=False
# 设置字体的大小。
mpl.rcParams["font.size"] = 20

设置标签

last_year = np.random.randint(400, 500, 12)#此处为随机输出,结果可能不同
this_year = np.random.randint(400, 500, 12)
# plt.plot(range(1, 13), last_year, marker="o")
# plt.plot(range(1, 13), this_year, marker="o")
# 设置图例 1 在legend方法中,按顺序指定每次绘图的标签。
# plt.legend(["2017", "2018"])
# 2 在绘制(plot)图形时,指定label参数值,该参数值为图例需要显示的文本。
#range(1,13)左闭右开,可以取1,不可取13。
plt.plot(range(1, 13), last_year, marker="o", label="2017")
plt.plot(range(1, 13), this_year, marker="o", label="2018")

plt.plot(range(1, 13), last_year, marker="o", label="2017")

plt.plot(range(1, 13), this_year, marker="o", label="2018")

# 设置图例时,可以通过loc属性来设置图例显示的位置。如果没有显式指定,则参数值为右上角。

# loc属性可以指定为字符串,整数值。或者是一个元组(两个float值指定比例)此时,会根据图像比例计算

# loc=1表示显示在右上

# frameon参数用来设置图例是否显示边框。默认为True。

# title设置图例显示的标题。

# ncol参数用来设置图例显示的列数。(默认为1。)

plt.legend(loc=1, title="图例标题", ncol=2)

# ncol参数用来设置图例显示的列数。(默认为1。)

 

子图


matplotlib.pyplot.subplot(numRows, numCols, plotNum)

。图表的整个绘图区域被分成numRows行和numCols列;

。按照从左到右,从上到下的顺序对每个子区域进行编号;

。plotNum:编号,指定创建的 Axes 对象所在的区域。

matplotlib.pyplot.subplots(nrows=1,ncols=1,**fig_kw):创建一个带有多个axes(坐标系/绘图区)的图。
。图表的整个绘图区域被分成nrows行和ncols列。
。改方法返回画布对象和一个子图组成的列表。
。操作子图时可以使用列表下标的形式。

# 创建Figure对象,然后通过调用add_subplot增加绘图区域。
# 创建Figure对象。(画图必备的底层对象)
f = plt.figure()
# 调用add_subplot增加子绘图区域对象,返回AxesSubplot类型的对象。
# 三个参数,行数,列数,当前的绘图区域
ax = f.add_subplot(1, 2, 1)
# 调用AxesSubplot对象的plot方法,进行图形绘制。
# ax.plot([1, 5, 8], [10, -3, 6])
plt.plot([1, 5, 8], [10, -3, 6])
# ax = f.add_subplot(1, 2, 2)
ax = f.add_subplot(122, facecolor="g")
#云平台”122”加了引号,作为字符串可以,其实是(1,2,2)1行,2列,第2个为绿色。本地平台不加引号(1,2,2)或(122)
# ax.plot([10, 15, 28], [1, -33, 26])
plt.plot([10, 15, 28], [1, -33, 26])# 我们可以使用plt或者是AxesSubplot对象,调用plot方法进行绘制。
# 当我们使用plt绘制时,永远会在最后一次创建的子绘图区域上进行绘制。
# 如果当前没有子绘图区域,此时会创建一个。# 调整距离(绘图区域之间的距离以及绘图区域与边界间的距离)
plt.subplots_adjust(wspace=0.5)

 

柱形图 / 条形图

plt.bar 柱形图
plt.barh 条形图

输入:

# 柱形图,条形图适合比较数值的大小。

plt.bar(range(1, 11), np.random.randint(100, 200, 10))

# plt.barh(range(1, 11), np.random.randint(100, 200, 10))

plt.pie 饼图

输入:

# 饼图适合于表示比例大小。(数量不宜过多,否则会显得凌乱)

plt.pie([10, 20, 30, 40], labels=["A部门", "B部门", "C部门", "D部门"], explode=[0, 0, 0, 0.5], colors=["r", "g", "b", "y"],  autopct="%.2f", counterclock=False, startangle=90, shadow=True)

散点图 / 气泡图

散点图适合于用来显示与比较数据的分布状态。

  • marker 点的标记。
  • s 点的大小。
  • color 点的颜色。

color与s参数可以统一设置,也可以为每一个点单独设置。

输入:

# 散点图/气泡图适合表示数据整体的分布信息。

# 散点图可以表示两个维度,加上气泡大小,颜色,可以多表示两个维度。

# s(点的大小)与color(点的颜色)既可以统一制定,也可以单独制定。

size = [10, 20, 30, 40]

color = ["r", "g", "b", "y"]

plt.scatter(np.random.randint(0, 100, 100), np.random.randint(0, 100, 100),

            s=np.random.choice(size, 100), color=np.random.choice(color, 100))

直方图

直方图(histogram)可以看成是一种特殊的柱形图,用来将连续的数据频率(数量)进行离散化显示。在直方图中,数据被分割成若干区间,然后统计每个区间数据出现的频率(数量)。
我们可以通过plt.hist来绘制直方图。

  • bins:设置分割区间的数量。
  • normed:进行归一化显示。(概率密度)

输入:

# 直方图适合将连续值转换成离散值,方便分组统计数量。

plt.hist(np.random.randn(100), bins=10, normed=True)

# 返回的两个ndarray。

# 第一个ndarray表示每个桶中元素的数量。

# 第二个naarray表示每个桶的界限。(前闭后开,最后一个桶例外,两端都是闭区间。)

箱线图

箱线图也称盒须图。通过极值与Q1,Q2,Q3值来描述数据。通过箱线图,我们可以发现数据中的离群(异常)值。 箱线图的离群点定义为:Q3+1.5IQR和Q1-1.5IQR。其中IQR为两个四分位之间的距离。

输入:

# 箱线图适合分析离群值(异常值)。

x = np.random.normal(0, 10, size=1000)

plt.boxplot(x)

总结

Python语言有着无可比拟的简单性和灵活性,结合Matplotlib库,Python能够高效地进行数据分析并生成丰富多样的图表。利用简单代码的特性,我们能够快速呈现数据洞察,极大地提升了人工智能数据分析的效率。无论是折线图、柱状图还是散点图,Python都能够轻松实现,为数据分析师提供了无限的创造性展示方式。因此,Python及其可视化工具在数据科学领域的应用,显然为我们带来了巨大的便利和价值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/440653.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oracle中TRUNC()函数详解

文章目录 前言一、TRUNC函数的语法二、主要用途三、测试用例总结 前言 在Oracle中,TRUNC函数用于截取或截断日期、时间或数值表达式的部分。它返回一个日期、时间或数值的截断版本,根据提供的格式进行截取。 一、TRUNC函数的语法 TRUNC(date) TRUNC(d…

字符编码发展史5 — UTF-16和UTF-32

上一篇《字符编码发展史4 — Unicode与UTF-8》我们讲解了Unicode字符集与UTF-8编码。本篇我们将继续讲解字符编码的第三个发展阶段中的UTF-16和UTF-32。 2.3. 第三个阶段 国际化 2.3.2. Unicode的编码方式 2.3.2.2. UTF-16 UTF-16也是一种变长编码,对于一个Unic…

1、如何查看电脑已经连接上的wifi的密码?

在电脑桌面右下角的如下位置:双击打开查看当前连接上的wifi的名字:ZTE-kfdGYX-5G 按一下键盘上的win R 键, 输入【cmd】 然后,按一下【回车】。 输入netsh wlan show profile ”wifi名称” keyclear : 输入完成后,按一下回车&…

浏览器前端向后端提供服务

WEB后端向浏览器前端提供服务是最常见的场景,前端向后端的接口发起GET或者POST请求,后端收到请求后执行服务器端任务进行处理,完成后向前端发送响应。 那浏览器前端向后端提供服务是什么鬼? 说来话长,长话短说。我在人…

AFSim仿真系统 --- 系统简解_06 平台及平台类型

平台及平台类型 在AFSIM模拟中,当在被模拟的场景中定义平台时,创建仿真实体(如车辆和结构)。 AFSIM是一个用于创建仿真的对象框架,而平台封装了对象的原则身份或定义。 平台可以拥有系统(或平台部分&#x…

自然语言处理-语言转换

文章目录 一、语言模型二、统计语言模型1.含义与方法2.存在的问题 三、神经语言模型1.含义与方法2.one-hot编码3.词嵌入-word2vec4.模型的训练过程 四、总结 自然语言处理(NLP)中的语言转换方法主要涉及将一种形式的语言数据转换为另一种形式&#xff0c…

[Cocoa]_[初级]_[使用NSNotificationCenter作为目标观察者实现时需要注意的事项]

场景 在开发Cocoa程序时,由于界面是用Objective-C写的。无法使用C的目标观察者[1]类。如果是使用第二种方案2[2],那么也需要增加一个代理类。那么有没有更省事的办法? 说明 开发界面的时候,经常是需要在子界面里传递数据给主界面&#xff0…

Windows 搭建 Gitea

一、准备工作 1. 安装 Git:Gitea 依赖 Git 进行代码管理,所以首先需要确保系统中安装了 Git。 下载地址:https://git-scm.com/downloads/win 2. 安装数据库(可选) 默认情况下,Gitea 使用 SQLite 作为内…

Nginx的基础讲解之重写conf文件

一、Nginx 1、什么是nginx? Nginx(engine x)是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。 2、用于什么场景 Nginx适用于各种规模的网站和应用程序,特别是需要高并发处理和负载均衡的场…

微信步数C++

题目: 样例解释: 【样例 #1 解释】 从 (1,1) 出发将走 2 步,从 (1,2) 出发将走 4 步,从 (1,3) 出发将走 4 步。 从 (2,1) 出发将走 2 步,从 (2,2) 出发将走 3 步,从 (2,3) 出发将走 3 步。 从 (3,1) 出发将…

AI 激活新势能,中小企业全媒体营销绽放无限可能

什么是全媒体营销: 全媒体营销是一种利用多种媒介渠道进行品牌、产品或服务推广的营销策略。它结合了传统媒体(如电视、广播、报纸、杂志)和新媒体(如互联网、社交媒体、移动应用等)的优势,以实现信息的广…

力扣之1322.广告效果

题目: sql建表语句: Create table If Not Exists Ads (ad_id int,user_id int,action ENUM (Clicked, Viewed, Ignored) ); Truncate table Ads; insert into Ads (ad_id, user_id, action) values (1, 1, Clicked); insert into Ads (ad_id, use…

【重学 MySQL】五十八、文本字符串(包括 enum set)类型

【重学 MySQL】五十八、文本字符串(包括 enum set)类型 CHAR 和 VARCHARTEXT 系列ENUMSET示例注意事项 在 MySQL 中,文本字符串类型用于存储字符数据。这些类型包括 CHAR、VARCHAR、TEXT 系列(如 TINYTEXT、TEXT、MEDIUMTEXT 和 L…

基于SSM的仿win10界面的酒店管理系统

基于SSM的仿win10界面的酒店管理系统 运行环境: jdk1.8 eclipse tomcat7 mysql5.7 项目技术: jspssm(springspringmvcmybatis)mysql 项目功能模块:基础功能、房间类型、楼层信息、附属功能

AtCoder ABC373 A-D题解

ABC372 的题解没写是因为 D 是单调栈我不会(⊙︿⊙) 比赛链接:ABC373 总结&#xff1a;wssb。听说 E 很水&#xff1f;有时间我看看。 Problem A: Code #include <bits/stdc.h> using namespace std; int mian(){int ans0;for(int i1;i<12;i){string S;cin>&g…

[Offsec Lab] ICMP Monitorr-RCE+hping3权限提升

信息收集 IP AddressOpening Ports192.168.52.218TCP:22,80 $ nmap -p- 192.168.52.218 --min-rate 1000 -sC -sV -Pn PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.9p1 Debian 10deb10u2 (protocol 2.0) | ssh-hostkey: | 2048 de:b5:23:89:bb:9f:d4:1…

表面缺陷检测系统源码分享

表面缺陷检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vision …

Redis篇(缓存机制 - 基本介绍)(持续更新迭代)

目录 一、缓存介绍 二、经典三缓存问题 1. 缓存穿透 1.1. 简介 1.2. 解决方案 1.3. 总结 2. 缓存雪崩 2.1. 简介 2.2. 解决方案 2.3. 总结 3. 缓存击穿 3.1. 简介 3.2. 解决方案 3.3. 总结 4. 经典三缓存问题出现的根本原因 三、常见双缓存方案 1. 缓存预热 1…

国外媒体宣发:怎么在海外电子杂志版上发布新闻稿-时代周刊Time发布新闻稿

时代周刊Time发布新闻稿 在全球化的浪潮中&#xff0c;新闻媒体扮演着传递信息、引导舆论、塑造公众认知的重要角色。作为国际知名的媒体品牌&#xff0c;时代周刊&#xff08;Time&#xff09;以其独特的视角和深入的报道&#xff0c;为全球读者提供了一扇观察世界的窗口。近…

深度学习:GAN图像生成

GAN的诞生背景 诞生&#xff1a; 2014年由Ian Goodfellow提出 创新性&#xff1a; 无监督学习&#xff1a;GAN 提供了一种新的方法来进行无监督学习&#xff0c;即不需要对训练数据进行标注就可以学习到数据的潜在分布。对抗训练&#xff1a;通过引入对抗机制&#xff0c;G…