Python学习之路日志—利用matplotlib开发数据可视化项目(1)
2020-08-30 00:30
1016 查看
在学习完了《Python编程:从入门到实践》的第一个项目“外星人入侵”后,我来到了第二个项目:“数据可视化”,而这个项目我将在Mac OS X系统中用Sublime Text来完成。
1.1 安装matplotlib:
Apple的标准Python安装自带了matplotlib。要检查系统是否安装了matplotlib,可打开一个终端会话并尝试导入matplotlib,如下图所示:
如果没有出现任何错误消息,就说明系统已经安装了matplotlib。
1.2 绘制简单的散点图:
下面来使用matplotlib绘制一个简单的折线图,再对其进行定制,以实现信息更丰富的数据可视化。我们将使用平方数序列1、4、9、16和25来绘制这个图表。 只需向matplotlib提供如下数字,matplotlib就能完成其他的工作:
import matplotlib.pyplot as plt squares = [1, 4, 9, 16, 25] plt.plot(squares) plt.show()
我们首先导入了模块
pyplot,并给它指定了别名"plt" ,以免反复输入。模块
pyplot包含很多用于生成图表的函数。 我们创建了一个列表,在其中存储了前述平方数,再将这个列表传递给函数
plot(),这个函数尝试根据这些数字绘制出有意义的图形。
plt.show()打开matplotlib查看器,并显示绘制的图形,如下图所示。查看器让你能够缩放和导航图形,另外,单击磁盘图标可将图形保存起来:
上图所示的图形表明数字是越来越大的,但标签文字太小,线条太细。但matplotlib能够调整可视化的各个方面。下面通过一些定制来改善这个图形的可读性,如下所示:
# -*- coding:utf-8 -*- import matplotlib.pyplot as plt squares = [1, 4, 9, 16, 25] plt.plot(squares, linewidth=5) #设置图表标题,并给坐标轴加上标签及字体大小 plt.title('Square number',fontsize = 25) plt.xlabel('Value',fontsize = 25) plt.ylabel('Square of value',fontsize = 15) #设置刻度标记的大小 plt.tick_params(axis='both',labelsize = 15) plt.show()
参数
linewidth(见第5行)决定了
plot()绘制的线条的粗细。
函数
title()(见第8行)给图表指定标题。
在上述代码中,出现了多次的参数
fontsize指定了图表中文字的大小。
函数
xlabel()和
ylabel()让你能够为每条轴设置标题(见第9-10行)。
而函数
tick_params()设置刻度的样式(见第13行),其中指定的实参将影响x轴和y轴上的刻度 (
axes='both'),并将刻度标记的字号设置为14(
labelsize=15)。
最终的图表如下图所示:
图形更容易阅读后,我们发现这张图没有正确地绘制数据。下面来修复这个问题。 当向
plot()提供一系列数字时,它假设第一个数据点对应的 x 坐标值为0,但实际上我们的第一个点对应的 x 值为1。为改变这种默认行为,我们可以如下图所示给
plot()同时提供输入值和输出值:
现在
plot()将正确地绘制数据,因为我们同时提供了输入值和输出值,它无需对输出值的生成方式作出假设。最终的图形是正确的,如下图所示:
1.3 使用scatter()绘制散点图并设置其样式:
有时候,需要绘制散点图并设置各个数据点的样式。要绘制单个点,可使用函数
scatter(),并向它传递一对 x 和 y 坐标,它将在指定位置绘制一个点:
在第4行处,我们调用了
scatter(),并使用实参
s设置了绘制图形时使用的点的尺寸。如果此时运行scatter_squares.py,将在图表中央看到一个点,如下图所示:
要绘制一系列的点,可向
scatter()传递两个分别包含 x 值和 y 值的列表,如下所示:
列表
x_values包含要计算其平方值的数字,而列表
y_values包含前述每个数字的平方值。将这些列表传递给
scatter()。最终的结果如图所示:
此外,我们可以不必手工计算包含点坐标的列表,而让Python循环来替我们完成这种计算。下面是让程序自动绘制1000个点的代码:
我们首先创建了一个包含 x 值的列表,其中包含数字1~1001(见第5行)。接下来是一个生成 y 值的列表解析,它遍历 x 值(
for x in x_values),计算其平方值(
x**2), 并将结果存储到列表
y_values中。
然后,将输入列表和输出列表传递给
scatter()(见第7行)。 由于这个数据集较大,需要将点设置得较小,并使用函数
axis()指定了每个坐标轴的取值范围(见第15行)。函数
axis()要求提供四个值:x 和 y 坐标轴的最小值和最大值。在这里,我们将 x 坐标轴的取值范围设置为1~1001,并将 y 坐标轴的取值范围设置为1~1000000。结果如图所示:
相关文章推荐
- python连接mysql有哪些方法
- leetcode_214. 最短回文串 python3
- 编程-python-十进制与其他进制转换
- python -- 类(学习笔记)
- Python接口自动化测试-requests库的基础使用
- Python之joblib:joblib库的简介、安装、使用方法之详细攻略
- 分享一些自己面试碰到的Python面试题,会持续更新~
- 第8节课numpy作业
- Python为什么这么热门?学习Python有什么好处?
- python如何安装cv2模块
- Python数据预处理:彻底理解标准化和归一化(附视频教程)
- day40:MySQL:python操作mysql:pymysql模块&SQL注入攻击
- 100天精刷LeetCode-Day4:Reverse Linked List问题(附详细思路和python题解)
- leetcode_657. 机器人能否返回原点 python3
- LeetCode 87. 扰乱字符串 python
- Python学习第五课:条件控制语句
- Python学习之路日志—原创《Python编程:从入门到实践》前11章思维导图
- 为什么这么多人学习Python,Python有哪些优势?
- Python:更改默认启动的python程序及其对应的安装包路径(更改pip的默认安装包的路径)图文教程之详细攻略
- 深度学习中的Python小知识合集(文件读取、图像处理)