数据处理-Matplotlib 绘图展示

在这里插入图片描述

文章目录

    • 1. Matplotlib 简介
    • 2. 安装
    • 3. Matplotlib Pyplot
    • 4. 绘制图表
      • 1. 折线图
      • 2. 散点图
      • 3. 柱状图
      • 4. 饼图
      • 5. 直方图
    • 5. 中文显示

1. Matplotlib 简介

Matplotlib 是 Python 的绘图库,它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。

Matplotlib 可以用来绘制各种静态,动态,交互式的图表。

Matplotlib 是一个非常强大的 Python 画图工具,我们可以使用该工具将很多数据通过图表的形式更直观的呈现出来。

Matplotlib 可以绘制线图、散点图、等高线图、条形图、柱状图、3D 图形、甚至是图形动画等等。

2. 安装

升级 pip:

python3 -m pip install -U pip

安装 matplotlib 库:

python3 -m pip install -U matplotlib

安装完成后,我们就可以通过 import 来导入 matplotlib 库:

import matplotlibprint(matplotlib.__version__)

image-20240713135518711

3. Matplotlib Pyplot

Pyplot 是 Matplotlib 的子库,提供了和 MATLAB 类似的绘图 API。

Pyplot 是常用的绘图模块,能很方便让用户绘制 2D 图表。

Pyplot 包含一系列绘图函数的相关函数,每个函数会对当前的图像进行一些修改,例如:给图像加上标记,生新的图像,在图像中产生新的绘图区域等等。

使用的时候,我们可以使用 import 导入 pyplot 库,并设置一个别名 plt

import matplotlib.pyplot as plt

这样我们就可以使用 plt 来引用 Pyplot 包的方法。

以下是一些常用的 pyplot 函数:

  • plot():用于绘制线图和散点图
  • scatter():用于绘制散点图
  • bar():用于绘制垂直条形图和水平条形图
  • hist():用于绘制直方图
  • pie():用于绘制饼图
  • imshow():用于绘制图像
  • subplots():用于创建子图

4. 绘制图表

1. 折线图

import  matplotlib.pyplot as plt
#绘制简单的图表
input_values = [1,2,3,4,5]
squares = [1,4,9,16,25]
plt.plot(input_values,squares,linewidth=1)
plt.show()

image-20240713140220406

绘制过程中,我们可以自定义线的样式,包括线的类型、颜色和大小等

1.线的类型可以使用 linestyle 参数来定义,简写为 ls

类型简写说明
‘solid’ (默认)‘-’实线
‘dotted’‘:’点虚线
‘dashed’‘–’破折线
‘dashdot’‘-.’点划线
‘None’‘’ 或 ’ ’不画线
import matplotlib.pyplot as plt
import numpy as npypoints = np.array([6, 2, 13, 10])plt.plot(ypoints, linestyle = 'dotted')
plt.show()

2.线的颜色可以使用 color 参数来定义,简写为 c

颜色标记描述
‘r’红色
‘g’绿色
‘b’蓝色
‘c’青色
‘m’品红
‘y’黄色
‘k’黑色
‘w’白色

这里是基础的简单颜色,可以自定义颜色,查一下html颜色值即可

import matplotlib.pyplot as plt
import numpy as npypoints = np.array([6, 2, 13, 10])plt.plot(ypoints, color = 'r')
plt.show()

3.线的宽度可以使用 linewidth 参数来定义,简写为 lw,值可以是浮点数,如:12.05.67 等。

import matplotlib.pyplot as plt
import numpy as npypoints = np.array([6, 2, 13, 10])plt.plot(ypoints, linewidth = '12.5')
plt.show()

4.多条线的绘制

plot() 方法中可以包含多对 x,y 值来绘制多条线。

import matplotlib.pyplot as plt
import numpy as npy1 = np.array([3, 7, 5, 9])
y2 = np.array([6, 2, 13, 10])plt.plot(y1)
plt.plot(y2)plt.show()

2. 散点图

使用 pyplot 中的 scatter() 方法来绘制散点图。

scatter() 方法语法格式如下:

matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, *, edgecolors=None, plotnonfinite=False, data=None, **kwargs)
import numpy as np
import matplotlib.pyplot as plt
from pylab import *
plt.rcParams['figure.figsize']=(2,2)
x=np.random.normal(size=100)
y=np.random.normal(size=100)
plt.scatter(x,y)
plt.show()

image-20240713141111401

注:绘制折线图、散点图时,如果想给坐标定义一些不一样的标记,就可以使用 plot() 方法的 marker 参数来定义。

import matplotlib.pyplot as plt
import numpy as npypoints = np.array([1,3,4,5,8,9,6,1,3,4,5,2,4])plt.plot(ypoints, marker = 'o')
plt.show()

image-20240713140838327

3. 柱状图

可以使用 pyplot 中的 bar() 方法来绘制柱形图。

bar() 方法语法格式如下:

matplotlib.pyplot.bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs)

参数说明:

x:浮点型数组,柱形图的 x 轴数据。

height:浮点型数组,柱形图的高度。

width:浮点型数组,柱形图的宽度。

bottom:浮点型数组,底座的 y 坐标,默认 0。

align:柱形图与 x 坐标的对齐方式,‘center’ 以 x 位置为中心,这是默认值。 ‘edge’:将柱形图的左边缘与 x 位置对齐。要对齐右边缘的条形,可以传递负数的宽度值及 align=‘edge’。

**kwargs::其他参数。

import numpy as np
import matplotlib.pyplot as plt
# 创建一个点数为 8 x 6 的窗口, 并设置分辨率为 80像素/每英寸
plt.figure(figsize=(10, 10), dpi=80)
# 柱子总数
N = 10
# 包含每个柱子对应值的序列
values = (56796,42996,24872,13849,8609,5331,1971,554,169,26)
# 包含每个柱子下标的序列
index = np.arange(N)
# 柱子的宽度
width = 0.45
# 绘制柱状图, 每根柱子的颜色为紫罗兰色
p2 = plt.bar(index, values, width, label="num", color="#87CEFA")
# 设置横轴标签
plt.xlabel('clusters')
# 设置纵轴标签
plt.ylabel('number of reviews')
# 添加标题
plt.title('Cluster Distribution')
# 添加纵横轴的刻度
plt.xticks(index, ('mentioned1cluster', 'mentioned2cluster', 'mentioned3cluster', 'mentioned4cluster', 'mentioned5cluster', 'mentioned6cluster', 'mentioned7cluster', 'mentioned8cluster', 'mentioned9cluster', 'mentioned10cluster'))
# plt.yticks(np.arange(0, 10000, 10))
# 添加图例
plt.legend(loc="upper right")
plt.show()

image-20240713141437729

4. 饼图

可以使用 pyplot 中的 pie() 方法来绘制饼图。

pie() 方法语法格式如下:

matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=0, radius=1, counterclock=True, wedgeprops=None, textprops=None, center=0, 0, frame=False, rotatelabels=False, *, normalize=None, data=None)[source]

参数说明:

  • x:浮点型数组或列表,用于绘制饼图的数据,表示每个扇形的面积。
  • explode:数组,表示各个扇形之间的间隔,默认值为0。
  • labels:列表,各个扇形的标签,默认值为 None。
  • colors:数组,表示各个扇形的颜色,默认值为 None。
  • autopct:设置饼图内各个扇形百分比显示格式,%d%% 整数百分比,%0.1f 一位小数, %0.1f%% 一位小数百分比, %0.2f%% 两位小数百分比。
  • labeldistance:标签标记的绘制位置,相对于半径的比例,默认值为 1.1,如 <1则绘制在饼图内侧。
  • pctdistance::类似于 labeldistance,指定 autopct 的位置刻度,默认值为 0.6。
  • shadow::布尔值 True 或 False,设置饼图的阴影,默认为 False,不设置阴影。
  • radius::设置饼图的半径,默认为 1。
  • startangle::用于指定饼图的起始角度,默认为从 x 轴正方向逆时针画起,如设定 =90 则从 y 轴正方向画起。
  • counterclock:布尔值,用于指定是否逆时针绘制扇形,默认为 True,即逆时针绘制,False 为顺时针。
  • wedgeprops:字典类型,默认值 None。用于指定扇形的属性,比如边框线颜色、边框线宽度等。例如:wedgeprops={‘linewidth’:5} 设置 wedge 线宽为5。
  • textprops:字典类型,用于指定文本标签的属性,比如字体大小、字体颜色等,默认值为 None。
  • center:浮点类型的列表,用于指定饼图的中心位置,默认值:(0,0)。
  • frame:布尔类型,用于指定是否绘制饼图的边框,默认值:False。如果是 True,绘制带有表的轴框架。
  • rotatelabels:布尔类型,用于指定是否旋转文本标签,默认为 False。如果为 True,旋转每个 label 到指定的角度。
  • data:用于指定数据。如果设置了 data 参数,则可以直接使用数据框中的列作为 x、labels 等参数的值,无需再次传递。
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm  # 字体管理器
# 准备字体
my_font = fm.FontProperties(fname="C:\Windows\Fonts\simkai.ttf")
# 准备数据
data = [0.16881, 0.14966, 0.07471, 0.06992, 0.04762, 0.03541, 0.02925, 0.02411, 0.02316, 0.01409, 0.36326]
# 准备标签
labels = ['Java', 'C', 'C++', 'Python', 'Visual Basic.NET', 'C#', 'PHP', 'JavaScript', 'SQL', 'Assembly langugage','其他']
# 将排列在第4位的语言(Python)分离出来
explode = [0, 0, 0, 0.7, 0, 0, 0, 0, 0, 0, 0]
# 使用自定义颜色
colors = ['red', 'pink', 'magenta', 'purple', 'orange']
# 将横、纵坐标轴标准化处理,保证饼图是一个正圆,否则为椭圆
plt.axes(aspect='equal')
# 控制X轴和Y轴的范围(用于控制饼图的圆心、半径)
plt.xlim(0, 8)
plt.ylim(0, 8)
# 不显示边框
plt.gca().spines['right'].set_color('none')
plt.gca().spines['top'].set_color('none')
plt.gca().spines['left'].set_color('none')
plt.gca().spines['bottom'].set_color('none')
# 绘制饼图
plt.pie(x=data,  # 绘制数据labels=labels,  # 添加编程语言标签explode=explode,  # 突出显示Pythoncolors=colors,  # 设置自定义填充色autopct='%.3f%%',  # 设置百分比的格式,保留3位小数pctdistance=0.8,  # 设置百分比标签和圆心的距离labeldistance=1.0,  # 设置标签和圆心的距离startangle=180,  # 设置饼图的初始角度center=(4, 4),  # 设置饼图的圆心(相当于X轴和Y轴的范围)radius=3.8,  # 设置饼图的半径(相当于X轴和Y轴的范围)counterclock=False,  # 是否为逆时针方向,False表示顺时针方向wedgeprops={'linewidth': 1, 'edgecolor': 'green'},  # 设置饼图内外边界的属性值textprops={'fontsize': 12, 'color': 'black','fontproperties':my_font},  # 设置文本标签的属性值frame=1)  # 是否显示饼图的圆圈,1为显示
# 不显示X轴、Y轴的刻度值
plt.xticks(())
plt.yticks(())
# 添加图形标题
plt.title('2018年8月的编程语言指数排行榜',fontproperties=my_font)
# 显示图形
plt.show()

image-20240713141651642

5. 直方图

可以使用 pyplot 中的 hist() 方法来绘制直方图。

hist() 方法是 Matplotlib 库中的 pyplot 子库中的一种用于绘制直方图的函数。

hist() 方法可以用于可视化数据的分布情况,例如观察数据的中心趋势、偏态和异常值等。

hist() 方法语法格式如下:

matplotlib.pyplot.hist(x, bins=None, range=None, density=False, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False, **kwargs)
import numpy as np
import matplotlib.pyplot as plt
from pylab import *
x=np.random.normal(size=1000)
plt.hist(x,bins=10)  #bins参数设置分桶数目
plt.show()

image-20240713141753930

5. 中文显示

Matplotlib 中文显示不是特别友好,要在 Matplotlib 中显示中文,我们可以通过两个方法:

  • 设置 Matplotlib 的字体参数。
  • 下载使用支持中文的字体库。

在未设置字体,默认情况显示如下,中文部分不能正常显示:

img

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

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

相关文章

如何定义版本号--语义化版本

前言 版本号(version number)是版本的标识号。每一个操作系统&#xff08;或广义的讲&#xff0c;每一个软件&#xff09;都有一个版本号。版本号能使用户了解所使用的操作系统是否为最新的版本以及它所提供的功能与设施。 例如在Python项目依赖中会看到 requires-python &q…

zdppy+onlyoffice实现重命名文件的功能

参考文档&#xff1a;https://api.onlyoffice.com/zh/editors/rename 步骤图&#xff1a; 实现步骤&#xff1a; 用户在 文档编辑器中为文档指定一个新名称。 文档编辑器 将文档的新名称通知给 文档管理器。 文档管理器 将文档的新名称发送到 文档存储服务&#xff0c;在这里…

使用jsencrypt在web前端对字符串进行Ras加密

话不多说&#xff0c;上代码 实例代码 下面方法&#xff0c;在网页中先引入jsencrypt.min.js。然后调用ToEncrypt方法示例输出加密&#xff0c;解密后的结果。 <script src"/js/jsencrypt.min.js"></script> //加密测试function ToEncrypt(){// 假设…

synchronized关键字详解

文章目录 synchronized使用示例实现原理锁的升级synchronized与可见性synchronized与原子性synchronized与有序性 synchronized synchronized是Java提供的关键字译为同步&#xff0c;是Java中用于实现线程同步的一种机制。它可以确保在同一时间只有一个线程能够执行某段代码&a…

【Python系列】数字的bool值

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

泌尿系统疾病病人的护理

一、泌尿系统疾病病人的一般护理要点 对于泌尿系统疾病的病人&#xff0c;护理是至关重要的。首先&#xff0c;要密切观察病人的生命体征&#xff0c;包括体温、脉搏、呼吸和血压。 饮食方面&#xff0c;应根据病人的具体病情进行调整。例如&#xff0c;对于有水肿的病人&#…

js登陆验证

当开始制作网页时&#xff0c;就需要做一个判断&#xff0c;不管在第几页进入&#xff0c;都要加一个登陆验证&#xff0c;只有用户有账号&#xff0c;才能进入网页&#xff0c;浏览网页信息。下面就来看一下&#xff0c;使用JavaScript几行代码实现登陆验证。 首先 登录页是i…

vue父组件样式穿透修改子组件样式

在 Vue 中&#xff0c;使用父组件样式穿透到子组件通常不推荐&#xff0c;因为它破坏了样式的作用域隔离&#xff0c;但如果你确实需要这样做&#xff0c;可以使用深度选择器。Vue 2 使用 ::v-deep&#xff0c;而 Vue 3 使用 /deep/ 或 ::v-deep 都可以。 以下是使用深度选择器…

MVC之 IHttpModule管道模型《二》

》》》注意&#xff1a;在http请求的处理过程中&#xff0c;只能调用一个HttpHandler&#xff0c;但可以调用多个HttpModule。 HTTP Modules ASP.NET请求处理过程是基于管道模型的&#xff0c;这个管道模型是由多个HttpModule和HttpHandler组成&#xff0c;当请求到达HttpMod…

java-mysql-insert 操作

在 Java 中&#xff0c;使用 JDBC 插入数据到 MySQL 数据库是非常常见的操作。以下是一个详细的步骤&#xff0c;展示如何使用 JDBC 插入数据到 MySQL 数据库。 ### 一、准备工作 #### 1. 下载并安装 MySQL 如果您还没有安装 MySQL&#xff0c;可以从 MySQL 官方网站下载并安…

UART编程

Q:为什么使用串口前要先在电脑上安装CH340驱动&#xff1f; 中断的作用&#xff1f; 环形buffer的作用&#xff1f; static和valitate的作用 三种编程方式简介 也可以通过DMA方式减小CPU资源的消耗 直接把数据在SRAM内存和UART模块进行传输 &#xff0c;流程&#xff1a; …

玩家自行定制内存将古老的386 PC内存升级到64MB容量

比尔盖茨曾说&#xff1a;“无论对谁来说&#xff0c;640K内存都足够了。” 如果你是一个还停留在 30 针 SIMM 时代的老式电脑爱好者&#xff0c;那么你的内存升级选择是相当有限的。不过&#xff0c;YouTube 上的一个频道已经展示了如何将古老的 386 系统内存升级到令人"…

【AI应用探讨】—对抗学习(AL)应用场景

目录 一、图像领域 二、自然语言处理&#xff08;NLP&#xff09; 三、安全领域 四、其他领域 五、医疗健康领域 六、游戏与娱乐领域 七、机器人与自动化领域 八、科研与教育领域 九、物联网与边缘计算 十、金融科技 十一、能源与环境 十二、社会科学与人文研究 十…

Linux内核编译安装 - Deepin,Debian系

为什么要自己编译内核 优点 定制化&#xff1a;你可以根据自己的硬件和需求配置内核&#xff0c;去掉不必要的模块&#xff0c;优化性能。性能优化&#xff1a;移除不需要的驱动程序和特性&#xff0c;减小内核体积&#xff0c;提高系统性能。最新特性和修复&#xff1a;获取…

什么是开放最短路径优先(OSPF)

OSPF是一种典型的链路状态路由协议&#xff0c;一般在同一个路由域中使用。这里的路由域指的是一个自治系统&#xff08;AS&#xff09;&#xff0c;是指一组通过统一的路由策略或协议相互交换路由信息的网络。在这个自治系统&#xff08;AS&#xff09;中&#xff0c;所有的OS…

【Leetcode】最小数字游戏

你有一个下标从 0 开始、长度为 偶数 的整数数组 nums &#xff0c;同时还有一个空数组 arr 。Alice 和 Bob 决定玩一个游戏&#xff0c;游戏中每一轮 Alice 和 Bob 都会各自执行一次操作。游戏规则如下&#xff1a; 每一轮&#xff0c;Alice 先从 nums 中移除一个 最小 元素&…

等保测评是做什么的

等保测评的定义和目的 等保测评&#xff0c;全称为信息安全等级保护测评&#xff0c;是依据国家信息安全等级保护规范规定&#xff0c;由具有资质的测评机构对信息系统安全等级保护状况进行检测评估的活动。等保测评的目的是验证网络系统或应用是否满足相应的安全保护等级要求…

【Linux】System V消息队列 System V信号量

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前正在学习c和算法 ✈️专栏&#xff1a;Linux &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章有啥瑕疵&#xff0c;希望大佬指点一二 如果文章对…

前端 JS 经典:小数运算不精确

原因&#xff1a;计算机对小数的存储是二进制的&#xff0c;有限位数的二进制做算法得到的是有限位数&#xff0c;无限位数的二进制做运算&#xff0c;得到的是无限位数。 如下&#xff1a;0.5 和 0.25 转二进制是有限位数&#xff0c;0.3 和 0.2 转二进制是无限位数。 (0.5)…

Spark调度底层执行原理详解(第35天)

系列文章目录 一、Spark应用程序启动与资源申请 二、DAG&#xff08;有向无环图&#xff09;的构建与划分 三、Task的生成与调度 四、Task的执行与结果返回 五、监控与容错 六、优化策略 文章目录 系列文章目录前言一、Spark应用程序启动与资源申请1. SparkContext的创建2. 资…