Python应用实例(二)数据可视化(一)

数据可视化(一)

  • 1.安装Matplotlib
  • 2.绘制简单的折线图
    • 2.1 修改标签文字和线条粗细
    • 2.2 矫正图形
    • 2.3 使用内置样式
    • 2.4 使用scatter()绘制散点图并设置样式
    • 2.5 使用scatter()绘制一系列点
    • 2.6 自动计算数据
    • 2.7 自定义颜色
    • 2.8 使用颜色映射
    • 2.9 自动保存图表

数据可视化指的是通过可视化表示来探索数据。它与数据分析紧密相关,而数据分析指的是使用代码来探索数据集的规律和关联。数据集可以是用一行代码就能表示的小型数字列表,也可以是数千兆字节的数据。

漂亮地呈现数据并非仅仅关乎漂亮的图片。通过以引人注目的简单方式呈现数据,能让观看者明白其含义:发现数据集中原本未知的规律和意义。

所幸即便没有超级计算机,你也能够可视化复杂的数据。鉴于Python的高效性,使用它在笔记本电脑上就能快速地探索由数百万个数据点组成的数据集。数据点并非必须是数。利用本书前半部分介绍的基本知识,也可对非数值数据进行分析。

在基因研究、天气研究、政治经济分析等众多领域,人们常常使用Python来完成数据密集型工作。数据科学家使用Python编写了一系列优秀的可视化和分析工具,其中很多可供你使用。最流行的工具之一是Matplotlib,它是一个数学绘图库,我们将使用它来制作简单的图表,如折线图和散点图。然后,我们将基于随机漫步概念生成一个更有趣的数据集——根据一系列随机决策生成的图表。

我们使用Plotly包,它生成的图表非常适合在数字设备上显示。Plotly生成的图表可根据显示设备的尺寸自动调整大小,还具备众多交互特性,如在用户将鼠标指向图表的不同部分时突出数据集的特定方面。本章将使用Plotly来分析掷骰子的结果。

1.安装Matplotlib

首先使用Matplotlib来生成几个图表,为此需要使用pip来安装它。pip是一个可用于下载并安装Python包的模块。请在终端提示符下执行如下命令:

$ python -m pip install --user matplotlib

这个命令让Python运行模块pip,并将matplotlib包添加到当前用户的Python安装中。在你的系统中,如果运行程序或启动终端会话时使用的命令不是python,而是python3,应使用类似于下面的命令:

$ python3 -m pip install --user matplotlib

也可以直接在pycharm中搜索安装:
在这里插入图片描述

2.绘制简单的折线图

下面使用Matplotlib绘制一个简单的折线图,再对其进行定制,以实现信息更丰富的数据可视化效果。我们将使用平方数序列1、4、9、16和25来绘制这个图表。只需提供如下的数,Matplotlib将完成其他工作:mpl_squares.py

  import matplotlib.pyplot as pltsquares = [1, 4, 9, 16, 25]
❶ fig, ax = plt.subplots()ax.plot(squares)plt.show()

首先导入模块pyplot,并为其指定别名plt,以免反复输入pyplot。(在线示例大多这样做,这里也不例外。)模块pyplot包含很多用于生成图表的函数。

我们创建了一个名为squares的列表,在其中存储要用来制作图表的数据。然后,采取了另一种常见的Matplotlib做法——调用函数subplots()(见❶)。这个函数可在一张图片中绘制一个或多个图表。变量fig表示整张图片。变量ax表示图片中的各个图表,大多数情况下要使用它。

接下来调用方法plot(),它尝试根据给定的数据以有意义的方式绘制图表。函数plt.show()打开Matplotlib查看器并显示绘制的图表,如图15-1所示。在查看器中,你可缩放和导航图形,还可单击磁盘图标将图表保存起来。

在这里插入图片描述

2.1 修改标签文字和线条粗细

如图15-1所示的图形表明数是越来越大的,但标签文字太小、线条太细,难以看清楚。所幸Matplotlib让你能够调整可视化的各个方面。下面通过一些定制来改善这个图表的可读性,如下所示:mpl_squares.py

  import matplotlib.pyplot as pltsquares = [1, 4, 9, 16, 25]fig, ax = plt.subplots()
❶ ax.plot(squares, linewidth=3)# 设置图表标题并给坐标轴加上标签1。
❷ ax.set_title("平方数", fontsize=24)
❸ ax.set_xlabel("值", fontsize=14)ax.set_ylabel("值的平方", fontsize=14)# 设置刻度标记的大小。
❹ ax.tick_params(axis='both', labelsize=14)plt.show()

参数linewidth(见❶)决定了plot()绘制的线条粗细。方法set_title()(见❷)给图表指定标题。在上述代码中,出现多次的参数fontsize指定图表中各种文字的大小。

方法set_xlabel()和set_ylabel()让你能够为每条轴设置标题(见❸)。方法tick_params()设置刻度的样式(见❹),其中指定的实参将影响[插图]轴和[插图]轴上的刻度(axes=‘both’),并将刻度标记的字号设置为14(labelsize=14)。

最终的图表阅读起来容易得多,如图15-2所示:标签文字更大,线条也更粗了。通常,需要尝试不同的值,才能确定什么样的设置生成的图表最合适。

在这里插入图片描述

2.2 矫正图形

图形更容易看清后,我们发现没有正确地绘制数据:折线图的终点指出4.0的平方为25!下面来修复这个问题。

向plot()提供一系列数时,它假设第一个数据点对应的[插图]坐标值为0,但这里第一个点对应的[插图]值为1。为改变这种默认行为,可向plot()同时提供输入值和输出值:

mpl_squares.py

import matplotlib.pyplot as pltinput_values = [1, 2, 3, 4, 5]
squares = [1, 4, 9, 16, 25]fig, ax = plt.subplots()
ax.plot(input_values, squares, linewidth=3)# 设置图表标题并给坐标轴加上标签。
--snip--

现在plot()将正确地绘制数据,因为同时提供了输入值和输出值,plot()无须对输出值的生成方式做出假设。最终的图形是正确的,如图

在这里插入图片描述

使用plot()时可指定各种实参,还可使用众多函数对图形进行定制。本章后面处理更有趣的数据集时,将继续探索这些定制函数。

2.3 使用内置样式

Matplotlib提供了很多已经定义好的样式,它们使用的背景色、网格线、线条粗细、字体、字号等设置很不错,让你无须做太多定制就可生成引人瞩目的可视化效果。要获悉在你的系统中可使用哪些样式,可在终端会话中执行如下命令:

>>> import matplotlib.pyplot as plt
>>> plt.style.available
['seaborn-dark', 'seaborn-darkgrid', 'seaborn-ticks', 'fivethirtyeight',
--snip--

可在生成图表的代码前添加如下代码行:mpl_squares.py

import matplotlib.pyplot as pltinput_values = [1, 2, 3, 4, 5]
squares = [1, 4, 9, 16, 25]plt.style.use('seaborn')
fig, ax = plt.subplots()
--snip--

这些代码生成的图表如图所示。可供使用的内置样式有很多,请尝试使用它们,找出你喜欢的。

在这里插入图片描述

2.4 使用scatter()绘制散点图并设置样式

有时候,绘制散点图并设置各个数据点的样式很有用。例如,你可能想以一种颜色显示较小的值,用另一种颜色显示较大的值。绘制大型数据集时,还可对每个点都设置同样的样式,再使用不同的样式选项重新绘制某些点以示突出。

要绘制单个点,可使用方法scatter()。向它传递一对[插图]坐标和[插图]坐标,它将在指定位置绘制一个点:

catter_squares.py

import matplotlib.pyplot as pltplt.style.use('seaborn')
fig, ax = plt.subplots()
ax.scatter(2, 4)plt.show()

下面来设置图表的样式,使其更有趣。我们将添加标题,给坐标轴加上标签,并且确保所有文本都大到能够看清:

  import matplotlib.pyplot as pltplt.style.use('seaborn')fig, ax = plt.subplots()
❶ ax.scatter(2, 4, s=200)# 设置图表标题并给坐标轴加上标签。ax.set_title("平方数", fontsize=24)ax.set_xlabel("值", fontsize=14)ax.set_ylabel("值的平方", fontsize=14)# 设置刻度标记的大小。ax.tick_params(axis='both', which='major', labelsize=14)plt.show()

在❶处,调用scatter()并使用参数s设置绘制图形时使用的点的尺寸。如果此时运行scatter_squares.py,将在图表中央看到一个点,如图

在这里插入图片描述

2.5 使用scatter()绘制一系列点

要绘制一系列的点,可向scatter()传递两个分别包含[插图]值和[插图]值的列表,如下所示:scatter_squares.py

import matplotlib.pyplot as pltx_values = [1, 2, 3, 4, 5]
y_values = [1, 4, 9, 16, 25]plt.style.use('seaborn')
fig, ax = plt.subplots()
ax.scatter(x_values, y_values, s=100)# 设置图表标题并给坐标轴指定标签。
--snip--

列表x_values包含要计算平方值的数,列表y_values包含前述数的平方值。将这些列表传递给scatter()时,Matplotlib依次从每个列表中读取一个值来绘制一个点。要绘制的点的坐标分别为(1, 1)、(2, 4)、(3, 9)、(4, 16)和(5, 25),最终的结果如图所示。

在这里插入图片描述

2.6 自动计算数据

手工计算列表要包含的值可能效率低下,需要绘制的点很多时尤其如此。我们不必手工计算包含点坐标的列表,可以用Python循环来完成。下面是绘制1000个点的代码:scatter_squares.py

  import matplotlib.pyplot as plt❶ x_values = range(1, 1001)y_values = [x**2 for x in x_values]plt.style.use('seaborn')fig, ax = plt.subplots()
❷ ax.scatter(x_values, y_values, s=10)# 设置图表标题并给坐标轴加上标签。--snip--# 设置每个坐标轴的取值范围。
❸ ax.axis([0, 1100, 0, 1100000])plt.show()

首先创建了一个包含[插图]值的列表,其中包含数1~1000(见❶)。接下来,是一个生成[插图]值的列表解析,它遍历[插图]值(for xin x_values),计算其平方值(x**2),并将结果存储到列表y_values中。然后,将输入列表和输出列表传递给scatter()(见❷)。这个数据集较大,因此将点设置得较小。

在❸处,使用方法axis()指定了每个坐标轴的取值范围。方法axis()要求提供4个值:[插图]和[插图]坐标轴的最小值和最大值。这里将[插图]坐标轴的取值范围设置为0~1100,并将[插图]坐标轴的取值范围设置为0~1 100 000。结果如图所示。

在这里插入图片描述

2.7 自定义颜色

要修改数据点的颜色,可向scatter()传递参数c,并将其设置为要使用的颜色的名称(放在引号内),如下所示:

ax.scatter(x_values, y_values, c='red', s=10)

还可使用RGB颜色模式自定义颜色。要指定自定义颜色,可传递参数c,并将其设置为一个元组,其中包含三个0~1的小数值,分别表示红色、绿色和蓝色的分量。例如,下面的代码行创建一个由淡绿色点组成的散点图:

ax.scatter(x_values, y_values, c=(0, 0.8, 0), s=10)

值越接近0,指定的颜色越深;值越接近1,指定的颜色越浅。

2.8 使用颜色映射

颜色映射(colormap)是一系列颜色,从起始颜色渐变到结束颜色。在可视化中,颜色映射用于突出数据的规律。例如,你可能用较浅的颜色来显示较小的值,并使用较深的颜色来显示较大的值。

模块pyplot内置了一组颜色映射。要使用这些颜色映射,需要告诉pyplot该如何设置数据集中每个点的颜色。下面演示了如何根据每个点的[插图]值来设置其颜色:

scatter_squares.py

import matplotlib.pyplot as pltx_values = range(1, 1001)
y_values = [x**2 for x in x_values]ax.scatter(x_values, y_values, c=y_values, cmap=plt.cm.Blues, s=10)# 设置图表标题并给坐标轴加上标签。
--snip--

我们将参数c设置成了一个[插图]值列表,并使用参数cmap告诉pyplot使用哪个颜色映射。这些代码将[插图]值较小的点显示为浅蓝色,并将[插图]值较大的点显示为深蓝色,结果如图所示。

在这里插入图片描述

2.9 自动保存图表

要让程序自动将图表保存到文件中,可将调用plt.show()替换为调用plt.savefig():

plt.savefig('squares_plot.png', bbox_inches='tight')

第一个实参指定要以什么文件名保存图表,这个文件将存储到scatter_squares.py所在的目录。第二个实参指定将图表多余的空白区域裁剪掉。如果要保留图表周围多余的空白区域,只需省略这个实参即可。

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

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

相关文章

Visual Studio 自定义的颜色字体不生效

问题描述: 1、dll1中引用第三方库的类不识别,颜色黑白,自定义颜色不生效;定义的是结构体 2、在dll2引用另一个dll1中的结构体。结构体不识别,今天成员函数cpp中自定义颜色不生效。 问题解决方式: 全部清…

【MySQL备份与还原、索引、视图】练习

一、备份与还原 /***************************样例表***************************/CREATE DATABASE booksDB;use booksDB;CREATE TABLE books(bk_id INT NOT NULL PRIMARY KEY,bk_title VARCHAR(50) NOT NULL,copyright YEAR NOT NULL);INSERT INTO booksVALUES (11078, Lear…

macOS 14 Sonama - 小记

文章目录 Sonoma 官方资讯关于 Sonama 命名关于 壁纸Sonoma 官方资讯 macOS Sonoma Preview https://www.apple.com/hk/en/macos/sonoma-preview/官方视频介绍 Apple Events --> Watch the Keynote --> 00:43:13 (约14min) https://www.apple.com/hk/en/apple-events/mac…

树莓派使用Nginx 搭建轻量级网站远程访问

文章目录 1. Nginx安装2. 安装cpolar3.配置域名访问Nginx4. 固定域名访问5. 配置静态站点 转载自cpolar极点云文章:树莓派使用Nginx 搭建轻量级网站远程访问 安装 Nginx(发音为“engine-x”)可以将您的树莓派变成一个强大的 Web 服务器&#…

2023年iOS App Store上架流程详解(上)

目录 1.注册开发者账号 2.登录并配置人员 3.申请证书和配置文件 一.证书管理​ 二.新建证书​ 三.使用appuploader服务同步证书​ 1)申请证书 2)添加Identifiers和配置App ID 3)申请配置文件 1.在Xcode项目中配置签名 2.上传应用包…

Web3的2048,Sui 8192能否打开全链游戏的大门?

作者:Peng SUN,Foresight News Sui 8192:一局游戏就是一个NFT Sui 8192智能合约基于Move语言编写,构成非常简单,包括游戏、Game Board与排行榜(Leaderboard)三部分,覆盖方块移动、…

前端Vue自定义可自由滚动新闻栏tabs选项卡标签栏标题栏组件

随着技术的发展,开发的复杂度也越来越高,传统开发方式将一个系统做成了整块应用,经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改,造成牵一发而动全身。 通过组件化开发,可以有效实现…

【NLP】分步图解transformer 数学示例

一、说明 我知道transformer 架构可能看起来很可怕,你可能在网上或博客上遇到了各种解释。但是,在我的博客中,我将通过提供一个全面的数值示例来努力澄清它。通过这样做,我希望简化对变压器架构的理解。 二、输入和位置编码 让我们解决初始部分,我们将确定输入并计算它们…

苹果Vision Pro手势+眼球融合交互的奥秘

毫无疑问,Vision Pro在眼球追踪手势的融合交互体验上,给AR/VR头戴设备带来了新突破,在用户体验上的提升非常明显。 ​那么,为什么Vision Pro上这一功能会被如此值得关注呢?为了弄清楚,我们先来看看主流VR设…

【Spring Boot】单元测试

单元测试 单元测试在日常项目开发中必不可少,Spring Boot提供了完善的单元测试框架和工具用于测试开发的应用。接下来介绍Spring Boot为单元测试提供了哪些支持,以及如何在Spring Boot项目中进行单元测试。 1.Spring Boot集成单元测试 单元测试主要用…

音视频编码实战-------pcm+yuv数据转成MP4

文章目录 1.编码流程图2.相关模块及函数2.1 编码器相关API2.2 复用器相关API2.3 重采样相关API注意点 简单的编码流程相关代码 1.编码流程图 2.相关模块及函数 2.1 编码器相关API avcodec_find_encoder: 根据编码器ID查找编码器 avcodec_alloc_context3:创建编码器上下文 avc…

苹果平板电容笔好用吗?第三方apple pencil推荐

自从苹果推出了ipad的电容笔之后,一直在市场上保持着十分火爆的热度,但是因为Apple Pencil的价格太高,一般的消费者根本没有足够预算去入手。所以市场上就不断涌现出了不少可以很好代替Apple Pencil的平替电容笔,并且深受人们的热…

SPI与Springboot自动装配

目录 SPIspringboot的自动配置依赖于类似SPI的机制Dubbo的SPI机制SPI、双亲委派机制、线程上下文类加载器 SPI SPI1,2是一种将服务接口与服务实现分离以达到解耦、大大提升了程序可扩展性和灵活性的机制。引入服务提供者(也即SPI接口的实现者)&#xff…

js逆向补环境-b站志远二期最后8节课笔记

目录 一、基础知识1、什么是纯净V82、什么是BOM和DOM3、node环境/浏览器环境/V8引擎区别4、如何本地调试js补环境5、补环境相对于逆向算法的好处6、vm和vm2介绍 二、8个视频内容笔记概括1、补环境基本知识/头条案例手动插桩补2、Proxy代理/toString函数保护介绍3、补环境框架设…

PMP 3A备考指南

1、学习内容:如果上班能学习,上班学 慢慢悠悠3月 书过一遍 记大概框架,预测型记五大过程组 十大知识领域要知道为什么是这个过程 记为什么 死记打咩 看光环网课 有讲 老师很清楚明了 用上下班时间看 跟着老师思路走就行。敏捷直接看一遍视频&…

利用Adobe Acrobat DC实现图片和PDF互相转换

一、图片转PDF 可以实现多张或者单张图片转PDF! 这个需要使用到Adobe Acrobat DC的文件合并功能,因为Adobe Acrobat DC的文件合并,不仅可以合并多个pdf文件,也支持合并图片文件。 如图,直接选中多张图片合成即可: 添…

微信小程序上线与发布图文步骤操作

1.上传代码 打开微信小程序,在微信开发者工具的工具栏中单击“上传”按钮,页面中弹出提示框,根据提示填写相应的信息,然后单击“上传”按钮,即可上传代码。 2.查看上传代码之后的版本 登录微信小程序管理后台&…

数仓报表数据导出——Hive数据导出至Clickhouse

1. Clickhouse建表 创建database create database ad_report; use ad_report;创建table drop table if exists dwd_ad_event_inc; create table if not exists dwd_ad_event_inc (event_time Int64 comment 事件时间,event_type String comment 事件…

python爬虫_django+vue+echarts可视化查询所有CSDN用户质量分

文章目录 ⭐前言⭐ 效果⭐django简介⭐vue3简介⭐vue引入echarts ⭐前后分离实现💖 django代码层💖 vue3代码层结束 ⭐前言 大家好,我是yma16,本文分享关于前后分离djangovueecharts可视化查询CSDN用户质量分。 该系列文章&#…

Spring IoC及DI依赖注入

Spring 1.Spring的含义: Spring 可从狭义与广义两个角度看待 狭义的 Spring 是指 Spring 框架(Spring Fremework) 广义的 Spring 是指 Spring 生态体系 2.狭义的 Spring 框架 Spring 框架是企业开发复杂性的一站式解决方案 Spring 框架的核心是 IoC 容器和 AO…