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

news2024/11/26 3:47:24

众所周知,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.coloradmin.cn/o/2195052.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kubernetes: kube-proxy 和 CNI 是如何协作的?

在 Kubernetes 中,kube-proxy 和 CNI 插件协同工作,确保集群内 Pod 之间的互联互通。 Kube-proxy & CNI 如上图所示,假设我们有一个类型为 ClusterIP 的 Service,它对应两个位于不同节点的 Pod。 当我们从 Pod A 对该 Servi…

C语言的柔性数组

目录 柔性数组1.柔性数组的特点:2.柔性数组的使用3.柔性数组的优势 柔性数组 也许你从来没有听说过柔性数组(flexible array)这个概念,但是它确实是存在的。 C99 中,结构体中的最后⼀个元素允许是未知⼤⼩的数组&…

MFC工控项目实例二十三模拟量输入设置界面

承接专栏《MFC工控项目实例二十二主界面计数背景颜色改变》 1、在SenSet.h文件中添加代码 #include "BtnST.h" #include "ShadeButtonST.h"/ // SenSet dialogclass SenSet : public CDialog { // Construction public:SenSet(CWnd* pParent NULL); //…

aws(学习笔记第三课) AWS CloudFormation

aws(学习笔记第三课) 使用AWS CloudFormation 学习内容: AWS CloudFormation的模板解析使用AWS CloudFormation启动ec2 server 1. AWS CloudFormation 的模版解析 CloudFormation模板结构 CloudFormation是AWS的配置管理工具,属于Infrastructure as Co…

黑马javaWeb笔记重点备份2:mybatis基础(注解方式)、数据库连接池概念、lombok使用

以下均来自:【黑马程序员JavaWeb开发教程,实现javaweb企业开发全流程(涵盖SpringMyBatisSpringMVCSpringBoot等)】 https://www.bilibili.com/video/BV1m84y1w7Tb/?p75&share_sourcecopy_web&vd_source9332b8fc5ea8d349a…

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

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

vivado 使用 UltraFast 设计方法系统级设计流程图

下图展示了 Vivado Design Suite 中包含的各种设计步骤以及特性。您可以通过赛灵思 Documentation Navigator“Design Hub View” 访问该图的互动版,单击每个步骤将链接至相关资源。 理解 UltraFast 设计方法概念 在设计开始初期就采取正确方法非常重要&#xf…

数据结构与算法笔记:概念与leetcode练习题

1、数组Array 时间复杂度 数组访问:O(1) 数组搜索:O(N) 数组插入:O(N) 数组删除:O(N) 特点 适合读,不适合写 数组常用操作 # 1、创建数组 a [] # 2、尾部添加元素 a.append(1) a.append(2) a.append(3) # 3、…

《Linux从小白到高手》理论篇:Linux的系统环境管理

List item 值此国庆佳节,深宅家中,闲来无事,就多写几篇博文。本篇详细深入介绍Linux的系统环境管理。 环境变量 linux系统下,如果你下载并安装了应用程序,很有可能在键入它的名称时出现“command not found”的提示…

大语言模型(LLM)综述

大语言模型(LLM)综述 正如缩放定律(Scaling Laws )所预测的那样, LLM 的通用语言理解和生成能力是通过在大量文本数据上训练数十亿个模型参数获得的。基于 Transformer 的大型语言模型 (LLM) 的最新进展(在 Web 规模的…

系统架构设计师⑧:软件工程-软件开发方法与模型

系统架构设计师⑧:软件工程-软件开发方法与模型 软件开发方法 常用的软件开发方法主要分为3类: 结构化法(比如C语言开发-面向过程), 面向对象法(比如C或者JAVA开发-面向对象), 面向…

永洪科技第八届全国用户大会,释放数据价值!

永洪科技,作为“致力于打造全球领先的数据技术厂商”,将于【2024年11月1日】,在【北京东方君悦大酒店】盛大召开“第八届永洪科技全国用户大会”。旨在通过AIBI的深入融合,更加智能且精准的展现及预测未来的数据走向,展…

10.7学习

1.安全认证 ●Session 认证中最常用的一种方式,也是最简单的。存在多节点session丢失的情况,可通过nginx粘性Cookie和Redis集中式Session存储解决 ●HTTP Basic Authentication 服务端针对请求头中base64加密的Authorization 和用户名和密码进行校验。…

分层解耦-03.IOCDI-入门

一. IOC&DI入门 二.控制转移注解Component 因为dao和service接口的实现类对象需要传入到service和controller中,因此需要将dao和service代码加上Component注解,使之实现控制反转,将实现类对象交给IOC容器管理,成为IOC容器中…

字符编码发展史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…

构建快速应用,国内低代码开发平台的选择指南

本文盘点10款主流低代码开发平台,包括ZohoCreator、阿里宜搭等,分析其特点及应用场景。各平台各具优势,适用于不同企业和业务需求,建议企业根据自身需求和技术水平试用后选择。 一、Zoho Creator Zoho Creator 是一个低代码开发平…

软件设计之SSM(8)

软件设计之SSM(8) 路线图推荐: 【Java学习路线-极速版】【Java架构师技术图谱】 尚硅谷新版SSM框架全套视频教程,Spring6SpringBoot3最新SSM企业级开发 资料可以去尚硅谷官网免费领取 学习内容: Mybatis 数据输出多表映射动态语句 1、数…

【Linux】基础IO(文件描述符、缓冲区、重定向)

🌈个人主页:秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343🔥 系列专栏:https://blog.csdn.net/qinjh_/category_12625432.html 目录 前言 C文件IO相关操作 系统文件I/O open open函数返回值 文件描述符fd re…

Rspamd:开源垃圾邮件过滤系统

Rspamd 是一个开源垃圾邮件过滤和电子邮件处理框架,旨在根据各种规则评估消息,包括正则表达式、统计分析以及与 URL 黑名单等自定义服务的集成。 系统会分析每封邮件并做出判定,MTA可据此采取进一步行动,例如拒绝邮件或添加垃圾邮…

【GeekBand】C++设计模式笔记7_Bridge_桥接模式

1. “单一职责”模式 在软件组件的设计中,如果责任划分的不清晰,使用继承得到的结果往往是随着需求的变化,子类急剧膨胀,同时充斥着重复代码,这时候的关键是划清责任。典型模式 DecoratorBridge 2. Bridge 桥接模式…