15章-Python编程:从入门到实践

15章生成数据

数据可视化指的是通过可视化表示来探索数据,它与数据挖掘数紧密相关,而数据挖掘指的是使用代码来探索数据集的规律和关联。
数据集可以是用一行代码就能表示的小型数字列表,也可以是数以吉字节的数据。漂亮地呈现数据关乎的并非仅仅是漂亮的图片。以引人注目的简洁方式呈现数据,让观看者能够明白其含义,发现数据集中原本未意识到的规律和意义。
所幸即便没有超级计算机,也能够可视化复杂的数据。鉴于 Python 的高效性,使用它在笔记本电脑上就能快速地探索由数百万个数据点组成的数据集。数据点并非必须是数字,利用本书前半部分介绍的基本知识,也可以对非数字数据进行分析。在基因研究、天气研究、政治经济分析等众多领域,大家都使用 Python 来完成数据密集型工作。数据科学家使用 Python 编写了一系列令人印象深刻的可视化和分析工具,其中很多也可供你使用。最流行的工具之一是 matplotlib ,它是一个数学绘图库,我们将使用它来制作简单的图表,如折线图和散点图。然后,我们将基于随机漫步概念生成一个更有趣的数据集 —— 根据一系列随机决策生成的图表。
我们还将使用 Pygal包 ,它专注于生成适合在数字设备上显示的图表。通过使用 Pygal ,可在用户与图表交互时突出元素以及调整其大小,还可轻松地调整整个图表的尺寸,使其适合在微型智能手表或巨型显示器上显示。我们将使用 Pygal 以各种方式探索掷骰子的结果。

15.1安装安matplotlib

15.1.3在在Windows系统中安装系matplotlib

Windows 系统中,首先需要安装 VisualStudio 。为此,请访问 https://dev.windows.com/ ,单击 Downloads ,再查找 VisualStudio Community—— 一组免费的 Windows 开发工具。请下载并运行该安装程序。接下来,需要下载 matplotlib 安装程序。为此,请访问 https://pypi.python.org/pypi/matplotlib/ ,并查找与你使用的 Python 版本匹配的 wheel 文件(扩展名为 .whl 的文件)。例如,如果你使用的是 32 位的 Python 3.5 ,则需要下载 matplotlib-1.4.3-cp35-none-win32.whl
注意:如果找不到与你安装的 Python 版本匹配的文件,请去 http://www.lfd.uci.edu/-gohlke/pythonlibs/#matplotlib 看看,这个网站发布安装程序的时间通常比 matplotlib 官网早些。将这个 .whl 文件复制到你的项目文件夹,打开一个命令窗口,并切换到该项目文件夹,再使用 pip 来安装 matplotlib
> cd python_work
python_work> python -m pip install --user matplotlib-1.4.3-cp35-none-win32.whl

15.1.4测试matplotlib

安装必要的包后,对安装进行测试。为此,首先使用命令 python python3 启动一个终端会话,再尝试导入 matplotlib
>>> import matplotlib
如果没有出现任何错误消息,就说明你的系统安装了 matplotlib ,可以接着阅读下一节。
注意:如果你在安装过程中遇到了麻烦,请参阅附录 C 。如果依然无济于事,请向他人寻求帮助。对于你遇到的问题,只要向经验丰富的 Python 程序员提供少量的信息,他们很可能很快就能帮你解决。

15.1.5 matplotlib画廊

要查看使用 matplotlib 可制作的各种图表,请访问 http://matplotlib.org/ 的示例画廊。单击画廊中的图表,就可查看用于生成图表的代码。

15.2 绘制简单的折线图

下面来使用 matplotlib 绘制一个简单的折线图,再对其进行定制,以实现信息更丰富的数据可视化。我们将使用平方数序列 1 4 9 16 25 来绘制这个图表。
只需向 matplotlib 提供如下数字, matplotlib 就能完成其他的工作:
import matplotlib.pyplot as pltsquares = [1, 4, 9, 16, 25]
plt.plot(squares)
plt.show()

我们首先导入了模块 pyplot ,并给它指定了别名 plt ,以免反复输入 pyplot 。在线示例大都这样做,因此这里也这样做。模块 pyplot 包含很多用于生成图表的函数。
我们创建了一个列表,在其中存储了前述平方数,再将这个列表传递给函数 plot() ,这个函数尝试根据这些数字绘制出有意义的图形。 plt.show() 打开 matplotlib 查看器,并显示绘制的图形,如图 15-1 所示。查看器让你能够缩放和导航图形,另外,单击磁盘图标可将图形保存起来。

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

15-1 所示的图形表明数字是越来越大的,但标签文字太小,线条太细。所幸 matplotlib 让你能够调整可视化的各个方面。
import matplotlib.pyplot as pltsquares = [1, 4, 9, 16, 25]
plt.plot(squares, linewidth=5)
# 设置图表标题,并给坐标轴加上标签
plt.title("Square Numbers", fontsize=24)
plt.xlabel("Value", fontsize=14)
plt.ylabel("Square of Value", fontsize=14)
# 设置刻度标记的大小
plt.tick_params(axis='both', labelsize=14)
plt.show()

参数 linewidth (见 )决定了 plot() 绘制的线条的粗细。函数 title() (见 )给图表指定标题。在上述代码中,出现了多次的参数 fontsize 指定了图表中文字的大小。
函数 xlabel() ylabel() 让你能够为每条轴设置标题(见 );而函数 tick_params() 设置刻度的样式(见 ),其中指定的实参将影响 x 轴和 y 轴上的刻度( axes='both' ),并将刻度标记的字号设置为 14 labelsize=14 )。最终的图表阅读起来容易得多了,如图 15-2 所示:标签文字更大,线条也更粗。
15.2.2校正图形
图形更容易阅读后,我们发现没有正确地绘制数据:折线图的终点指出 4.0 的平方为 25 !下面来修复这个问题。
当你向 plot() 提供一系列数字时,它假设第一个数据点对应的 x 坐标值为 0 ,但我们的第一个点对应的 x 值为 1 。为改变这种默认行为,我们可以给 plot() 同时提供输入值和输出值:
import matplotlib.pyplot as pltinput_values = [1, 2, 3, 4, 5]
squares = [1, 4, 9, 16, 25]plt.plot(input_values, squares, linewidth=5)
# 设置图表标题并给坐标轴加上标签
plt.title("Square Numbers", fontsize=24)
plt.xlabel("Value", fontsize=14)
plt.ylabel("Square of Value", fontsize=14)
# 设置刻度标记的大小
plt.tick_params(axis='both', labelsize=14)
plt.show()

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

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

相关文章

Android Studio安装过程遇到SDK无法安装问题解决

首次打开studio遇到该类问题,需要下载SDK文件,后又发现SDK由于是Google源,无法进行正常安装,故转而进行SDK的镜像安装。 一、下载SDK Tools 地址:AndroidDevTools - Android开发工具 Android SDK下载 Android Studio…

Docker实战01

七十八、compse是什么能干嘛 docker-compose容器编排(你的容器实例太多了,你如何管理,容器之间涉及到启动的顺序,容器之间涉及到网络通信的调用) 1、是什么? Docker-Compose是Docker官方的开源项目&…

【Boost】:http_server模块(六)

http_server模块 一.安装cpp-httplib库二.基本使用服务器 一.安装cpp-httplib库 可以自己写一个http服务器,但比较麻烦,这里直接使用库。 在gitee上搜索cpp-httplib,任意找一个即可(建议使用0.7.15版本)。例如&#xf…

Qt QVariant类应用

QVariant类 QVariant类本质为C联合(Union)数据类型,它可以保存很多Qt类型的值,包括 QBrush,QColor,QString等等,也能存放Qt的容器类型的值。 QVariant::StringList 是 Qt 定义的一个 QVariant::type 枚举类型的变量&…

Java Stram 流对于返回对象的处理 (结束流)

Java Stram 流对于返回对象的处理 (结束流) package com.zhong.streamdemo.showdownstreamdemo;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;import java.util.*; import java.util.stream.Collectors; im…

移动应用开发Android 创建第一个Android项目

文章目录 一、创建第一个Android项目1.1 准备好Android Studio1.2 运行程序1.3 程序结构是什么app下的结构res - 子目录(所有图片、布局、字AndroidManifest.xml 有四大组件,程序添加权限声明 Project下的结构 二、开发android时,部分库下载异…

Jetpack Compose之进度条介绍(ProgressIndicator)

JetPack Compose系列(12)—进度条介绍 Compose自带进度条控件有两个,分别是:CircularProgressIndicator(圆形进度条)和LinearProgressIndicator(线性进度条)。 CircularProgressIn…

Visual Studio 2010+C#实现信源编码

1. 要求 本文设计了一套界面系统,该系统能够实现以下功能: 克劳夫特不等式的计算,并且能够根据计算结果给出相应的信息。可通过用户输入的初始条件然后给出哈夫曼编码以及LZ编码,结果均通过对话框来显示哈夫曼编码结果包含相应的…

[word] word中怎么插入另外一个word文档 #媒体#职场发展

word中怎么插入另外一个word文档 word中怎么插入另外一个word文档?有有些小伙伴在制作文档的时候,可能需要用到多个文档进行配合制作,今天小Q来给大家演示一下,插入Word文档的方法,插入其他类型文档的方法也是一样的。…

【lesson44】进程间通信之匿名管道

文章目录 理解进程通信管道理解使用管道1.创建管道2.fork创建子进程3.构建单向通信信道子进程构建通信父进程构建通信 使用管道的完整版代码扩展Task.hppProcessPool.cc 理解进程通信 进程运行具有独立性—>进程想通信,难度其实是比较大的---->进程通信的本质…

PCA与梯度上升法

PAC 主成分分析(Principal Component Analysis) 一个非监督的机器学习算法主要用于数据的降维通过降维,可以发现更便于人类理解的特征其他应用:可视化;去噪 如何找到这个让样本间间距最大的轴? 如何定义样…

diffusers单机多卡推理(全网首发)

起因 博主在部署InstantID项目时,显存不够,想要将模型分散在多张卡上。 翻到这篇发现是分布式推理,博主一直以为这个可以达到我想要的效果,但是效果是多线程并行推理,并不能将一个模型切片在多个GPU上。 Distributed …

Stability AI一种新型随心所欲生成不同音调、口音、语气的文本到语音(TTS)音频模型

该模型无需提前录制人声样本作为参考,仅凭文字描述就能生成所需的声音特征。用户只需描述他们想要的声音特点,例如“一个语速较快、带有英国口音的女声”,模型即可相应地生成符合要求的语音。它不仅能模仿已有的声音,还能根据用户…

C语言--------指针(1)

0.指针&指针变量 32位平台,指针变量是4个字节(32bit/84)--------x86 64位平台,指针变量是8个字节(64bit/88)--------x64 编号指针地址;我们平常讲的p是指针就是说p是一个指针变量; ************只要…

构造 蓝桥OJ小蓝的无限集

样例输入 4 1 4 7 2 5 8 3 6 8 12 11 81 样例输出 No Yes No No #include<bits/stdc.h> using namespace std;using ll long long;bool rnk(ll a, ll b, ll n) {if((n-1) % b 0) return true;else if (a 1) return false;ll res 1;while(res < n){res * a;if (r…

【Linux驱动】块设备驱动(三)—— 块设备读写(不使用请求队列)

并非每种块设备都会用到请求队列&#xff0c;从上节可以知道&#xff0c;请求队列的作用是管理和调用IO请求&#xff0c;那么反过来想&#xff0c;如果IO请求较少&#xff0c;那就可以无需使用请求队列。在以下情况中&#xff0c;可以不使用请求队列。 单任务环境: 当系统中只有…

HarmonyOS class类对象基础使用

按我们之前的写法 就是 Entry Component struct Dom {p:Object {name: "小猫猫",age: 21,gf: {name: "小小猫猫",age: 18,}}build() {Row() {Column() {// ts-ignoreText(this.p.gf.name)}.width(100%)}.height(100%)} }直接用 Object 一层一层往里套 这…

机器学习——有监督学习和无监督学习

有监督学习 简单来说&#xff0c;就是人教会计算机学会做一件事。 给算法一个数据集&#xff0c;其中数据集中包含了正确答案&#xff0c;根据这个数据集&#xff0c;可以对额外的数据希望得到一个正确判断&#xff08;详见下面的例子&#xff09; 回归问题 例如现在有一个…

基于单片机的造纸纸浆液位控制系统结构设计

摘要:为适应无人化与高效化制浆造纸生产体系&#xff0c;造纸企业趋于以嵌入式技术优化造纸过 程中的纸浆液位控制系统&#xff0c;以单片机与传感器相互耦合实现纸浆液位控制。本文基于单片机 设计了造纸纸浆液位控制系统&#xff0c;其结构由控制模块、信息采集模块、物联网模…

图数据库 之 Neo4j - Browser 介绍(3)

Neo4j Browser 介绍 Neo4j Browser 中有 3 个模块&#xff0c;侧边栏&#xff0c;Cypher 编辑器与结果栏&#xff0c;在进入 Neo4j Browser 时结果栏会展示欢迎界面。 Cypher 编辑器 Cypher 是一种图形查询语言&#xff0c;用于查询和操作图形数据库。它是 Neo4j 图形数据库的…