Python学习记录(三)matplotlib库中pyplot的操作使用方法简单整理

matplotlib.pyplot是绘制各类可视化图形的命令子库,我们一般使用这一子模块来进行一些图形绘制从而实现数据可视化。

文章目录

    • 一、绘制简单图形
    • 二、绘制直方图
    • 三、绘制饼图
    • 四、绘制三维图像

一、绘制简单图形

首先我们将库导入

import matplotlib.pyplot as plt #导入pyplot
import numpy as np 

我们先来看一段代码

plt.plot([1,2,3,4])  #生成列表
plt.ylabel('numbers') #对Y轴进行命名
plt.show() #展示图形

这段代码中,plot作为pyplot内置的函数,可用于接受参数,如果只接受了一个列表或者是一个一维数组,那么matplotlib就会假设这个序列是Y轴上的取值,并且会自动为你生成X轴上的值(从0开始),长度与Y的长度相同。

通常来说,plot函数可以这样表示:

plt.plot(x, y, format_string)

其中x,y表示坐标,format_string是字符串格式的,表示颜色和线的类型,有以下的形式:

Python学习记录(三)matplotlib库中pyplot的操作使用方法简单整理_第1张图片
Python学习记录(三)matplotlib库中pyplot的操作使用方法简单整理_第2张图片
Python学习记录(三)matplotlib库中pyplot的操作使用方法简单整理_第3张图片

我们可以看看下面的例子

plt.plot([1,2,3,4],[1,4,9,16],'r.')
plt.show()

结果如下Python学习记录(三)matplotlib库中pyplot的操作使用方法简单整理_第4张图片
我们还可以使用axis函数接收一个list,设定横纵坐标尺度,如下所示

plt.axis([0,8,0,12])

list各个参数分别代表[X初始刻度,X终止刻度,Y起始刻度,Y终止刻度]

我们可以用这种办法设定X和Y轴,而后用plot函数绘制图像,代码如下

plt.axis([0,8,0,8])  #绘制一个X和Y轴都为0-8的坐标系
plt.plot([1,3,5,7],[1,3,5,7],'g:')  #绘制一条绿色虚线
plt.show()

结果如下
Python学习记录(三)matplotlib库中pyplot的操作使用方法简单整理_第5张图片

当然,我们可以同时绘制多条线段,代码如下

a=np.arange(0.,8.,0.2)  #创建一个从0到8,步长为0.2的等差数组
plt.plot(a,a,'g:',a,a**2,'b-',a,a**3,'rv')  #分别绘制y=x,y=x^2,y=x^3的三条线段
plt.show()

结果如下
Python学习记录(三)matplotlib库中pyplot的操作使用方法简单整理_第6张图片
当然,plot绘制的线还有很多属性,举一些简单的例子如下

a=np.arange(8)  #创建0到8的等差数列
plt.plot(a,a,linestyle='dotted',marker="1",markersize='5' ,color="r",linewidth=2) #绘制线条
plt.show()

结果如下
Python学习记录(三)matplotlib库中pyplot的操作使用方法简单整理_第7张图片
linestyle 线条样式 ;marker 标记风格 ;markersize 标记大小 ;color线条颜色,linewidth线条宽度等等,总的有以下这些
Python学习记录(三)matplotlib库中pyplot的操作使用方法简单整理_第8张图片
在此不一一展示。

通常我们使用numpy导入数据进行绘图,否则仅靠我们定义的列表无法完成大部分我们需要的图形绘制,比如我们可以试试绘制正弦和余弦函数的图像。

x=np.linspace(-np.pi,np.pi)  
x1=np.sin(x)
x2=np.cos(x)
plt.plot(x,x1,'b-',x,x2,'r-')
plt.show()

结果如下
Python学习记录(三)matplotlib库中pyplot的操作使用方法简单整理_第9张图片
我们还可以在同一图中绘制不同的东西。这时需要用到subplot() 函数

以下实例绘制正弦和余弦值:

x=np.linspace(-np.pi,np.pi)
x1=np.sin(x)
x2=np.cos(x)
# 绘制第一个图像 
plt.subplot(1,  2,  1)  #建立 subplot 网格,长为 1,宽为 2
plt.plot(x, x1) 
plt.title('Sin(x)')  #对第一个图像命名
# 绘制第二个图像
plt.subplot(1,  2,  2)   #建立第二个 subplot 网格,长为 1,宽为 2
plt.plot(x, x2) 
plt.title('Cos(x)')  #对第二个图像命名
# 展示图像
plt.show()

结果如下
Python学习记录(三)matplotlib库中pyplot的操作使用方法简单整理_第10张图片

二、绘制直方图

我们还可以使用pyplot绘制直方图,示例代码如下

data = np.random.randn(10000)
plt.hist(data, bins=40, normed=1, facecolor="green", edgecolor="black", alpha=0.7)
# 显示横轴标签
plt.xlabel("count")
# 显示纵轴标签
plt.ylabel("Probability")
# 显示图标题
plt.title("gram")
plt.show()

绘制直方图
data:必选参数,绘图数据
bins:直方图的长条形数目,可选项,默认为10
normed:是否将得到的直方图向量归一化,可选项,默认为0,代表不归一化,显示频数。normed=1,表示归一化,显示频率。
facecolor:长条形的颜色
edgecolor:长条形边框的颜色
alpha:透明度

结果如下
Python学习记录(三)matplotlib库中pyplot的操作使用方法简单整理_第11张图片

三、绘制饼图

我们可以使用pie函数来绘制饼图,示例代码如下

plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签

labels = ['努力','运气','天赋','人品','金钱','其它'] #设置每块饼的标签
sizes = [40,10,20,20,10,10]  #设置每块饼所占比例
explode = (0.1,0,0,0,0,0)  #表示饼图每个饼的突出程度
plt.pie(sizes,explode=explode,labels=labels,autopct='%1.1f%%',shadow=False,startangle=150)
plt.title("成功是怎么炼成的") #标题
plt.show()

sizes:每块饼所占比例;explode:每个饼的’突出程度;autopct 表示显示数据的格式; shadow表示二维饼图;startangle表示起始的角度。

结果如下
Python学习记录(三)matplotlib库中pyplot的操作使用方法简单整理_第12张图片

四、绘制三维图像

主要参考Python之Matplotlib数据可视化(七):用Matplotlib画三维图_ywsydwsbn的博客-CSDN博客

Matplotlib 原本只能画二维图。大概在 1.0 版本的时候,Matplotlib 实现了一些建立在二维图基础上的三维图功能,于是一组画三维图可视化的便捷(尚不完美)工具便诞生了。我们可以导入 Matplotlib 自带的 mplot3d 工具箱来画三维图

首先导入库

import matplotlib.pyplot as plt
from mpl_toolkits import mplot3d

导入这个子模块之后,就可以在创建任意一个普通坐标轴的过程中加入 projection='3d'关键字,从而创建一个三维坐标轴。

如下所示

sd = plt.axes(projection='3d')
plt.show()

Python学习记录(三)matplotlib库中pyplot的操作使用方法简单整理_第13张图片
最基本的三维图是由 (x , y , z ) 三维坐标点构成的线图与散点图。可以用 sd.plot3D 与 sd.scatter3D` 函数来创建它们。

简单来说,我们可以用sd.plot3D绘制线图,用sd.scatter3D绘制散点图。具体用法如下

#定义XYZ数据
zline=np.linspace(0,15,1000)  
xline=np.sin(zline)
yline=np.cos(zline)
d.plot3D(xline,yline,zline,'red') #绘制线图
plt.show()

结果如下
Python学习记录(三)matplotlib库中pyplot的操作使用方法简单整理_第14张图片
同样的,二维绘图的命名方式也适用于三维绘图,在此不多加赘述。

下面我们导入一个现有的坐标文件实现三维绘图,代码如下

filename='bunny.txt'   #将文件名赋值为变量
X,Y,Z=[ ],[ ],[ ]    #定义XYZ三个空列表,分别对应三个轴
with open(filename, 'r') as f:  #打开文档,类型是只读
	lines=f.readlines()           #按行读取数据
	for i in lines: 
		value=[ float(s) for s in i.split(" ")] #将行数据以空格分开,并以浮点型赋给value 
		X.append(value[0])    #将value 的第一个数值 添加到 列表X
		Y.append(value[1])    #将value 的第二个数值 添加到 列表Y
		Z.append(value[2])    #将value 的第三个数值 添加到 列表Z

这次我们使用scatter绘图来看看

d.scatter3D(X,Y,Z,c=Z,s=5, cmap='Blues',alpha=0.5)
plt.show()

结果如下
Python学习记录(三)matplotlib库中pyplot的操作使用方法简单整理_第15张图片
可以看到我们生成了一只生动的蓝色兔子。能够实现这样丰富的图像变化源于scatter提供的各类参数。我们可以通过更改各类参数来实现我们需要的效果。

scatter的参数分别有XYZ的坐标,c表示代表点的颜色或颜色序列,默认蓝色。如果需要显示多种颜色,可以传入一个颜色的列表,在这我直接采用了Z的数据。s表示点的大小,默认为20。cmap设置颜色的参数,alpha为透明度。我们还有其他很多可以设置的参数,具体参考如下
Python学习记录(三)matplotlib库中pyplot的操作使用方法简单整理_第16张图片
今天的关于PLT库的整理就到此为止了,最后一块三维绘图的内容算是拓展,只是简单进行介绍,所以也没有细讲,有机会再补充更多的内容。

如有不足或纰漏欢迎批评指正。

你可能感兴趣的:(数据可视化,python)