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 的标题和上⼀幅图的坐标轴重叠了。
python强⼤的绘图模块matplotlib⽰例讲解Matplotlib 是 Python 的绘图库。
作为程序员,经常需要进⾏绘图,在我⾃⼰的⼯作中,如果需要绘图,⼀般都是将数据导⼊到excel中,然后通过excel⽣成图表,这样操作起来还是⽐较繁琐的,所以最近学习了⼀下Matplotlib模块,将该模块的常⽤的绘图⼿段和⼤家分享⼀下,提⾼⼤家在⼯作中的效率;在⽰例中,我们主要⽤到Matplotlib和Numpy这两个模块来为⼤家演⽰Python强⼤的绘图功能,相信⼤家通过我下⾯的10个⽰例,基本上可以满⾜⼤家⽇常⼯作的需求,再次强调⼀下,只是简单的⽤法,⼤家千万不要想通过这篇博客获取到太⾼深的⽤法。
下⾯进⼊正题1、绘制⼀条直线代码如下,下⾯的代码⼤家应该都可以看懂吧# 导⼊常⽤的包import numpy as npimport matplotlib.pyplot as plt# ⽣成-1到1的数据,⼀共⽣成100个,也可以⽣成1到-1的数据,这些数据是平均分布的# 定义x轴的数据x = np.linspace(-1,1,100)# 定义y轴的数据y = x * 2 + 100plt.plot(x,y)# 显⽰图像plt.show()效果如下2、创建⼀个画布,同时设置该画布的⼤⼩代码如下import numpy as npimport matplotlib.pyplot as pltx = np.linspace(-1,1,100)y1 = x * 2 + 100y2 = x ** 2# 创建⼀个画布# figsize:设置画布的⼤⼩plt.figure(figsize=(2,2))plt.plot(x,y1)# 创建第⼆个画布plt.figure()plt.plot(x,y2)plt.show()效果如下,会同时显⽰两张画布3、在⼀张画布中画两条线,同时可以设置线的颜⾊,宽度,和风格代码如下import numpy as npimport matplotlib.pyplot as pltx = np.linspace(-1,1,100)y1 = x * 2 + 0.5y2 = x ** 2# color:表⽰设置线的颜⾊# linewidth:表⽰设置线的宽度# linestyle:表⽰设置线的风格plt.figure(figsize=(2,2))plt.plot(x,y1,color='r',linewidth=1.0,linestyle='--')plt.plot(x,y2,color='b',linewidth=5.0,linestyle='-')plt.show()# 上⾯的效果就是2条曲线被放到⼀个画布中效果如下4、限制x轴,y轴的显⽰范围,为x轴和y轴添加描述,替换x轴和y轴的显⽰信息代码如下import numpy as npimport matplotlib.pyplot as plt# 设置坐标轴x = np.linspace(-3,3,100)y1 = x * 2 + 0.5y2 = x ** 2plt.figure(figsize=(6,6))plt.plot(x,y1,color='r',linewidth=1.0,linestyle='--')plt.plot(x,y2,color='b',linewidth=5.0,linestyle='-')# 限制x轴的显⽰范围plt.xlim((-1,2))# 限制y轴的显⽰范围plt.ylim((-1,5))# 给x轴加描述plt.xlabel("xxxxxx")# 给y轴加描述plt.ylabel("yyyyyy")# 替换⼀下横坐标的显⽰temp = np.linspace(-2,2,11)plt.xticks(temp)# 替换纵坐标的标签,⽤level0代替之前的-1plt.yticks([-1,0,1,2,3,4,5],["level0","level1","level2","level3","level4","level5","level6"]) plt.show()效果如下5、对边框进⾏设置,调整x轴和y轴的位置代码如下import numpy as npimport matplotlib.pyplot as plt# 设置坐标轴x = np.linspace(-3,3,100)y1 = x * 2 + 0.5y2 = x ** 2plt.figure(figsize=(6,6))plt.plot(x,y1,color='r',linewidth=1.0,linestyle='--')plt.plot(x,y2,color='b',linewidth=5.0,linestyle='-')# 限制x轴的显⽰范围plt.xlim((-1,2))# 限制y轴的显⽰范围plt.ylim((-1,5))# 给x轴加描述plt.xlabel("xxxxxx")# 给y轴加描述plt.ylabel("yyyyyy")# 替换⼀下横坐标的显⽰temp = np.linspace(-2,2,11)plt.xticks(temp)# 替换纵坐标的标签,⽤level0代替之前的-1# plt.yticks([-1,0,1,2,3,4,5],["level0","level1","level2","level3","level4","level5","level6"]) # 获取边框ax = plt.gca()# 设置右边框的颜⾊为红⾊ax.spines["right"].set_color("r")# 去掉上边框ax.spines["top"].set_color(None)# 把x轴的刻度设置为bottomax.xaxis.set_ticks_position("bottom")# 把y轴的客户设置为leftax.yaxis.set_ticks_position("left")# 设置x和y交汇的点,x轴是0,y是也是0,也就是x轴和y轴的都是0点交汇ax.spines["bottom"].set_position(("data",0))ax.spines["left"].set_position(("data",0))plt.show()效果如下6、为画布添加图例代码如下#Auther Bob#--*--conding:utf-8 --*--import numpy as npimport matplotlib.pyplot as plt# 设置图例x = np.linspace(-3, 3, 100)y1 = x * 2 + 0.5y2 = x ** 2plt.figure(figsize=(6, 6))# ⾸先要为两条线分别取名,这⾥的逗号必须要有l1, = plt.plot(x, y1, color='r', linewidth=1.0, linestyle='--')l2, = plt.plot(x, y2, color='b', linewidth=5.0, linestyle='-')# handles控制图例中要说明的线# labels为两条线分别取⼀个label# loc控制图例的显⽰位置,⼀般⽤best,由代码为我们选择最优的位置即可plt.legend(handles=[l1, l2], labels=["test1", "test2"], loc='best')# 限制x轴的显⽰范围plt.xlim((-1, 2))# 限制y轴的显⽰范围plt.ylim((-1, 5))# 给x轴加描述plt.xlabel("xxxxxx")# 给y轴加描述plt.ylabel("yyyyyy")# 替换⼀下横坐标的显⽰temp = np.linspace(-2, 2, 11)plt.xticks(temp)# 替换纵坐标的标签,⽤level0代替之前的-1plt.yticks([-1, 0, 1, 2, 3, 4, 5], ["level0", "level1", "level2", "level3", "level4", "level5", "level6"]) # 为图像加⼀个图例,⽤来对图像做说明plt.show()效果如下7、为图像添加描述代码如下import numpy as npimport matplotlib.pyplot as plt# 为图像做标注x = np.linspace(-3,3,100)y1 = x * 2# y2 = x ** 2plt.figure(figsize=(6,6))plt.plot(x,y1,color='r',linewidth=1.0,linestyle='-')# 给x轴加描述plt.xlabel("xxxxxx")# 给y轴加描述plt.ylabel("yyyyyy")# ======================================================# 在x轴为x0,y轴为x0 * 2上画⼀个点,这个点的颜⾊是红⾊,⼤⼩为50,这个⼤⼩就是这个点显⽰的⼤⼩x0 = 0.5y0 = x0 * 2# scatter是画点的⽅法plt.scatter(x0,y0,color='g',s=50)# 画线# 这条线是第⼀个点的坐标为[x0,y0],第⼆个点的坐标为[x0,-6],后⾯就是设置线的风格,线的颜⾊,线的宽度plt.plot([x0,x0],[y0,-6],color='k',linestyle='--',linewidth=1.0)# 画箭头和描述# xy代表我们的点# xytext代码我们描述的位置,基于当前的点,在x轴+30,在y轴-30# r'$2*x={n}$是我们要显⽰的⽂字信息,格式必须要这样# textcoords表⽰作为起点# fontsize表⽰设置字体⼤⼩# arrowprops设置箭头# arrowstyle设置箭头的样式# connectionstyle设置风格.2表⽰弧度plt.annotate(r'$2*0.5={n}$'.format(n = y0),xy=(x0,y0),xytext=(+30,-30),textcoords='offset points',fontsize=10,arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=.2')) # 显⽰⽂字描述,从x轴为-1,y轴为2开始显⽰,$$中就是要显⽰的字符,这⾥如果要显⽰空格,则需要转义# fontdict设置字体plt.text(-1,2,r'$1\ 2\ 3\ 4$',fontdict={"size":16,"color":"r"})# =========================================================# 为图像加⼀个图例,⽤来对图像做说明plt.show()效果如下8、绘制散点图代码如下import numpy as npimport matplotlib.pyplot as plt# 绘制散点图# plt.scatter(np.arange(1,10,1),np.arange(10,19,1))# plt.scatter(np.linspace(-3,3,10),np.linspace(-3,3,10)) x = np.random.normal(1,10,500)y = np.random.normal(1,10,500)print(x)# s设置点的⼤⼩# c是颜⾊# alpha是透明度plt.scatter(x,y,s=50,c='b',alpha=0.5)plt.show()效果如下9、绘制直⽅图代码如下import numpy as npimport matplotlib.pyplot as plt# 绘制直⽅图x = np.arange(10)y = x ** 2 + 10# facecolor设置柱体的颜⾊# edgecolor设置边框的颜⾊plt.bar(x,y,facecolor='g',edgecolor='r')# 绘制翻转过来的直⽅图# plt.bar(x,-y)#显⽰⽂字for x,y in zip(x,y):plt.text(x,y,"{f}".format(f=y),ha="center",va='bottom') plt.show()效果如下10、⼀张画布显⽰多张图像代码如下#Auther Bob#--*--conding:utf-8 --*--import numpy as npimport matplotlib.pyplot as plt# plt.figure()# 有⼀个两⾏两列的单元格,这个位于第⼀个单元格# plt.subplot(2,2,1)# 画⼀条【0,0】-----》【1,1】的直线# plt.plot([0,1],[0,1])# 有⼀个两⾏两列的单元格,这个位于第⼀个单元格# plt.subplot(2,2,2)# 画⼀条【0,0】-----》【1,1】的直线# plt.plot([0,1],[0,1])# 有⼀个两⾏两列的单元格,这个位于第⼀个单元格# plt.subplot(2,2,3)# 画⼀条【0,0】-----》【1,1】的直线# plt.plot([1,0],[0,1])# plt.show()# 上⾯的例⼦,每张图他显⽰的⼤⼩是⼀样的,我们想显⽰不同的⼤⼩该怎么办?plt.figure()# 有⼀个两⾏三列的单元格,这个位于第⼀个单元格plt.subplot(2,1,1)# 画⼀条【0,0】-----》【1,1】的直线plt.plot([0,1],[0,1])# 有⼀个两⾏三列的单元格,这个位于第四个单元格,因为第⼀个单元格占了3个位⼦,所以这⾥就是第四个plt.subplot(2,3,4)# 画⼀条【0,0】-----》【1,1】的直线plt.plot([0,1],[0,1])# 有⼀个两⾏三列的单元格,这个位于第五个单元格plt.subplot(2,3,5)# 画⼀条【0,0】-----》【1,1】的直线plt.plot([1,0],[0,1])plt.show()效果如下11、matplotlib模块中的颜⾊和线条风格,取⾃菜鸟教程作为线性图的替代,可以通过向 plot() 函数添加格式字符串来显⽰离散值。
Python利⽤matplotlib绘制折线图的新⼿教程前⾔matplotlib是Python中的⼀个第三⽅库。
主要⽤于开发2D图表,以渐进式、交互式的⽅式实现数据可视化,可以更直观的呈现数据,使数据更具说服⼒。
⼀、安装matplotlibpip install matplotlib -i https:///simple⼆、matplotlib图像简介matplotlib的图像分为三层,容器层、辅助显⽰层和图像层。
1. 容器层主要由Canvas、Figure、Axes组成。
Canvas位于图像的最底层,充当画布的作⽤。
Figure位于Canvas之上,指画布上的⼀整张图像。
Axes位于Figure之上,指Figure中的单个图表,⼀个Figure中可以有⼀个或多个Axes,即⼀张图像中可以有⼀个或多个图表。
2. 辅助显⽰层是单个图表(Axes)中⽤来提供辅助信息的层。
辅助显⽰层主要包括Axes外观(facecolor)、边框线(spines)、坐标轴(axis)、坐标轴名称(axis label)、坐标轴刻度(tick)、坐标轴刻度标签(tick label)、⽹格线(grid)、图例(legend)、标题(title)等内容。
辅助层可使图像显⽰更加直观,提⾼可读性。
3. 图像层指Axes内通过plot、scatter、bar、histogram、pie等函数绘制出的图形。
三、matplotlib绘制折线图# coding=utf-8import matplotlib.pyplot as pltplt.figure(figsize=(20, 10), dpi=100)game = ['1-G1', '1-G2', '1-G3', '1-G4', '1-G5', '2-G1', '2-G2', '2-G3', '2-G4', '2-G5', '3-G1', '3-G2', '3-G3','3-G4', '3-G5', '总决赛-G1', '总决赛-G2', '总决赛-G3', '总决赛-G4', '总决赛-G5', '总决赛-G6']scores = [23, 10, 38, 30, 36, 20, 28, 36, 16, 29, 15, 26, 30, 26, 38, 34, 33, 25, 28, 40, 28]plt.plot(game, scores)plt.show()运⾏结果:figure(): 创建图像并设置图像的⼤⼩等属性,返回⼀张图像,可以传⼊很多参数,常⽤参数有两个。
python matplotlib plot参数Python Matplotlib Plot参数Matplotlib是一个流行的Python数据可视化库,可以用于创建各种静态、动态和交互式图表。
Matplotlib提供了多种绘图选项,包括线图、散点图、条形图、直方图、饼图等。
在使用Matplotlib创建图表时,我们需要使用不同的参数来控制绘制的样式和外观。
本文将介绍一些常用的Matplotlib plot参数。
1. 线型参数(linestyle)线型参数用于控制线条的样式。
Matplotlib提供了多种线型选项,包括实线(solid)、虚线(dashed)、点划线(dashdot)和点线(dotted)等。
以下是一些常用的线型参数及其对应的符号:- 实线:'-'或'solid'- 虚线:'--'或'dashed'- 点划线:'-.'或'dashdot'- 点线:':'或'dotted'示例代码:```pythonimport matplotlib.pyplot as pltimport numpy as npx = np.linspace(0, 10, 100)y1 = np.sin(x)y2 = np.cos(x)plt.plot(x, y1, linestyle='-', label='sin')plt.plot(x, y2, linestyle='--', label='cos')plt.legend()plt.show()```2. 颜色参数(color)颜色参数用于控制曲线或散点的颜色。
Matplotlib支持多种颜色表示方式,包括颜色名称、RGB元组、十六进制值等。
以下是一些常用的颜色参数及其对应的表示方式:- 红色:'r'或(1, 0, 0)或'#FF0000'- 绿色:'g'或(0, 1, 0)或'#00FF00'- 蓝色:'b'或(0, 0, 1)或'#0000FF'- 黄色:'y'或(1, 1, 0)或'#FFFF00'- 青色:'c'或(0, 1, 1)或'#00FFFF'- 洋红:'m'或(1, 0, 1)或'#FF00FF'- 黑色:'k'或(0, 0, 0)或'#000000'- 白色:'w'或(1, 1, 1)或'#FFFFFF'示例代码:```pythonimport matplotlib.pyplot as pltimport numpy as npx = np.linspace(0, 10, 100)y = np.sin(x)plt.plot(x, y, color='r')plt.show()```3. 点型参数(marker)点型参数用于控制散点图中点的样式。
【主题】:matplotlib plot 线形参数【内容】:1. 简介matplotlib是Python中常用的绘图库,可以用来绘制各种类型的图形,如折线图、散点图、直方图等。
在使用matplotlib绘制图形时,可以通过设置线形参数来调整图形的线条样式、颜色、宽度等,从而使得图形更加美观和清晰。
2. 线形参数的设置在matplotlib中,可以通过设置plot函数的参数来调整线的样式、颜色、宽度等。
常用的线形参数包括:- linestyle:线条样式,可以取值为'-'、'--'、'-.'、':'等,分别代表实线、虚线、点划线和点线。
- color:线条颜色,可以使用颜色名称或十六进制颜色码来表示,如'red'、'blue'、'#00FF00'等。
- linewidth:线条宽度,用于调整线条的粗细程度,一般取正数值表示。
3. 示例下面通过几个示例来展示如何使用线形参数来绘制不同样式的折线图。
示例1:绘制实线```pythonimport matplotlib.pyplot as pltimport numpy as npx = np.linspace(0, 10, 100)y = np.sin(x)plt.plot(x, y, linestyle='-', color='blue', linewidth=2) plt.show()```示例2:绘制虚线```pythonimport matplotlib.pyplot as pltimport numpy as npx = np.linspace(0, 10, 100)y = np.cos(x)plt.plot(x, y, linestyle='--', color='green', linewidth=2) plt.show()```示例3:绘制点划线```pythonimport matplotlib.pyplot as pltimport numpy as npx = np.linspace(0, 10, 100)y = np.tan(x)plt.plot(x, y, linestyle='-.', color='red', linewidth=2)plt.show()```4. 总结通过设置线形参数,可以使得绘制的图形更加丰富多彩,更符合实际的需求。
PythonMatplotlib绘图,参数操作准备⼯作我们需要先安装matplotlib库,然后导⼊库,这些很简单,我就不讲了,哦,把numpy也导⼊进来。
import matplotlib.pyplot as pltimport numpy as np正式开始plt.和ax.我们经常会在画图的代码⾥看到,有⽤plt.的,有⽤ax.的,两者到底有什么区别呢,画的图有什么不⼀样吗,我们先来⽤两种经常看到的⽅式实现⼀下。
plt.fig=plt.figure(num=1,figsize=(4,4))plt.plot([1,2,3,4],[1,2,3,4])plt.show()ax.fig=plt.figure(num=1,figsize=(4,4))ax=fig.add_subplot(111)ax.plot([1,2,3,4],[1,2,3,4])plt.show()我们看到上⾯两种画图⽅式可视化结果并⽆不同,那区别在哪呢?其实呢,第⼀种⽅式呢,是先⽣成了⼀个画布,然后在这个画布上隐式的⽣成⼀个画图区域来进⾏画图,第⼆种⽅式,先⽣成⼀个画布,然后,我们在此画布上,选定⼀个⼦区域画了⼀个⼦图,上⼀张官⽅的图,看看你能不能更好的理解除了ax之外,我们也可以直接⽤plt添加⼦图,⽅式如下fig=plt.figure(num=1,figsize=(4,4))plt.subplot(111)plt.plot([1,2,3,4],[1,2,3,4])plt.show()你看,这样添加⼦图,也是⼀样的,fig,⽣成⼀个画布,plt.subplot(111),将画布分为1x1的分布,并选中第⼀个⼦图进⾏操作。
虽然这样看着⼀样呢,但是后⾯修饰图⽚的时候,ax这个⽅式⽐plt的⽅式更加⽅便。
因此,本⽂我们⽤ax⽅式来学习画图,也希望⼤家都提前选定⼀种⾃⼰喜欢的⽅式来画图,添加⼦图,等⼀些列操作。
⼦图的创建在上⼀节的介绍中,讲到了⼦图,可能刚接触画图的同学,会有点疑惑,这节,我们来详细讲讲⼦图。
pythonmatplotlib绘图线条类型和颜⾊选择import numpy as npimport matplotlib.pyplot as pltlinestyle_str = [('solid', 'solid'), # Same as (0, ()) or '-'('dotted', 'dotted'), # Same as (0, (1, 1)) or '.'('dashed', 'dashed'), # Same as '--'('dashdot', 'dashdot')] # Same as '-.'linestyle_tuple = [('loosely dotted', (0, (1, 10))),('dotted', (0, (1, 1))),('densely dotted', (0, (1, 1))),('loosely dashed', (0, (5, 10))),('dashed', (0, (5, 5))),('densely dashed', (0, (5, 1))),('loosely dashdotted', (0, (3, 10, 1, 10))),('dashdotted', (0, (3, 5, 1, 5))),('densely dashdotted', (0, (3, 1, 1, 1))),('dashdotdotted', (0, (3, 5, 1, 5, 1, 5))),('loosely dashdotdotted', (0, (3, 10, 1, 10, 1, 10))),('densely dashdotdotted', (0, (3, 1, 1, 1, 1, 1)))]def plot_linestyles(ax, linestyles):X, Y = np.linspace(0, 100, 10), np.zeros(10)yticklabels = []for i, (name, linestyle) in enumerate(linestyles):ax.plot(X, Y+i, linestyle=linestyle, linewidth=1.5, color='black')yticklabels.append(name)ax.set(xticks=[], ylim=(-0.5, len(linestyles)-0.5),yticks=np.arange(len(linestyles)), yticklabels=yticklabels)# For each line style, add a text annotation with a small offset from# the reference point (0 in Axes coords, y tick value in Data coords).for i, (name, linestyle) in enumerate(linestyles):ax.annotate(repr(linestyle),xy=(0.0, i), xycoords=ax.get_yaxis_transform(),xytext=(-6, -12), textcoords='offset points',color="blue", fontsize=8, ha="right", family="monospace")fig, (ax0, ax1) = plt.subplots(2, 1, gridspec_kw={'height_ratios': [1, 3]},figsize=(10, 8))plot_linestyles(ax0, linestyle_str[::-1])plot_linestyles(ax1, linestyle_tuple[::-1])plt.tight_layout()plt.show()REFhttps:///3.1.0/gallery/lines_bars_and_markers/linestyles.htmlThe following format string characters are accepted to control the line style or marker:character description'-'solid line style'--'dashed line style'-.'dash-dot line style':'dotted line style'.'point marker','pixel marker'o'circle marker'v'triangle_downmarker'^'triangle_up marker'<'triangle_left marker'>'triangle_right marker'1'tri_down marker'2'tri_up marker'3'tri_left marker'4'tri_right marker's'square marker'p'pentagon marker'*'star marker'h'hexagon1 marker'H'hexagon2 marker'+'plus marker'x'x marker'D'diamond markervline markerhline markercharacter descriptionThe following color abbreviations are supported:character color‘b’blue‘g’green‘r’red‘c’cyan‘m’magenta‘y’yellow‘k’black‘w’whiteREFgood demoshttps:///2.1.1/api/_as_gen/matplotlib.pyplot.plot.htmlAll possible markers are defined here:marker symbol description"."point","pixel"o"circle"v"triangle_down"^"triangle_up"<"triangle_left">"triangle_right"1"tri_down"2"tri_up"3"tri_left"4"tri_right"8"octagon"s"square"p"pentagon"P"plus (filled)"*"star"h"hexagon1"H"hexagon2"+"plus"x"x"X"x (filled)"D"diamond"d"thin_diamond"|"vline"_"hline0 (TICKLEFT)tickleft1 (TICKRIGHT)tickright2 (TICKUP)tickupsymbolREFhttps:///3.1.0/api/markers_api.htmlREFhttps:///stable/tutorials/colors/colors.html https:///stable/gallery/color/named_colors.html。
一基础例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)否则图列显示不出来。