matplotlib绘图
- 格式:docx
- 大小:17.02 KB
- 文档页数:6
Python利⽤matplotlib模块数据可视化绘制3D图⽬录前⾔1matplotlib绘制3D图形2绘制3D画⾯图2.1源码2.2效果图3绘制散点图3.1源码3.2效果图4绘制多边形4.1源码4.2效果图5三个⽅向有等⾼线的3D图5.1源码5.2效果图6三维柱状图6.1源码6.2效果图7补充图7.1源码7.2效果图总结前⾔matplotlib实际上是⼀套⾯向对象的绘图库,它所绘制的图表中的每个绘图元素,例如线条Line2D、⽂字Text、刻度等在内存中都有⼀个对象与之对应。
为了⽅便快速绘图matplotlib通过pyplot模块提供了⼀套和MATLAB类似的绘图API,将众多绘图对象所构成的复杂结构隐藏在这套API内部。
我们只需要调⽤pyplot模块所提供的函数就可以实现快速绘图以及设置图表的各种细节。
pyplot模块虽然⽤法简单,但不适合在较⼤的应⽤程序中使⽤。
为了将⾯向对象的绘图库包装成只使⽤函数的调⽤接⼝,pyplot模块的内部保存了当前图表以及当前⼦图等信息。
当前的图表和⼦图可以使⽤plt.gcf()和plt.gca()获得,分别表⽰"Get Current Figure"和"Get Current Axes"。
在pyplot模块中,许多函数都是对当前的Figure或Axes对象进⾏处理,⽐如说:plt.plot()实际上会通过plt.gca()获得当前的Axes对象ax,然后再调⽤ax.plot()⽅法实现真正的绘图。
可以在Ipython中输⼊类似"plt.plot??"的命令查看pyplot模块的函数是如何对各种绘图对象进⾏包装的。
1 matplotlib绘制3D图形matplotlib可以绘制3D图形,有的版本中不具备该模块,可以进⼊python环境,输⼊from mpl_toolkits.mplot3d import Axes3D 进⾏测试,如果导⼊成功则可以,否则需要安装matplotlib其他版本,这⾥我⽤的是2.0.2版本。
Pythonmatplotlib绘图可视化知识点整理(⼩结)⽆论你⼯作在什么项⽬上,IPython都是值得推荐的。
利⽤ipython --pylab,可以进⼊PyLab模式,已经导⼊了matplotlib库与相关软件包(例如Numpy和Scipy),额可以直接使⽤相关库的功能。
本⽂作为学习过程中对matplotlib⼀些常⽤知识点的整理,⽅便查找。
这样IPython配置为使⽤你所指定的matplotlib GUI后端(TK/wxPython/PyQt/Mac OS X native/GTK)。
对于⼤部分⽤户⽽⾔,默认的后端就已经够⽤了。
Pylab模式还会向IPython引⼊⼀⼤堆模块和函数以提供⼀种更接近MATLAB的界⾯。
import matplotlib.pyplot as pltlabels='frogs','hogs','dogs','logs'sizes=15,20,45,10colors='yellowgreen','gold','lightskyblue','lightcoral'explode=0,0.1,0,0plt.pie(sizes,explode=explode,labels=labels,colors=colors,autopct='%1.1f%%',shadow=True,startangle=50)plt.axis('equal')plt.show()matplotlib图标正常显⽰中⽂为了在图表中能够显⽰中⽂和负号等,需要下⾯⼀段设置:import matplotlib.pyplot as pltplt.rcParams['font.sas-serig']=['SimHei'] #⽤来正常显⽰中⽂标签plt.rcParams['axes.unicode_minus']=False #⽤来正常显⽰负号matplotlib inline和pylab inline可以使⽤ipython --pylab打开ipython命名窗⼝。
pyhton中matplotlib箱线图的绘制(matplotlib双轴图、箱线图、散点图。
//2019.07.23,它主要包含五个基础数据:中位数,两个上下分位数以及上下边缘线数据其中的⼀些参数具体含义及其计算过程如下:2、双轴图的绘制代码:import numpy as npimport matplotlib.pyplot as pltimport pandas as pdplt.rcParams["font.sans-serif"]=["SimHei"] #输出图像的标题可以为中⽂正常输出plt.rcParams["axes.unicode_minus"]=False #可以正常输出图线⾥的负号import warningswarnings.filterwarnings("ignore") #忽略相应的警告信息df=pd.read_excel("D:/Byrbt2018/Study/Python数据分析课程+练习+讲解/Python数据分析课程+练习+讲解/作业/作业4/作业4/酒店数据1.xlsx")#导⼊w我们的表格数据⽂件print(df)print(df.index)print(df.columns)d=df[:5]fig=plt.figure(figsize=(10,8))ax1=fig.add_subplot(1,1,1)n,bins,patches=ax1.hist(df["评分"],bins=100,color="m")ax1.set_ylabel("电影数量",fontsize=15)ax1.set_xlabel("评分",fontsize=15)ax1.set_title("频率分布直⽅图",fontsize=20)y=mlab.normpdf(bins,df["评分"].mean(),df["评分"].std()) #⽣成正态分布函数ax2=ax1.twinx() #定义新的双轴图函数ax2.plot(bins,y,"b--")ax2.set_ylabel("概率分布",fontsize=15)y=df["评分"][::10] #隔10个点进⾏选取数据点plt.figure(2)plt.scatter(x,y,color="r",marker="p") #散点图函数图像输出plt.xlabel("评分",fontsize=15)plt.ylabel("评分⼈数",fontsize=15)",fontsize=20)"]["评分"]print(d)plt.figure(4)plt.boxplot(d,whis=1.5,flierprops={"marker":"o","markerfacecolor":"r","color":"g"},patch_artist=True,boxprops={"color":"k","facecolor":"g"})#箱线图的格式设置和调整",fontsize=17)"]["评分"]d2=df[df.类型=="地铁周边"]["评分"]d3=df[df.类型=="休闲度假"]["评分"]d4=df[df.类型=="海滨风光"]["评分"]d5=df[df.类型=="交通⽅便"]["评分"]d6=df[df.类型=="商务出⾏"]["评分"]plt.figure(5)plt.boxplot([d1,d2,d3,d4,d5,d6],labels=["浪漫情侣","地铁周边","休闲度假","海滨风光","交通⽅便","商务出⾏"],whis=1.5,flierprops= {"marker":"o","markerfacecolor":"r","color":"g"},patch_artist=True,boxprops={"color":"k","facecolor":"g"},vert=True) #多组数据分布特征⽐较,vert决定了整体图像的横向与纵向#坐标轴的编辑与改变ax=plt.gca() #坐标轴的编辑与改变ax.patch.set_facecolor("white") #设置坐标轴的背景颜⾊ax.patch.set_alpha(0.3) #设置配⾊和透明度plt.title("不同类型酒店的评分箱线图",fontsize=20)plt.xlabel("酒店类型",fontsize=15)plt.ylabel("评分⼤⼩",fontsize=15)#相关系数矩阵图df1=df[["评分","评分⼈数"]]df1["排序"]=np.random.randint(1,100,396)print(df1)r1=pd.scatter_matrix(df1,diagonal="kde",color="k",alpha=0.3,figsize=(10,10))#对于多个数据减的散点图绘制函数参数设置,diagonal表⽰对⾓线图像kde/hist(数据密度图或者直⽅图选择)corr=df1.corr()corr=abs(corr)ax=plt.figure(figsize=(10,8))ax=sns.heatmap(corr,vmax=1,vmin=0,annot=True,annot_kws={"size":13,"weight":"bold"},linewidth=0.05)plt.xticks(fontsize=15)plt.yticks(fontsize=15)plt.xlabel("数据名称",fontsize=15)plt.ylabel("数据名称",fontsize=15)plt.title("不同数据间相关系数矩阵图",fontsize=20)plt.show()整体运⾏代码如下:import numpy as npimport matplotlib.pyplot as pltimport pandas as pdplt.rcParams["font.sans-serif"]=["SimHei"] #输出图像的标题可以为中⽂正常输出plt.rcParams["axes.unicode_minus"]=False #可以正常输出图线⾥的负号import warningswarnings.filterwarnings("ignore") #忽略相应的警告信息df=pd.read_excel("D:/Byrbt2018/Study/Python数据分析课程+练习+讲解/Python数据分析课程+练习+讲解/作业/作业4/作业4/酒店数据1.xlsx")#导⼊w我们的表格数据⽂件print(df)print(df.index)print(df.columns)d=df[:5]print(d)#双轴图的绘制.twinx()import matplotlib.mlab as mlabfig=plt.figure(figsize=(10,8))ax1=fig.add_subplot(1,1,1)n,bins,patches=ax1.hist(df["评分"],bins=100,color="m")ax1.set_ylabel("电影数量",fontsize=15)ax1.set_xlabel("评分",fontsize=15)ax1.set_title("频率分布直⽅图",fontsize=20)y=mlab.normpdf(bins,df["评分"].mean(),df["评分"].std()) #⽣成正态分布函数ax2=ax1.twinx() #定义新的双轴图函数ax2.plot(bins,y,"b--")ax2.set_ylabel("概率分布",fontsize=15)#散点图的绘制plt.scatter(x,y)绘制散点图x=df["评分⼈数"][::10]y=df["评分"][::10] #隔10个点进⾏选取数据点plt.figure(2)plt.scatter(x,y,color="r",marker="p") #散点图函数图像输出plt.xlabel("评分",fontsize=15)plt.ylabel("评分⼈数",fontsize=15)plt.title("酒店评分与⼈数散点图",fontsize=20)#箱线图的绘制d=df[df.类型=="商务出⾏"]["评分"]print(d)plt.figure(4)plt.boxplot(d,whis=1.5,flierprops={"marker":"o","markerfacecolor":"r","color":"g"},patch_artist=True,boxprops={"color":"k","facecolor":"g"})#箱线图的格式设置和调整plt.title("商务出⾏酒店的评分数据分布",fontsize=17)#多组数据的箱线图d1=df[df.类型=="浪漫情侣"]["评分"]d2=df[df.类型=="地铁周边"]["评分"]d3=df[df.类型=="休闲度假"]["评分"]d4=df[df.类型=="海滨风光"]["评分"]d5=df[df.类型=="交通⽅便"]["评分"]d6=df[df.类型=="商务出⾏"]["评分"]plt.figure(5)plt.boxplot([d1,d2,d3,d4,d5,d6],labels=["浪漫情侣","地铁周边","休闲度假","海滨风光","交通⽅便","商务出⾏"],whis=1.5,flierprops={"marker":"o","markerfacecolor":"r","color":"g"},patch_artist=True,boxprops={"color":"k","facecolor":"g"} ,vert=True) #多组数据分布特征⽐较,vert决定了整体图像的横向与纵向#坐标轴的编辑与改变ax=plt.gca() #坐标轴的编辑与改变ax.patch.set_facecolor("white") #设置坐标轴的背景颜⾊ax.patch.set_alpha(0.3) #设置配⾊和透明度plt.title("不同类型酒店的评分箱线图",fontsize=20)plt.xlabel("酒店类型",fontsize=15)plt.ylabel("评分⼤⼩",fontsize=15)#相关系数矩阵图df1=df[["评分","评分⼈数"]]df1["排序"]=np.random.randint(1,100,396)print(df1)r1=pd.scatter_matrix(df1,diagonal="kde",color="k",alpha=0.3,figsize=(10,10))#对于多个数据减的散点图绘制函数参数设置,diagonal表⽰对⾓线图像kde/hist#相关系数热⼒图import seaborn as snscorr=df1.corr()corr=abs(corr)ax=plt.figure(figsize=(10,8))ax=sns.heatmap(corr,vmax=1,vmin=0,annot=True,annot_kws={"size":13,"weight":"bold"},linewidth=0.05)plt.xticks(fontsize=15)plt.yticks(fontsize=15)plt.xlabel("数据名称",fontsize=15)plt.ylabel("数据名称",fontsize=15)plt.title("不同数据间相关系数矩阵图",fontsize=20)plt.show()输出结果如下:。
Python3matplotlib的绘图函数subplot()简介Python3 matplotlib的绘图函数subplot()简介⼀、简介matplotlib下, ⼀个Figure对象可以包含多个⼦图(Axes), 可以使⽤subplot()快速绘制, 其调⽤形式如下 :subplot(numRows, numCols, plotNum)图表的整个绘图区域被分成numRows⾏和numCols列然后按照从左到右,从上到下的顺序对每个⼦区域进⾏编号,左上的⼦区域的编号为1plotNum参数指定创建的Axes对象所在的区域如果numRows = 2, numCols = 3, 那整个绘制图表样式为2X3的图⽚区域, ⽤坐标表⽰为:(1, 1), (1, 2), (1, 3)(2, 1), (2, 2), (2, 3)这时, 当plotNum = 3时, 表⽰的坐标为(1, 3), 即第⼀⾏第三列的⼦图如果numRows, numCols和plotNum这三个数都⼩于10的话, 可以把它们缩写为⼀个整数, 例如subplot(323)和subplot(3,2,3)是相同的.subplot在plotNum指定的区域中创建⼀个轴对象. 如果新创建的轴和之前创建的轴重叠的话,之前的轴将被删除.⼆、参数说明1,subplots()参数matplotlib.pyplot.subplots(nrows=1, ncols=1, sharex=False, sharey=False, squeeze=True, subplot_kw=None, gridspec_kw=None, **fig_kw)创建⼀个画像(figure)和⼀组⼦图(subplots)。
这个实⽤程序包装器可以⽅便地在单个调⽤中创建⼦图的公共布局,包括封闭的图形对象。
输⼊参数说明: nrows,ncols:整型,可选参数,默认为1。
表⽰⼦图⽹格(grid)的⾏数与列数。
Matplotlib画图标注annotate详解标注原⽂:译者:协议:基本标注使⽤text()会将⽂本放置在轴域的任意位置。
⽂本的⼀个常见⽤例是标注绘图的某些特征,⽽annotate()⽅法提供辅助函数,使标注变得容易。
在标注中,有两个要考虑的点:由参数xy表⽰的标注位置和xytext的⽂本位置。
这两个参数都是(x, y)元组。
import numpy as npimport matplotlib.pyplot as pltfig = plt.figure()ax = fig.add_subplot(111)t = np.arange(0.0, 5.0, 0.01)s = np.cos(2*np.pi*t)line, = ax.plot(t, s, lw=2)ax.annotate('local max', xy=(2, 1), xytext=(3, 1.5),arrowprops=dict(facecolor='black', shrink=0.05),)ax.set_ylim(-2,2)plt.show()在该⽰例中,xy(箭头尖端)和xytext位置(⽂本位置)都以数据坐标为单位。
有多种可以选择的其他坐标系 - 你可以使⽤xycoords和textcoords以及下列字符串之⼀(默认为data)指定xy和xytext的坐标系。
| 参数 | 坐标系 || 'figure points' | 距离图形左下⾓的点数量 || 'figure pixels' | 距离图形左下⾓的像素数量 || 'figure fraction' | 0,0 是图形左下⾓,1,1 是右上⾓ || 'axes points' | 距离轴域左下⾓的点数量 || 'axes pixels' | 距离轴域左下⾓的像素数量 || 'axes fraction' | 0,0 是轴域左下⾓,1,1 是右上⾓ || 'data' | 使⽤轴域数据坐标系 |例如将⽂本以轴域⼩数坐标系来放置,我们可以:ax.annotate('local max', xy=(3, 1), xycoords='data',xytext=(0.8, 0.95), textcoords='axes fraction',arrowprops=dict(facecolor='black', shrink=0.05),horizontalalignment='right', verticalalignment='top',)对于物理坐标系(点或像素),原点是图形或轴的左下⾓。
数据分析第⼆篇:matplotlib常⽤的⼏个绘图⽅法Matplotlibmatplotlib是python的绘图库,使⽤它可以很⽅便的绘制出版质量级别的图形matplotlib的基本功能1.基本绘图1.1 绘制坐标系中连续的线,设置线型/线宽/颜⾊绘制⼀条线的相关APIimport numpy as npimport matplotlib.pyplot as plt# xarray:散点的x坐标数组# yarray:散点的y坐标数组plt.plot(xarray, yarray)plt.show()import numpy as npimport matplotlib.pyplot as pltx = np.arange(1,10)y = np.arange(1,10)plt.plot(x, y)plt.show()绘制⽔平线和垂直线相关API# 绘制⼀条垂直x轴的线,需要给定x坐标值的value,指定y坐标范围plt.vlines(value, ymin, ymax,..)# 绘制⼀条垂直y轴的线,需要给定y坐标值的value,指定x坐标范围plt.hlines(value, xmin, xmax,..)import numpy as npimport matplotlib.pyplot as pltx = np.arange(1,10)y = np.arange(1,10)plt.plot(x, y)plt.vlines(5, 3, 8)plt.hlines(5, 3, 8)plt.show()线型/线宽/颜⾊plt.plot(x,y,linestyle='', # 线型linewidth=1, # 线宽color='', # 颜⾊alpha=0.5 # 透明度)r 红⾊g 绿⾊b 蓝⾊c cyanm 紫⾊y ⼟黄⾊k ⿊⾊w ⽩⾊1.2 设置坐标轴的范围plt.xlim(x_lim_min, x_lim_max)plt.ylim(y_lim_min, y_lim_max)1.3 设置坐标刻度# 设置x轴的坐标刻度# x_val_list:坐标值列表# x_text_list:坐标刻度列表plt.xticks(x_val_list, x_text_list)plt.yticks(y_val_list, y_text_list)# 设置坐标刻度[-π,-π/2, 0, π/2, π]---------------⽅法⼀------------x_val_list= [-np.pi, -np.pi/2, 0, np.pi/2, np.pi]x_text_list = ['-π','-π/2','0','π/2','π']plt.xticks(x_val_list, x_text_list)--------------⽅法⼆-------------x_text_list = [r'$-\pi$',r'$-\frac{\pi}{2}$',r'0',r'$\frac{\pi}{2}$',r'${\pi}$']刻度⽂本的特殊语法 - LaTeX排版语法规范设置坐标轴坐标轴包含四个:left/right/bottom/top# getCurrentAxis() 获取当前坐标轴对象ax = plt.gca()ax1 = ax.spines['left']axr = ax.spines['right']# 设置坐标轴的颜⾊axl.set_color('none') # 设置坐标轴颜⾊为透明# 设置坐标轴的位置axl.set_position((type,val))# 设置坐标轴颜⾊与位置ax = plt.gca()ax.spines['top'].set_color('none')ax.spines['right'].set_color('none')ax.spines['left'].set_position(('data',0))ax.spines['bottom'].set_position(('data',0))1.4 显⽰图例# ⾃动在窗⼝中某个位置添加图例# 添加图例需要在调⽤plt.plot()绘制曲线时设置label参数通过loc参数设置图例的位置plt.legend(loc='')# 实例plt.plot(x, cos_x, linestyle='--', linewidth=3, color='y', label=r'$y =\frac{1}{2}cos(x)$') plt.plot(x, sin_x, linestyle='-.', linewidth=1, color='m', label=r'$y=sin(x)$')plt.legend()1.5 绘制特殊点plt.scatter(x,y,marker='', # 点型s=3, # 点的⼤⼩edgecolor='', # 边缘⾊facecolor='', # 填充⾊zorder=3) # 绘制顺序1.6 为图像添加备注plt.annotate('', # 备注内容xycoords='', # 备注⽬标点使⽤的坐标系xy=(x,y), # 备注⽬标点的坐标textcoords= '', # 备注⽂本使⽤的坐标系xytext = (x,y), # 备注⽂本的坐标fontsize = 14, # 备注⽂本字体⼤⼩arrowprops = dict() # 提⽰箭头属性)arrowprops参数使⽤字典定义只想⽬标点的箭头样式arrowprops = dict(arrowstyle = '', # 定义箭头样式connectionstyle = '' # 定义连接线样式)# 可设置箭头的弧度connectionstyle='arc3, rad=0.1',2.⾼级绘图2.1 绘制⼦图⼀次绘制两个窗⼝plt.figure('', # 窗⼝标题figsize=(4,3), # 窗⼝⼤⼩facecolor = '' # 窗⼝颜⾊)plt.show() # 展⽰窗⼝# 可以创建多个窗⼝,每个窗⼝的标题不同,后续调⽤plt的⽅法进⾏绘制时将作⽤于当前窗⼝上#,如果希望修改已经创建过的窗⼝,可以通过plt.figure('figure1')⽅法把该窗⼝设置为当前窗⼝。
Python实操:手把手教你用Matplotlib把数据画出来导读:获取数据之后,而不知道如何查看数据,用途还是有限的。
幸好,我们有Matplotlib!Matplotlib 是基于 NumPy 数组构建的多平台数据可视化库。
它是John Hunter 在2002年构想的,原本的设计是给 IPython 打补丁,让命令行中也可以有交互式的 MATLAB 风格的画图工具。
在近些年,已经出现了更新更好的工具最终替代了Matplotlib (比如 R 语言中的ggplot和ggvis),但 Matplotlib 依旧是一个经过良好测试的、跨平台的图形引擎。
作者:迈克尔·贝耶勒(Michael Beyeler)如需转载请联系大数据(ID:hzdashuju)01 引入 Matplotlib如果已安装Anaconda Python版本,就已经安装好了可以使用的Matplotlib。
否则,可能要访问官网并从中获取安装说明:正如使用np作为 NumPy 的缩写,我们将使用一些标准的缩写来表示 Matplotlib 的引入:In [1]: import matplotlib as mplIn [2]: import matplotlib.pyplot as plt在本书中,plt接口会被频繁使用。
02 生成一个简单的绘图让我们创建第一个绘图。
假设想要画出正弦函数sin(x)的线性图。
得到函数在x坐标轴上0≤x<10内所有点的值。
我们将使用 NumPy 中的 linspace 函数来在x坐标轴上创建一个从0到10的线性空间,以及100个采样点:In [3]: import numpy as npIn [4]: x = np.linspace(0, 10, 100)可以使用NumPy 中的sin函数得到所有x点的值,并通过调用plt中的plot函数把结果画出来:In [5]: plt.plot(x, np.sin(x))你亲自尝试了吗?发生了什么吗?有没有什么东西出现?实际情况是,取决于你在哪里运行脚本,可能无法看到任何东西。
matplotlib 绘图教程,设置标签与图例⼤家好,欢迎⼤家阅读周四数据处理专题,我们继续介绍matplotlib 作图⼯具。
在上⼀篇⽂章当中我们介绍了matplotlib 这个包当中颜⾊、标记和线条这三种画图的设置,今天我们同样也介绍三种新的设置。
分别是标题、轴标签以及图例,这三个内容也是⾮常实⽤并且常⽤的。
颜⾊、线条、标记这些设置的是图像本⾝的⼀些属性,⽽标题、轴标签这些数据是额外提供的补充数据,所以这两者的内在逻辑是不同的。
和公众号⼀样,图像的标题也很重要,它直接告诉我们这幅图表达的内容。
举个例⼦来说你画了logistics 的函数图像,但是给了⼀个外⾏⼈(⽐如⽼板)看,他是⽆论怎样也看不出来这究竟是什么意思的。
所以我们需要标题,告诉看这幅图的⼈,这幅图到底画了⼀些什么数据。
设置标题的⽅法很简单,如果我们就只有⼀幅图画的话,直接通过plt.title 来设置即可。
通过plt 设置title ⾮常⽅便,也是我们最常⽤的设置⽅法。
但是对于多个⼦图的场景,我们就不能通过plt 来设置title 了,⽽是希望对于每⼀个⼦图都能够设置⼀个单独的title 。
我们看⼀个之前的例⼦,我们之前⽤下⾯这段代码同时画出了两个图像:fig = plt.figure()ax1 = fig.add_subplot(2, 1, 1)ax2 = fig.add_subplot(2, 1, 2)ax1.plot(range(10))ax2.plot(x, y)plt.show()这⾥的每⼀个ax 都是⼀个subplot 的对象,也就代表着每⼀个⼦图。
所以我们要为⼦图设置title 的话,那么显然应该通过subplot 对象,也就是操作这⾥的ax 变量来进⾏。
这⾥我们⽤到的api 不再是title ,⽽是set_title 。
我也不知道为什么要起不⼀样的名字,可能是为了区分吧。
我们把set_title 的逻辑加上之后,得到的图像是这样的:这⾥有⼀个⼩⼩的问题是两个图挨得太近了,导致logistic 的标题和上⼀幅图的坐标轴重叠了。
一基础例1 知识点在一个画布上绘制多幅图片,了解需要导入的模块了解plot的用法了解title xlable ylable用法了解rcparams如何使用import numpy as npfrom matplotlib import pyplot as pltx = np.arange(1,11)y = 2 * x + 5data=np.arange(0,5,0.1)plt.rcParams['lines.linewidth']=5plt.title("Matplotlib demo")plt.xlabel("x axis caption")plt.ylabel("y axis caption")plt.plot(x,y)plt.plot(data,data**2)plt.plot(data,data)plt.show()例2 知识点了解常见的数学函数的使用如何创建m*n网络-plt.subplot(3, 3, 1)了解网格的定位 -根据subplot的第三个参数,下标从1开始import numpy as npimport matplotlib.pyplot as plt# 计算正弦和余弦曲线上的点的 x 和 y 坐标x = np.arange(0, 3 * np.pi, 0.1)y_sin = np.sin(x)y_cos = np.cos(x)y_arctan=np.arctan(x)# 建立 subplot 网格,高为 3,宽为3# 激活第一个 subplotplt.subplot(3, 3, 1)# 绘制第一个图像plt.plot(x, y_sin)plt.title('Sinx')# 将第二个 subplot 激活,并绘制第二个图像plt.subplot(3, 3, 5)plt.plot(x, y_cos)plt.title('Cosx')plt.subplot(3, 3, 9)plt.plot(x, y_arctan)plt.title('ARCTan')plt.rcParams['lines.linewidth']=1plt.rcParams['lines.linestyle']='-.'# 展示图像plt.show()例3知识点:import matplotlib.pyplot as pltimport numpy as npx1 = [1, 2, 3, 4]y1 = [1, 2, 3, 4] #第一组数据x2 = [1, 2, 3, 4]y2 = [2, 3, 4, 5] #第二组数据n = 10x3 = np.random.randint(0, 5, n)y3 = np.random.randint(0, 5, n) #使用随机数产生plt.scatter(x1, y1, marker = 'x',color = 'red', s = 40 ,label = 'First')# 记号形状颜色点的大小设置标签plt.scatter(x2, y2, marker = '+', color = 'blue', s = 40, label = 'Second') plt.scatter(x3, y3, marker = 'o', color = 'green', s = 40, label = 'Third') plt.legend(loc = 'best') # 设置图例所在的位置使用推荐位置plt.show()二实验准备工作:把数据文件导进来1 绘制第一季度散点图import numpy as npimport matplotlib.pyplot as pltplt.rcParams['font.sans-serif']='SimHei'#设置中文显示,否则可能无法显示中文或者是各种字符错乱plt.rcParams['axes.unicode_minus']=Falsedata=np.load("D:/tmp/国民经济核算季度数据.npz")#加载数据print(data)#这时的data是数据对象print(data.keys())#该数据对象是个字典,所以先获取他的key值print(data['columns'])#看一下key值里面有什么,print(data['values'])#看一下value值里面有什么,name=data['columns']values=data['values']plt.figure(figsize=(8,7))plt.scatter(values[:,0],values[:,2],marker='o')#以数据的第零列做x轴,第三列做y 轴,来描绘散点图plt.xlabel('年份');plt.ylabel('生产总值(亿元)');plt.ylim((0,225000))plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation=45)#此时取得值都是第一季度的plt.title('2000-2018年季度生产总值散点图')plt.savefig('D:/tmp/2000-2018年季度生产总值散点图.png')#注意要先保存再show plt.show()#下面是得到的结果2 分析的第1,2,3产业的的国民生产总值import numpy as npimport matplotlib.pyplot as pltplt.rcParams['font.sans-serif']='SimHei'#设置中文显示,否则可能无法显示中文或者是各种字符错乱plt.rcParams['axes.unicode_minus']=Falsedata=np.load("D:/tmp/国民经济核算季度数据.npz")#加载数据plt.figure(figsize=(8,7))plt.scatter(values[:,0],values[:,3],marker='o',c='red')#下面三类是绘制的第一二三产业的增加值plt.scatter(values[:,0],values[:,4],marker='D',c='blue')plt.scatter(values[:,0],values[:,5],marker='v',c='yellow')plt.xlabel('年份');plt.ylabel('生产总值(亿元)');plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation=45)#此时取得值都是第一季度的plt.title('2000-2018年季度生产总值散点图')plt.legend(['第一产业','第二产业','第三产业'])plt.savefig('D:/tmp/2000-2018年季度生产总值散点图.png')#注意要先保存再show plt.show()分析图,可以得到:第一季度增长平缓,第三季度呈现指数增长,第二季度每年会根据季度呈现指数增长。
总体来看,我国近18年的各个产业都在持续增长中,并且第二和第三产业的增长幅度比较大,18年增长了400%以上。
3 折线图分析第一季度import numpy as npimport matplotlib.pyplot as pltplt.rcParams['font.sans-serif']='SimHei'#设置中文显示,否则可能无法显示中文或者是各种字符错乱plt.rcParams['axes.unicode_minus']=Falsedata=np.load("D:/tmp/国民经济核算季度数据.npz")#加载数据plt.figure(figsize=(8,7))plt.plot(values[:,0],values[:,2],color='r',linestyle='--')plt.xlabel('年份');plt.ylabel('生产总值(亿元)');plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation=45)#此时取得值都是第一季度的plt.title('2000-2018年季度生产总值折现图')plt.savefig('D:/tmp/2000-2018年季度生产总值散点图.png')#注意要先保存再show plt.show()散点图可以反映x和y轴(特性)的相关关系,而绘制折线图可以了解特性之间的趋势关系4 点线图(其实就是改变marker)import numpy as npimport matplotlib.pyplot as pltplt.rcParams['font.sans-serif']='SimHei'plt.rcParams['axes.unicode_minus']=Falsedata=np.load("D:/tmp/国民经济核算季度数据.npz")#加载数据plt.figure(figsize=(8,7))plt.plot(values[:,0],values[:,2],color='r',linestyle='--',marker='s')#plot绘制点线图plt.xlabel('年份',fontsize=10);plt.ylabel('生产总值(亿元)',fontsize=20);plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation=45)plt.title('2000-2007年各季度国民生产总值点线图')plt.savefig('D:/tmp/a4.png')plt.show()有时可能默认的图片字体大小可能不符合要求,只需要用fontsize去改变大小即可5 各产业季度生产总值折线图plt.plot(values[:,0],values[:,3],'bs-')#第三个参数的含义是颜色blue点的形状正方形线的类型是实线-plt.plot(values[:,0],values[:,4],'ro-.')plt.plot(values[:,0],values[:,5],'gh--')plt.xlabel('年份',fontsize=15);plt.ylabel('生产总值(亿元)',fontsize=20);plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation=45)plt.title('2000-2007年各季度国民生产总值折线图')plt.legend(['第一季度','第二季度','第三季度'])plt.savefig('D:/tmp/a4.png')plt.show()同时把三条线加到同一张图片上,同时每个图片设置各自的属性(颜色,点的形状,线性)注意要先绘制图形,再添加图例(先plot再legend)否则图列显示不出来。