一、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()#显示图表
输出:
示例
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()#显示图表
输出: