【学习笔记】Python大数据处理与分析——Matplotlib数据可视化

一、绘图步骤

1、导入第三方库

import matplotlib.pyplot as plt
import numpy as np

2、准备数据

x1 = np.linspace(1, 10, 5)
y1 = np.sin(x1)

3、开始绘图

plt.plot(x1, y1, linewidth=3)

4、完善图表

plt.title("plot figure")
plt.xlabel("value of x")
plt.ylabel("value of y")

5、展示结果

plt.show()

        绘制图形如下:

二、经典图形绘制

1、折线图

        plot()函数的原型为plt.plot(x, y, format_string, **kwargs),参数分别为:

x:x轴数据(列表或函数,可选)

y:y轴数据(列表或函数,必选)

format_string:控制线条的格式字符串(定义线条的基本属性,如颜色、点型和线型,可选)

**kwargs:一系列可选关键字参数(如label指定线条标签,linewidth指定线条宽度,color指定线条颜色等)

plt.plot(x1, y1, color='red', marker='o', linestyle='dashed', linewidth=1, markersize=4, label="figure")
plt.title("first graph", fontsize=20)                    # 图表标题
plt.xlabel("value of X", fontsize=12)                    # x轴标签
plt.ylabel("value of Y", fontsize=12)                    # y轴标签
plt.tick_params(axis='both', labelsize=10)               # 刻度样式
plt.grid(ls=":", c="b")                                  # 网格线
plt.text(4, 0.1, "y=sin(x)", weight="bold", color="b")   # 注释文本
plt.legend(loc="lower left")                             # 图例
plt.show()

        绘制图形如下:

2、柱状图

        bar()函数的原型为matplotlib.pyplot.bar(x, height, width=0.8, bottom=0, align='center', data=None, **kwargs),参数分别为:

x:标量序列,标示在x轴上的定性数据类别,即每个柱状的x轴坐标

height:标量或标量序列,和x对应,确定每种定性数据类别的数量,即柱状的y轴高度

width:标量或数组形式序列,可选,决定单个柱状图的宽度,默认值为0.8

bottom:标量或数组等类似序列,设置y边界坐标轴起点,默认值为0

align:可选的两个值为{‘center’, ‘edge’},其默认值为center,使基准在x位置居中。

**kwargs:传递一系列的关键字参数,如color指定柱状图颜色(单一颜色为全部使用此颜色,而颜色列表会逐一染色),edgecolor指定柱状边缘的颜色;linewidth指定柱状的宽度,tick_label设置柱状图的刻度标签,默认为无标签,根据x的设置来显示,hatch设置条形的绘制风格,每种hatch字符代表填充的形状(/代表斜杆,*代表五角星,.代表点,o代表圆形......)

x2 = [1, 2, 3, 4, 5, 6]
y2 = [7, 5, 3, 9, 4, 6]mpl.rcParams["font.sans-serif"] = "SimHei"    # 字体样式
mpl.rcParams["axes.unicode_minus"] = False    # 字符显示
mpl.rcParams["font.size"] = 12                # 字体大小
plt.bar(x2, y2, width=0.4, align="center", tick_label=["toy", "cup", "battery", "textbook", "computer", "phone"], color=['c', 'b', 'r'], hatch='/')
plt.xlabel("箱子类型")
plt.ylabel("箱子重量(kg)")
plt.title("货运箱重量统计", color="b")
plt.show()

        绘制图形如下:

3、直方图

        hist()函数的原型为plt.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, normed=None, **kwargs),参数分别为:

x: 必需参数,用于绘制直方图的数据
bins: 可选参数,指定直方图的柱子数量或柱子的边界值。默认值为10
range: 可选参数,指定直方图的取值范围。默认值为数据的最小值和最大值
density: 可选参数,指定是否将直方图的高度归一化为概率密度。默认值为False
histtype: 可选参数,指定直方图的类型。可以是’bar’(默认值),‘barstacked’,‘step’,'stepfilled’等
color: 可选参数,指定直方图的颜色
label: 可选参数,指定直方图的标签,用于图例显示
align: 可选参数,指定柱子的对齐方式。可以是’left’,‘mid’(默认值),‘right’
orientation: 可选参数,指定直方图的方向。可以是’vertical’(默认值),‘horizontal’
rwidth: 可选参数,指定柱子的宽度,取值范围为[0, 1]。默认值为None,表示自适应宽度
**kwargs:传递其他关键字参数,用于进一步自定义直方图的样式和属性

x3 = [np.random.randint(0, 100, 40), np.random.randint(0, 100, 40)]
y3 = list(range(0, 101, 10))mpl.rcParams["font.sans-serif"] = "SimHei"
mpl.rcParams["axes.unicode_minus"] = False
mpl.rcParams["font.size"] = 12plt.hist(x3, bins=y3, color=['c', 'b'], histtype="bar", rwidth=1, alpha=0.6, edgecolor="black", label=['一班', '二班'])
plt.xlabel("测试成绩")
plt.ylabel("学生人数")
plt.title("学生英语考试分数统计", color="r")
plt.legend()
plt.show()

         绘制图形如下:

4、散点图

        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),参数分别为:

x,y:输入点列的数组,长度都是size

s:点的直径数组,默认直径20,长度最大size

c:点的颜色,默认蓝色 'b',也可以是个 RGB 或 RGBA 二维行数组

marker:点的样式,默认小圆圈 'o'。

cmap:默认None,标量或者是一个colormap的名字,只有c是一个浮点数数组时才使用。如果没有申明就是 image.cmap

norm:默认None,数据亮度在0-1之间,只有c是一个浮点数的数组的时才使用

vmin,vmax:亮度设置,在norm参数存在时会忽略

alpha:透明度设置,0-1之间,默认None,即不透明

linewidths:标记点的长度

edgecolors:颜色或颜色序列,默认为 'face',可选值有 'face', 'none', None

plotnonfinite:布尔值,设置是否使用非限定的c(inf, -inf 或 nan) 绘制点

**kwargs:其他参数。

        以随机漫步过程为例:

from random import choice    # 补充class RandomWalk:def __init__(self, point_num=50000):self.point_num = point_numself.xval = [0]self.yval = [0]def fill_walk(self):while len(self.xval) < self.point_num:# 计算x和y的漫步方向和步数x_direction = choice([1, -1])step_num = choice([0, 1, 2, 3, 4])xstep = x_direction * step_numy_direction = choice([1, -1])step_num = choice([0, 1, 2, 3, 4])ystep = y_direction * step_num# 如果原地踏步,则跳过此次循环if xstep == 0 and ystep == 0:continue# 计算下个点的坐标x_next = self.xval[-1] + xstepy_next = self.yval[-1] + ystep# 将该点坐标加入xval和yval两个列表self.xval.append(x_next)self.yval.append(y_next)rw = RandomWalk()
rw.fill_walk()fig, ax = plt.subplots()
point_numbers = list(range(rw.point_num))
# 按point_numbers列表指定的点序绘制渐变色散点
ax.scatter(rw.xval, rw.yval, c=point_numbers, edgecolors='none', s=2)
# 绘制起点和终点
ax.scatter(0, 0, c='green', edgecolors='none', s=2)
ax.scatter(rw.xval[-1], rw.yval[-1], c='red', edgecolors='none', s=2)
# 隐藏坐标轴
ax.axes.get_xaxis().set_visible(False)
ax.axes.get_yaxis().set_visible(False)
plt.show()

        绘制图形如下: 

5、等值(量)线图

(1)导入所需要的库

import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np

(2)数据准备

n = 128
x4 = np.linspace(-4, 4, n)
y4 = np.linspace(-4, 4, n)

(3)填充等高线颜色

def f(x, y):z = (1 - y ** 6 + x ** 6) * np.exp(-x ** 2 - y ** 2)return z# 生成mesh网格状数据,用f()函数计算网格面上每点对应高度值,结合网格上每点二维坐标绘制等高线
x5, y5 = np.meshgrid(x4, y4)
z = f(x5, y5)# 填充等高线
plt.contourf(x5, y5, z)

        此时的绘制情况如下:

        为显示热力图,需修改plt.contourf():

csf = plt.contourf(x5, y5, z, cmap=mpl.cm.hot)

        修改后的绘制情况如下:

(4)绘制等高线

# 绘制等高线
cs = plt.contour(x4, y4, z, 10, colors='black')
# 添加等高线文字标签
plt.clabel(cs, inline=True, fontsize=12)
# 添加图例
plt.colorbar(csf)

(5)输出等高线图 

plt.show()

        绘制图形如下:

6、地理信息可视化

(1)平面世界地图

# 设置投影方式
map1 = Basemap(projection='cyl')
# 背景上蓝色
map1.drawmapboundary(fill_color='aqua')
# 陆地上土黄色,江河湖泊上蓝色
map1.fillcontinents(color='coral', lake_color='aqua')
# 绘制图像
map1.drawcoastlines()
plt.show()

        绘制图形如下:

(2)球状世界地图

# 设置投影方式
map2 = Basemap(projection="ortho", lat_0=30, lon_0=120)
# 背景上蓝色
map2.drawmapboundary(fill_color="aqua")
# 陆地上土黄色,江河湖泊上蓝色
map2.fillcontinents(color="coral", lake_color="aqua")
# 绘制图像
map2.drawcoastlines()
plt.show()

        绘制图形如下:

 

三、图表调整及美化

        大致分为添加图例和标题,调整刻度格式、标签设置、内容和格式设置,添加网格线,绘制参考线,添加图表注释,向统计图形添加表格,颜色参数使用和颜色映射表使用,细节处可自行查询函数说明,示例代码如下:

# 设置字体
mpl.rcParams["font.sans-serif"] = "SimHei"
mpl.rcParams["axes.unicode_minus"] = False# 数据准备
x6 = np.linspace(0.2, 3.0, 100)
y6 = np.sin(x6)
y6_ = np.random.randn(100)# 绘图
plt.scatter(x6, y6_, c="green", label="散点图", edgecolors="none")
plt.plot(x6, y6, ls="--", c="red", lw=3, label="曲线图")
# 设置刻度范围
plt.xlim(0.0, 4.0)
plt.ylim(-4.0, 4.0)
# 设置坐标轴标签
plt.xlabel("X轴")
plt.ylabel("Y轴", rotation=360)
# 设置网格
plt.grid(True, ls=":", color="grey")
# 设置参考线
plt.axhline(y=0.0, c="r", ls="--", lw=2)
# 设置注释
plt.annotate("y=sin(x)", xy=(np.pi / 2, 1.0), xytext=(1.8, 2), color="r", fontsize=15, arrowprops=dict(arrowstyle="->", connectionstyle="arc3", color="r"))
plt.annotate("y,x轴", xy=(0.75, -4), xytext=(0.35, -2.7), color="b", fontsize=15, arrowprops=dict(arrowstyle="->", connectionstyle="arc3", color="b"))
plt.annotate("", xy=(0, -3.5), xytext=(0.3, -2.7), color="b", arrowprops=dict(arrowstyle="->", connectionstyle="arc3", color="b"))
plt.annotate("", xy=(3.5, 0.0), xytext=(3.4, -1.0), color="b", arrowprops=dict(arrowstyle="->", connectionstyle="arc3", color="b"))
plt.text(3.0, -1.3, "图表参考线", color="b", fontsize=15)
# 设置标题
plt.title("图标元素设置示例", color="m", fontsize=20)
# 设置图例
plt.legend(loc="upper right", fontsize=12)
# 显示图形
plt.show()

        绘制图形如下:

四、综合案例

import matplotlib.pyplot as plt
import matplotlib as mpl
from random import randintmpl.rcParams["font.sans-serif"] = "Microsoft YaHei"
mpl.rcParams["axes.unicode_minus"] = False# 骰子类
class Die:def __init__(self, num=6):self.num = numdef roll_die(self):return randint(1, self.num)die1 = Die()
die2 = Die()
results = []
count_nums = []
x7 = list(range(1, 13))# 掷2000次,结果存入result列表
for roll_num in range(2000):result = die1.roll_die() + die2.roll_die()results.append(result)
# 统计每一面被掷到的次数
for value in range(1, die1.num + die2.num + 1):count_num = results.count(value)count_nums.append(count_num)# 绘制图表
plt.bar(x7, count_nums, width=0.7, edgecolor="black", alpha=0.6, label="频数")
plt.xlabel("骰子点数和")
plt.ylabel("各点数之和出现的频数")
plt.title("两个骰子掷2000次", color="r")
plt.xticks(range(1, 13))
plt.grid(axis='y', ls=":", color="grey", alpha=0.5)
plt.legend()
plt.show()

        绘制图形如下:

 

 

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

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

相关文章

OpenHarmony、HarmonyOS和Harmony NEXT 《我们不一样》

1. OpenHarmony 定义与地位&#xff1a;OpenHarmony是鸿蒙系统的底层内核系统&#xff0c;集成了Linux内核和LiteOS&#xff0c;为各种设备提供统一的操作系统解决方案。 开源与商用&#xff1a;OpenHarmony是一个开源项目&#xff0c;允许开发者自由访问和使用其源代码&#…

【Leetcode每日一题】 递归 - 二叉树的所有路径(难度⭐)(59)

1. 题目解析 题目链接&#xff1a;257. 二叉树的所有路径 这个问题的理解其实相当简单&#xff0c;只需看一下示例&#xff0c;基本就能明白其含义了。 2.算法原理 针对二叉树路径的求解问题&#xff0c;我们可以采用深度优先遍历&#xff08;DFS&#xff09;的策略来寻找所…

Java项目如何使用EasyExcel插件对Excel数据进行导入导出

文章目录 一、EasyExcel的示例导入依赖创建实体类数据导入和导出 二、EasyExcel的作用三、EasyExcel的注解 EasyExcel是一个阿里巴巴开源的excel处理框架&#xff0c;它以使用简单、节省内存著称。在解析Excel时&#xff0c;EasyExcel没有将文件数据一次性全部加载到内存中&…

linux学习:进程(新建+运行某文件+退出处理函数+等待)

目录 api 创建新进程 注意 运行某文件 例子 注意 例子&#xff0c;等待进程 进程是由进程控制块、程序段、数据段三部分组成 进程有都有一个父进程&#xff0c;除了init&#xff0c;父进程可以创建子进程 每个进程都有一个PID&#xff0c;可以用ps来查看&#xff0c;等…

【行为型模式】策略模式

一、策略模式概述 策略模式(又叫政策Policy模式)&#xff0c;属于对象行为模式下的&#xff1a;Strategy类提供了可插入式(Pluggable)算法的实现方案。 策略模式的定义-意图&#xff1a;定义一系列算法&#xff0c;将每一个算法封装起来&#xff0c;并让它们互相替换。策略模式…

Mybatis常用注解说明

MyBatisPlus 常用注解说明 TableName(opens new window) 描述&#xff1a;表名注解&#xff0c;标识实体类对应的表 使用位置&#xff1a;实体类 TableName("sys_user") public class User {private Long id;private String name;private Integer age;private Strin…

实用图像视频修复工具:完善细节、提高分辨率 | 开源日报 No.225

xinntao/Real-ESRGAN Stars: 25.6k License: BSD-3-Clause Real-ESRGAN 是一个旨在开发实用的图像/视频恢复算法的项目。 该项目主要功能、关键特性和核心优势包括&#xff1a; 提供动漫视频小模型和动漫插图模型支持在线 Colab 演示和便携式 Windows/Linux/MacOS 可执行文件…

如何利用纯前端技术,实现一个网页版视频编辑器?

纯网页版视频编辑器 一、前言二、功能实现三、所需技术四、部分功能实现4.1 素材预设4.2 多轨道剪辑 一、前言 介绍&#xff1a;本篇文章打算利用纯前端的技术&#xff0c;来实现一个网页版的视频编辑器。为什么突然想做一个这么项目来呢&#xff0c;主要是最近一直在利用手机…

OpenCV基本图像处理操作(四)——傅立叶变换

傅里叶变换的作用 高频&#xff1a;变化剧烈的灰度分量&#xff0c;例如边界 低频&#xff1a;变化缓慢的灰度分量&#xff0c;例如一片大海 滤波 低通滤波器&#xff1a;只保留低频&#xff0c;会使得图像模糊 高通滤波器&#xff1a;只保留高频&#xff0c;会使得图像细节…

Golang | Leetcode Golang题解之第31题下一个排列

题目&#xff1a; 题解&#xff1a; func nextPermutation(nums []int) {n : len(nums)i : n - 2for i > 0 && nums[i] > nums[i1] {i--}if i > 0 {j : n - 1for j > 0 && nums[i] > nums[j] {j--}nums[i], nums[j] nums[j], nums[i]}reverse…

Day 14 网络协议

常见网络设备&#xff1a;交换机 路由器 中继器 多协议网关&#xff08;路由器的前身&#xff09; 交换机&#xff1a;用于连接统一网络的设备&#xff0c;实现内网设备通信。 从广义上分为&#xff1a;局域网交换机&#xff0c;广域网交换机 从网络构成分为&#xff1a;接…

Jenkins配置windows/linux从节点

背景&#xff1a; 环境&#xff1a;jenkins环境&#xff08;Ubuntu&#xff09; 节点机器&#xff1a;Linux、Windows 前置条件&#xff1a; 节点机器&#xff1a;安装java、allure、python 1 Linux节点管理机器添加 1.1 系统管理->节点列表->New Node 1.2 节点配置…

「GO基础」文件名规范、关键字与标识符

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

元数据管理Atlas

文章目录 一、Atlas概述1、Atlas入门2、Atlas架构原理 二、Atlas安装1、安装环境准备1.1 安装Solr-7.7.31.2 Atlas2.1.0安装 2、Atlas配置2.1 Atlas集成Hbase2.2 Atlas集成Solr2.3 Atlas集成Kafka2.4 Atlas Server配置2.5 Kerberos相关配置2.6 Atlas集成Hive 3、Atlas启动 三、…

用海外云手机高效率运营TikTok!

很多做国外社媒运营的公司&#xff0c;想要快速引流&#xff0c;往往一个账号是不够的&#xff0c;多数都是矩阵养号的方式&#xff0c;运营多个TikToK、Facebook、Instagram等账号&#xff0c;慢慢沉淀流量变现&#xff0c;而他们都在用海外云手机这款工具&#xff01; 海外云…

知识管理系统(KMS):一文扫盲,能和chatGPT相融吗?

一、什么是KMS&#xff0c;有什么作用 KMS&#xff08;Knowledge Management System&#xff09;知识管理系统是一种用于组织、存储、共享和利用知识的软件系统或平台。它旨在帮助组织有效地管理和利用内部和外部的知识资源&#xff0c;以支持决策、创新和持续学习。 KMS知识管…

华为云CodeArts IDE For Python 快速使用指南

CodeArts IDE 带有 Python 扩展&#xff0c;为 Python 语言提供了广泛的支持。Python 扩展可以利用 CodeArts IDE 的代码补全、验证、调试和单元测试等特性&#xff0c;与多种 Python 解释器协同工作&#xff0c;轻松切换包括虚拟环境和 conda 环境的 Python 环境。本文简要概述…

OpenCV基本图像处理操作(三)——图像轮廓

轮廓 cv2.findContours(img,mode,method) mode:轮廓检索模式 RETR_EXTERNAL &#xff1a;只检索最外面的轮廓&#xff1b;RETR_LIST&#xff1a;检索所有的轮廓&#xff0c;并将其保存到一条链表当中&#xff1b;RETR_CCOMP&#xff1a;检索所有的轮廓&#xff0c;并将他们组…

魔方网表 存在 mailupdate.jsp接口 任意文件上传漏洞

声明&#xff1a; 本文仅用于技术交流&#xff0c;请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任。 简介 魔方网表mailupdate.jsp接口存在任意文件上传漏洞 …

ChatGPT深度科研应用、数据分析及机器学习、AI绘图与高效论文撰写教程

原文链接&#xff1a;ChatGPT深度科研应用、数据分析及机器学习、AI绘图与高效论文撰写https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247601506&idx2&sn5dae3fdc3e188e81b8a6142c5ab8c994&chksmfa820c85cdf58593356482880998fc6eb98e6889b261bf621e1d…