matplotlib.pyplot数据可视化(第三方库)

本文详细介绍了使用matplotlib.pyplot进行各种类型的绘图,包括线性图、直方图、条形图、饼图、散点图和3D图的实例,以及如何检测环境和导入第三方库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、matplotlib.pyplot绘图相关对象

二、绘图的类型

一、首先要检测环境

 二、导入第三方库

三、不同绘图类型

1、线型图(plot)

(1)图形不变,x轴变 

 (2)绘制平行四边形

(3)同一绘图区域绘制多图

 (4)多区域绘图

(5)综合示例

 2、直方图(hist)

3、条形图 (bar)

4、饼图(pie) 

 5、散点图(scatter)

6、3D图 


一、matplotlib.pyplot绘图相关对象

1、容器类:图(figure)、坐标系(axes)、坐标轴(axis)、刻度(tick)
2、基础类:线(line)、点(marker)、文本(text)、图例(legend)、网格(grid)、标题(title)

二、绘图的类型

1、线形图:plot()
2、直方图:hist()
3、条形图:bar()
4、饼图:pie()
5、散点图:scatter()
6、3D图:from mpl_toolkits.mplt3d import Axes3d
7、动态交互图:pyecharts

一、首先要检测环境

源码:

pip show matplotlib

输出:

Name: matplotlib
Version: 3.5.2
Summary: Python plotting package
Home-page: https://matplotlib.org
Author: John D. Hunter, Michael Droettboom
Author-email: matplotlib-users@python.org
License: PSF
Location: c:\users\administrator\anaconda3\lib\site-packages
Requires: cycler, fonttools, kiwisolver, numpy, packaging, pillow, pyparsing, python-dateutil
Required-by: seaborn
Note: you may need to restart the kernel to use updated packages.

 二、导入第三方库

import matplotlib.pyplot as plt #导入第三方数据可视化库matplotlib中的pyplot绘图模块
import numpy as np                #导入科学计算库,别名为np

三、不同绘图类型

1、线型图(plot)

源码:

#1、线形图:plot()
plt.plot([1,5,-8,7,4]) #默认为y坐标

输出:

(1)图形不变,x轴变 
方法里的点需要用列表或数组描述(用[]),如果只有一组数据表示y坐标(x坐标默认为0,1,2,。。。),如果有两组分别为x和y值,要求x值和y值位数相等

 源码:

#方法里的点需要用列表或数组描述(用[]),如果只有一组数据表示y坐标(x坐标默认为0,1,2,。。。),如果有两组分别为x和y值,要求x值和y值位数相等
plt.plot([1,2,3,5,7],[1,5,-8,7,4])#第一组列表或数组为X坐标,第二组列表或数组为Y坐标

输出:

源码:

plt.plot([5,8,6,3])
plt.xlabel('Gread')#x轴坐标签,坐标系默认为英文,如果需要显示为中文另加说明
plt.ylabel('Student')#y轴坐标签
plt.savefig('../R&Q_pic/test_0.png',dpi=600)

输出: 

 (2)绘制平行四边形

源码:

#绘制平行四边形
plt.plot([1,2,3,2,1],[1,2,2,1,1])
plt.axis([-10,10,-10,10]) #设置坐标轴取值范围,前面两位为x轴,后面两位为y轴,放数组【】里面
#plt.axis('off') #隐藏坐标轴
plt.savefig('../R&Q_pic/test_1.png',dpi=600)  #保存图形

输出:

(3)同一绘图区域绘制多图

源码:

#同一绘图区域绘制多图
import matplotlib.pyplot as plt
import numpy as np
a=np.arange(10)   #创建一个0-9的整数序列
plt.plot(a,a*1.5,'ro-',label='a')
plt.plot(a,a*2.5,'gx--',label='b')
plt.plot(a,a*3.5,'y*',label='c')
plt.plot(a,a*4.5,'bs-',label='d')
plt.plot(a,a**2,'mH--',label='e')
plt.savefig('../R&Q_pic/test_2.png',dpi=600)
plt.legend() #显示图例
plt.show()  #显示图表

输出:

源码:

import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.family']='kaiti'
x=np.arange(0,4,0.02)#生成x轴序列
y_1=np.sin(np.pi*x)+2#生成y轴序列
y_2=np.cos(np.pi*x)
plt.plot(x,y_1,'mx')
plt.plot(x,y_2,'x')
plt.legend(['正弦曲线','余弦曲线'])
plt.title('正弦曲线图') #图表标题
plt.savefig('../R&Q_pic/test_3.png',dpi=600)
#plt.show()#显示图表

 输出:

 (4)多区域绘图

源码:

import matplotlib.pyplot as plt
import numpy as np
def f(t):
    return np.exp(-t)*np.cos(2*np.pi*t)
a=np.arange(0,5,0.02)
plt.subplot(322)  #将当前坐标系切割成多个子块(3行2列,第2个区域)
plt.plot(a,f(a))

plt.subplot(323)
plt.plot(a,np.cos(2*np.pi*a),'-.',color='r')

plt.subplot(324)
plt.plot(a,np.sin(2*np.pi*a),'--',color='g')

plt.subplot(325)
plt.plot(a,np.tan(2*np.pi*a),':',color='m')

plt.savefig('../R&Q_pic/test_5.png',dpi=600)
plt.show()#显示图表

输出:

(5)综合示例

源码:

import matplotlib.pyplot as plt
plt.figure(num='气温趋势',figsize=(6,4))  #设置绘图区域大小
plt.rcParams['font.family']='Kaiti'       #设置字体
x=["周一","周二","周三","周四","周五","周六","周日"]
y_1=[20,15,18,16,21,14,10]         #一周最高气温
y_2=[12,8,14,10,13,9,4]           #一周最低气温
plt.title("一周气温变化趋势")         #图片标题
plt.xlabel("星期")                     #x轴标签
plt.ylabel("气温")                        #y轴标签
plt.plot(x,y_1,'rs--',label="最高气温")   #绘制最高气温
plt.plot(x,y_2,'bo--',label="最低气温")   #绘制最低气温
plt.legend()            #显示图例

plt.savefig('../R&Q_pic/test5.png',dpi=600)  #保存照片
plt.show()

 输出:

 2、直方图(hist)

源码:

import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.family']='STSong'

datas_1=10+np.random.randn(1000)  #随机生成1000个零
datas_2=12+np.random.randn(1000)  #随机生成1000个零
plt.hist(datas_1,bins=30)
plt.hist(datas_2,bins=30,alpha=0.4)
plt.legend(["以10为中心的正态分布","以12为中心的正态分布"])
plt.title("直方图")
plt.xlabel("区间")
plt.ylabel("频数")
plt.savefig('../R&Q_pic/test_6.png',dpi=600)
plt.show()#显示图表

输出:

3、条形图 (bar)

源码:

import matplotlib.pyplot as plt

plt.rcParams['font.family']='STSong'

years=["2014","2015","2016","2017","2018","2019"]
baokao_nums=[172,164.9,177,201,238,290]
luqu_nums=[54.87,57.06,58.98,72.22,76.25,79.3]
x=range(len(years))

plt.bar(x,height=baokao_nums,width=0.4)
plt.bar([i+0.4 for i in x],luqu_nums,width=0.4)
plt.xticks([i+0.2 for i in x],years)  #横坐标对应位置显示内容
plt.legend(["研究生报考人数","研究生录取人数"])
plt.title("研究生历年报考和录取情况")
plt.xlabel("年份")
plt.ylabel("人数/万人")
plt.savefig('../R&Q_pic/test_7.png',dpi=600)
plt.show()#显示图表

输出:

4、饼图(pie) 

源码:

#案例:已知一个学生的活动时间分配为:学习8小时、睡觉7小时、吃饭3小时、玩乐6小时,绘制该学生一天时间分配饼状图
import matplotlib.pyplot as plt
plt.rcParams['font.family']='FangSong'
plt.rcParams['font.size']=18  #设置字体大小
labels=['学习','睡觉','吃饭','玩乐'] #活动标签
hours=[8,7,3,6] #时间分配
colors=['c','m','r','y']#各部分颜色
plt.pie(hours,labels=labels,colors=colors,shadow=True,explode=(0,0.1,0,0),\
        autopct='%.1f%%',labeldistance=1.2)
plt.title("一天时间分配饼状图")
plt.savefig('../R&Q_pic/test_8.png',dpi=600)
plt.show()#显示图表

 输出:

 5、散点图(scatter)

 源码:

import matplotlib.pyplot as plt
import numpy as np
num=50
plt.rcParams['font.family']='STSong'
plt.rcParams['font.size']=18  #设置字体大小
x_scatter=np.random.randint(1,10,num)  
y_scatter=np.random.randint(1,10,num)  
colors=range(num)
size=np.random.randint(30,500,num)


plt.title("散点图")
plt.scatter(x_scatter,y_scatter,c=colors,s=size)
plt.savefig('figure')
plt.show()#显示图表

输出:

6、3D图 

源码 :


#3D图: from mpl _ toolkits .mplt3d import Axes3D#示例:绘制#= sin ( sqrt ( x 2+ y '2))/ sqrt (x2+ y '2)的图像 
import matplotlib.pyplot as plt 
import numpy as np 
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure( num ='3D绘图', figsize=(12,6))
ax =Axes3D( fig,auto_add_to_figure= False )
fig.add_axes(ax)
X,Y=np.mgrid[-20:20:100j,-20:20:100j] #生成代表 X 轴和 Y 轴数据的列表,并进行网格化

Z = np.sin( np.sqrt(X**2+Y**2))/np.sqrt(X**2+Y**2)
# Z = mp . sin ( np .5qrt( X **2+15*21)
#绘制三维图
surf = ax.plot_surface(X,Y,Z,rstride=1,cstride=1,cmap=plt.get_cmap('rainbow'))
ax.set_zlim(-0.5,1)#设置 Z 轴范围
ax.set_xlabel ('X')
ax.set_ylabel ('Y')
ax.set_zlabel ('Z')
plt.title('$z =sin(sqrt(x^2+y^2))/sqrt(x^2+y^2)$的三维图形')#设置标题
fig.colorbar(surf,shrink=0.5,aspect=5)
plt.savefig('../R&Q_pic/test9',dpi =600)
plt.show()

 输出:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不洒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值