matplotlib绘图基础汇总
- 格式:doc
- 大小:58.50 KB
- 文档页数:9
matplotlib中plot方法matplotlib是一个Python的数据可视化库,它提供了一种简单而有效的方式来创建各种类型的图表,包括线图、散点图、柱状图、饼图等等。
其中,plot方法是matplotlib中最常用的方法之一,它可以用来绘制线图、散点图、柱状图等等。
plot方法的基本语法如下:pythonplt.plot(x, y, format_string, kwargs)其中,x和y是数据序列,format_string是一个可选的格式化字符串,用于指定线条的颜色、线型、标记等属性。
kwargs是一些可选的关键字参数,用于指定其他的属性,例如图表的标题、x轴和y轴的标签等等。
下面我们来详细介绍一下plot方法的用法和一些常用的属性。
1. 绘制线图绘制线图是plot方法最常用的功能之一。
我们可以使用plot方法来绘制一条或多条线,例如: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, 'r-', label='sin(x)')plt.plot(x, y2, 'g', label='cos(x)')plt.legend()plt.show()这段代码会生成一个包含两条线的图表,其中一条线是红色的实线,表示sin(x)函数;另一条线是绿色的虚线,表示cos(x)函数。
我们可以使用format_string 参数来指定线条的颜色、线型、标记等属性。
例如,'r-'表示红色的实线,'g'表示绿色的虚线。
2. 绘制散点图除了绘制线图,plot方法还可以用来绘制散点图。
我们可以使用plot方法来绘制一组点,例如:pythonimport matplotlib.pyplot as pltimport numpy as npx = np.random.rand(100)y = np.random.rand(100)colors = np.random.rand(100)sizes = 1000 * np.random.rand(100)plt.scatter(x, y, c=colors, s=sizes, alpha=0.5)plt.show()这段代码会生成一个包含100个随机点的散点图,其中每个点的颜色和大小都是随机生成的。
Python数据可视化库Matplotlib的使用随着数据的不断增加和呈现方式的多样化,数据可视化变得越来越重要。
当我们处理大量数据时,可视化图表是一个非常好的选择,它们可以帮助我们更好地理解和分析数据。
Matplotlib是一个广泛使用的Python数据可视化库,它可以用来创建各种图表,比如线图、散点图、柱状图等。
本文将介绍Matplotlib的基本知识,包括安装、常用函数和创建不同类型的图表等。
一、Matplotlib的安装Matplotlib需要安装在Python环境中才能使用。
安装Matplotlib的方法有很多,最简单的方法是使用pip命令。
在命令行中输入以下命令:pip install matplotlib当然,Matplotlib也可以通过Anaconda等Python发行版来安装。
二、Matplotlib的基本知识Matplotlib提供了丰富的接口来创建图表,支持各种类型的图表。
在使用Matplotlib之前,我们需要了解Matplotlib的核心对象:Figure、Axes和Axis。
Figure是最上层的容器,代表整个图形窗口。
在Matplotlib中,我们可以在Figure上添加一个或多个Axes来绘制图表。
Axes是绘图区域,它是Figure的一个子类。
在Axes内可以添加坐标轴(Axis)、文字(Text)、网格(Grid)和数据(Data)等。
Axis是数据的基本轴。
在Matplotlib中,我们可以创建一个或多个Axis对象,以及为每个Axis对象设置其属性和样式。
三、Matplotlib的基本用法1.绘制曲线图在Matplotlib中,我们可以使用plot()函数来绘制曲线图。
plot()函数的参数包括x轴和y轴的数据,以及设置曲线的样式和颜色等。
例如,我们可以使用以下代码来绘制一个简单的曲线图:import matplotlib.pyplot as pltx = np.linspace(-np.pi, np.pi, 256, endpoint=True)y = np.sin(x)plt.plot(x, y)plt.show()在这个例子中,我们使用numpy库中的linspace()函数生成一个区间内的等差数列,并使用numpy库中的sin()函数生成对应的sin曲线。
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命名窗⼝。
一、matplotlib的简介matplotlib是一个Python绘图库,它能够生成2D图形,包括线图、散点图、柱状图、饼图等,并且能够以高质量输出文件的形式保存这些图形。
matplotlib可以与NumPy一起使用,能够方便地对数据进行可视化。
二、matplotlib的安装要使用matplotlib,首先需要安装它。
可以通过pip命令来进行安装:```pip install matplotlib```安装完成后,在Python脚本中引入matplotlib库:```import matplotlib.pyplot as plt```三、matplotlib的基本用法1. 创建图形与坐标系要在matplotlib中绘制图形,首先需要创建一个图形对象和坐标系对象。
图形对象可以通过`plt.figure()`来创建,坐标系对象可以通过`plt.subplot()`来创建。
```pythonfig = plt.figure()ax = fig.add_subplot(111)```2. 绘制直线图要绘制直线图,可以使用`plt.plot()`方法。
这个方法可以传入x轴和y 轴上的数据点,并且可以指定线条的颜色、形状、宽度等参数。
```pythonx = [1, 2, 3, 4, 5]y = [2, 3, 5, 7, 11]plt.plot(x, y, color='r', linestyle='--', linewidth=2)```3. 绘制散点图要绘制散点图,可以使用`plt.scatter()`方法。
这个方法也可以传入x 轴和y轴上的数据点,并且可以指定点的大小、颜色等参数。
```pythonx = [1, 2, 3, 4, 5]y = [2, 3, 5, 7, 11]plt.scatter(x, y, s=50, c='b', marker='o')```4. 绘制柱状图要绘制柱状图,可以使用`plt.bar()`方法。
matplotlib基础绘图命令之bar的使⽤⽅法在matplotlib中,bar命令⽤于绘制柱状图,基本⽤法如下在matplotlib中,bar命令⽤于绘制柱状图,基本⽤法如下在matplotlib 中,bar命令⽤于绘制柱状图,基本⽤法如下在matplotlib中,bar命令⽤于绘制柱状图,基本⽤法如下在matplotlib中,bar命令⽤于绘制柱状图,基本⽤法如下在matplotlib中,bar命令⽤于绘制柱状图,基本⽤法如下plt.bar(x = [1, 2, 3, 4], height = [4, 2, 3, 1])输出结果如下参数x的值作为x轴坐标,height的值作为y轴坐标。
除了这两个基本参数外,bar命令常⽤的还有以下参数1. width, 柱⼦的宽度,即在x轴上的长度,默认是0.82. color, 柱⼦的填充⾊3. edgecolor, 柱⼦边框的颜⾊,默认为None4. linewidth, 柱⼦边框的宽度,默认为0,表⽰没有边框5. yerr,指定误差值的⼤⼩,⽤于在柱⼦上添加误差线6. ecolor, 表⽰errorbar color, 误差线的颜⾊7. bottom, 柱⼦底部的baseline, 默认为0各个参数设置的⽰例如下plt.bar(x = [1, 2, 3, 4], height = [4, 2, 3, 1], width = 0.8, edgecolor = 'black', linewidth = 2, align = 'center', color = 'g', yerr = 0.5, ecolor = 'r')输出结果如下柱状图还可以有很多的变种,通过barh命令,可以绘制⽔平⽅向的柱状图,⽤法如下plt.barh(y = [1, 2, 3, 4], width = [4, 2, 3, 1])输出结果如下在单⼀柱状图的基础上,通过叠加可以实现以下两种柱状图1. 堆积柱状图代码如下plt.bar(x = [1, 2, 3, 4], height = [4, 3, 2, 1], label = 'sampleA')plt.bar(x = [1, 2, 3, 4], height = [4, 3, 2, 1], bottom = [4, 3, 2, 1], label = 'sampleB')plt.legend()核⼼是通过将第⼀组柱⼦的⾼度作为第⼆组柱⼦的底部,即bottom参数,从⽽实现堆积的效果,输出结果如下2. 分组柱状图代码如下width = 0.4plt.bar(x = np.array([1, 2, 3, 4]) - width / 2, height = [4, 3, 2, 1], width = width, label = 'sampleA')plt.bar(x = np.array([1, 2, 3, 4]) + width / 2, height = [1, 2, 3, 4], width = width, label = 'sampleB')plt.legend()核⼼是根据宽度的值,⼿动计算柱⼦的中⼼坐标,然后⾃然叠加就可以形成⽔平展开的分组柱状图,输出结果如下matplotlib并不像R包ggplot2那样,提供了⼀步到位的接⼝,⽽是通过叠加组合最⼤程度的保留了灵活性,通过⼀⾏⾏绘图代码的叠加来实现复杂图表。
数据分析第⼆篇: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')⽅法把该窗⼝设置为当前窗⼝。
matplotlib基础绘图命令之errorbar的使⽤在matplotlib中,errorbar⽅法⽤于绘制带误差线的折线图,基本⽤法如下plt.errorbar(x=[1, 2, 3, 4], y=[1, 2, 3, 4], yerr=1)输出结果如下yerr参数⽤于指定y轴⽔平的误差,同时该⽅法也⽀持x轴⽔平的误差,对应参数xerr。
指定误差值有多种⽅式,上述代码展⽰的是指定⼀个统⼀标量的⽤法,此时,所以的点误差值都⼀样。
除此之外,还可以指定为⼀个和点的个数相同的数组,为每个点单独设置误差值,⽤法如下plt.errorbar(x=[1, 2, 3, 4], y=[1, 2, 3, 4], yerr=[1, 2, 3, 4])输出结果如下另外,考虑到每个点的上下误差会不同,也⽀持⽤⾏数为2的多维数组来单独指定每个点上下的误差值,⽤法如下plt.errorbar(x=[1, 2, 3, 4], y=[1, 2, 3, 4], yerr=[[1,2,3,4],[1, 2, 3, 4]])输出结果如下xerr参数的⽤法和yerr相同,这⾥不再赘述,⽰例如下plt.errorbar(x=[1, 2, 3, 4], y=[1, 2, 3, 4], xerr=1)输出结果如下errorbar⽅法⽀持同时指定xerr和yerr参数,⽤法如下plt.errorbar(x=[1, 2, 3, 4], y=[1, 2, 3, 4], xerr=0.5, yerr=0.5)输出结果如下对于误差图的样式,可以通过以下⼏个参数来个性化指定1. fmtfmt参数的值和plot⽅法中指定点的颜⾊,形状,线条风格的缩写⽅式相同,⽰例如下plt.errorbar(x=[1, 2, 3, 4], y=[1, 2, 3, 4], yerr=1, fmt='co--')上述代码同时指定了3个属性,输出结果如下默认的图中只有线条这⼀元素,所以当我们指定了点的属性时,如果不指定线条的风格等属性,则对应的属性为空,线条元素不会显⽰,⽰例如下plt.errorbar(x=[1, 2, 3, 4], y=[1, 2, 3, 4], yerr=1, fmt='co')上述代码没有指定线条的风格,输出结果如下再来看⼀个例⼦,⽰例如下plt.errorbar(x=[1, 2, 3, 4], y=[1, 2, 3, 4], yerr=1, fmt='c')上述代码只指定了颜⾊属性,输出结果如下2. ecolorecolor参数指定error bar的颜⾊,可以和折线的颜⾊加以区分,⽤法如下plt.errorbar(x=[1, 2, 3, 4], y=[1, 2, 3, 4], yerr=1, fmt='co--', ecolor='g')输出结果如下3. elinewidthelinewidth参数指定error bar的线条宽度,⽤法如下plt.errorbar(x=[1, 2, 3, 4], y=[1, 2, 3, 4], yerr=1, fmt='ro-',ecolor='k',elinewidth=10)输出结果如下4. lims系列参数lims系列参数⽤于控制误差线的显⽰,对于x轴⽔平的误差线⽽⾔,有以下两个参数1. xuplims2. xlolims对于y轴⽔平的误差线⽽⾔,有以下两个参数1. uplims2. lolims这四个参数默认的取值为False,当取值为True时,对应⽅向的误差线不显⽰,同时在另外⼀个⽅向上的误差线上,会⽤箭头加以标识。
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 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总结与体会1. 引言Matplotlib是一个强大的数据可视化库,为我们提供了丰富的绘图功能,使得我们能够通过图表更好地理解数据的特征和关系。
在使用Matplotlib的过程中,我深刻体会到了它的灵活性、易用性和广泛的应用领域。
本文将就Matplotlib的安装与基本用法、常用图表绘制、图表美化以及Matplotlib在数据分析中的应用等几个方面进行总结与体会。
2. Matplotlib的安装与基本用法安装Matplotlib十分简单,只需要使用pip命令即可完成安装。
安装完成后,我们可以通过import语句导入Matplotlib模块,并使用它的各种函数和方法进行图表的绘制。
Matplotlib的基本用法包括创建图表对象、绘制图形、设置图表属性和显示图表等。
通过这些基本用法,我们可以实现简单的数据可视化。
3. 常用图表绘制Matplotlib提供了丰富的图表绘制方法,包括折线图、柱状图、散点图、饼图等。
这些图表都有各自的特点和适用场景。
折线图适用于展示数据的趋势和变化规律,柱状图适用于比较不同数据之间的差异,散点图适用于展现变量之间的相关关系,饼图适用于展示数据的占比情况等。
在实际应用中,我们可以根据需要选择合适的图表进行绘制,以更好地展示数据的特征。
3.1 折线图折线图是Matplotlib中最常用的一种图表类型,可以用于展示数据的趋势和变化。
折线图的绘制只需要提供对应的横轴数据和纵轴数据,Matplotlib会自动将数据连接起来,形成一条折线。
通过设置折线的颜色、线型和标签等属性,我们可以对折线图进行定制化。
3.2 柱状图柱状图是用于比较不同类别或不同组的数据之间差异的图表类型。
柱状图的绘制需要提供对应类别或组的名称和数据,Matplotlib会根据数据的大小自动绘制柱状图。
通过调整柱子的宽度、颜色和排列方式等属性,我们可以使柱状图更加清晰地展示数据之间的差异。
3.3 散点图散点图用于展示两个变量之间的关系,可以通过散点的分布规律来判断变量之间是否存在相关性。
Python中的matplotlib库是一个功能强大的数据可视化工具,可以帮助用户创建各种类型的图表和图形。
在使用matplotlib库时,一些常用的函数可以帮助用户更高效地实现数据可视化的目标。
本文将介绍一些常用的matplotlib函数,帮助读者更好地掌握数据可视化技巧。
1. plt.plot()plt.plot()函数是matplotlib中最常用的函数之一,用于绘制折线图。
该函数可以接受多个参数,包括x轴数据,y轴数据以及线条样式等。
我们可以使用plt.plot(x, y, color='r', linestyle='-', linewidth=2)来绘制一条红色实线并设置线宽为2的折线图。
这个函数非常灵活,可以满足各种折线图的需求。
2. plt.scatter()plt.scatter()函数用于绘制散点图,可以展示变量之间的关系以及离群点的分布情况。
该函数接受x轴数据和y轴数据作为参数,并可以指定点的颜色,大小和形状等样式。
使用plt.scatter(x, y, c='b', s=50, marker='o')可以绘制出蓝色的点,大小为50,并且形状为圆形的散点图。
3. plt.bar()plt.bar()函数用于绘制条形图,可以展示不同类别之间的数量或大小对比情况。
该函数接受x轴数据和y轴数据作为参数,并可以指定条形的宽度,颜色和透明度等样式。
使用plt.bar(x, y, width=0.5,color='g', alpha=0.5)可以绘制出绿色、宽度为0.5并且透明度为0.5的条形图。
4. plt.pie()plt.pie()函数用于绘制饼图,可以展示不同类别占比的情况。
该函数接受一个数据列表作为参数,并可以指定饼图的颜色,标签和旋转角度等样式。
使用plt.pie(data, colors=['r', 'g', 'b'], labels=['A', 'B', 'C'], startangle=90)可以绘制出红绿蓝三种颜色的饼图,并且指定起始角度为90度。
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。
matplotlib基础绘图命令之pie在matplotlib中,pie⽅法⽤于绘制饼图,基本⽤法如下plt.pie(x=[1, 2, 3, 4])输出的结果如下这样的饼图并没有任何实⽤价值,为了有效的展⽰信息,⾄少我们还需要显⽰数据的标签和百分⽐的数值。
此时就需要调整参数,pie⽅法常⽤的参数有以下⼏个1. labels, 设置饼图中每部分的标签2. autopct, 设置百分⽐信息的字符串格式化⽅式,默认值为None,不显⽰百分⽐3. shadow, 设置饼图的阴影,使得看上去有⽴体感,默认值为False4. startangle, 饼图中第⼀个部分的起始⾓度,5. radius, 饼图的半径,数值越⼤,饼图越⼤6. counterclock, 设置饼图的⽅向,默认为True,表⽰逆时针⽅向,值为False时为顺时针⽅向7. colors,调⾊盘,默认值为None, 会使⽤默认的调⾊盘,所以通常情况下,不需要设置该参数8. explode, 该参数⽤于突出显⽰饼图中的指定部分下⾯来具体看下其中⼏个参数的⽤法1. labelslabels指定每个部分的标签,⽤法如下plt.pie(x=[1, 2, 3, 4], labels=['sampleA', 'sampleB', 'sampleC', 'sampleD'])输出结果如下2. autopctautopct设置饼图上的标记信息,有两种设置⽅式,第⼀种,设置字符串格式化,⽤法如下plt.pie(x=[1, 2, 3, 4], labels=['sampleA', 'sampleB', 'sampleC', 'sampleD'], autopct='%.1f%%')输出结果如下第⼆种,⽤函数来进⾏设置,⽤法如下data=[1,2,3,4]plt.pie(x=data, labels=['sampleA', 'sampleB', 'sampleC', 'sampleD'],autopct=lambda pct:'({:.1f}%)\n{:d}'.format(pct, int(pct/100 * sum(data))))输出结果如下3. explodeexplode⽤于突出线似乎饼图中的⼦集,⽤间隔突出的⽅式进⾏显⽰,⽤法如下plt.pie(x=[1, 2, 3, 4], labels=['sampleA', 'sampleB', 'sampleC', 'sampleD'], autopct='%1.1f%%', explode = [0, 0, 0.05, 0])输出结果如下4. startanglestartangle指定起始⾓度,⽤法如下plt.pie(x=[1, 2, 3, 4], labels=['sampleA', 'sampleB', 'sampleC', 'sampleD'],autopct='%1.1f%%',startangle=90)输出结果如下5. countercolockcountercolock⽤于调整饼图的⽅向,⽤法如下plt.pie(x=[1, 2, 3, 4], labels=['sampleA', 'sampleB', 'sampleC', 'sampleD'],autopct='%1.1f%%',counterclock=False)输出结果如下6. radiusradius⽤于设置饼图的半径,半径越⼤,饼图越⼤,⽤法如下plt.pie(x=[1, 2, 3, 4], labels=['sampleA', 'sampleB', 'sampleC', 'sampleD'],autopct='%1.1f%%',radius=1.5)输出结果如下对于饼图⽽⾔,有⼀个⾮常现实的问题,就是图例的设置,在单张图⽚中,饼图的内容总是汇合图例重叠,⽰意如下为了将图例和内容有效的区分开来,可以通过设置legend⽅法的bbox_to_anchor参数,该参数⽤于设置图例区域在figure上的坐标,其值为4个元素的元组,分别表⽰x,y,width,height, 代码如下data=[1,2,3,4]labels=['sampleA', 'sampleB', 'sampleC', 'sampleD']plt.pie(x=data, labels=labels, autopct=lambda pct:'({:.1f}%)\n{:d}'.format(pct, int(pct/100 *sum(data))))plt.legend(labels,loc="upper left",bbox_to_anchor=(1.2, 0, 0.5, 1))x的值⼤于1,表⽰图例的位置位于axes右侧区域,x的值越⼤,图例和饼图之间的空隙越⼤,上述代码的输出效果如下饼图作为常⽤图表之⼀,在展⽰百分⽐信息时,有不可替代的优势。
Matplotlib初识——简单绘制及plot函数Matplotlib主要是为数据可视化显⽰服务的库,受Matlab启发matplotlib.pyplot是绘制各类可视化图形的命令⼦库,相当于快捷⽅式pyplot 绘图区域概念在Matplotlib中Figure对象是图表的基础(通俗点讲就是绘图的画纸),⽽⼀个Figure可以分很多个绘图区域,在有的书上也称为Axes,请不要与坐标轴(Axis)搞混。
在绘制图形的时候⼀般是⼀个绘画区域绘制⼀个图形,可以通过subplot⽅法进⾏划分:plt.subplot(nrows.ncols,plot_number)第⼀个参数和第⼆个参数分别表⽰:纵向和横向绘图区域划分块数第三个参数为选定的绘图区域,从左到右从上到下依次编号。
例:plt.subplot(3,2,4)实例(⽹易mooc上好多错误,我仔细改了⼀遍):importnumpyasnpimportmatplotlib.pyplotaspltreturnnp.exp(-t)*np.cos(2*np.pi*t)a=np.arange(0.0,5.0,0.02)plt.subplot(2,1,1)#两⾏⼀列的划分,选取从上到下从左到右第⼀个plt.plot(a,f(a))plt.subplot(2,1,2)#选取第⼆个plt.plot(a,np.cos(2*np.pi*a),'r--')plt.show()label()函数:标注轴信息xlabel()和ylabel()函数分别可以给x轴和y轴标注信息,在标注中⽂信息时需要额外注意。
⼀般在绘图函数之前先标注好可以使⽤rcParamas⽅法进⾏全局调整:matplotlib.rcParams['font.family'] =但更建议使⽤第⼆种⽅法:在xlabel函数中添加参数fontproperties = '中⽂字体'pit.xlabel('横轴:时间',fontproperties='SimHei',frontsize=20)#frontsize是字体⼤⼩忘说了plot()函数:简单绘图概述该函数主要⽤来绘制简单的坐标系图像plt.plot(x,y,format_string,**kwargs)说明:x⽤来写⼊x轴的数据y⽤来写⼊y轴的数据在只绘制⼀条曲线时,可以省略x轴,但不能省略y轴,在省略x轴的时候使⽤y的检索(你的参数顺序)确定对应的x值,意思就是你第1个输⼊的y值没有x值的话,该点的坐标就是(1,y)format_string⽤来输⼊相关控制线条和外观的字符串。
matplotlib绘图基础matplotlib介绍matplotlib 是Python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图。
而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中。
它的文档相当完备,并且Gallery页面中有上百幅缩略图,打开之后都有源程序。
因此如果你需要绘制某种类型的图,只需要在这个页面中浏览/复制/粘贴一下,基本上都能搞定。
在Linux下比较著名的数据图工具还有gnuplot,这个是免费的,Python有一个包可以调用gnuplot,但是语法比较不习惯,而且画图质量不高。
而Matplotlib则比较强:Matlab的语法、python语言、latex的画图质量(还可以使用内嵌的latex引擎绘制的数学公式)。
可以在Ipython中输入类似"plt.plot??"的命令查看pyplot模块的函数是如何对各种绘图对象进行包装的。
面向对象方式绘图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()方法实现真正的绘图。
如,用下面的代码先获得axes对象再用ax来操作ax = plt.gca()ax = plt.axes()地如设置xy轴的tickers就要用ax.yaxis来操作ax.yaxis.set_minor_locator(yminorLocator)安装numpy和matplotlibpip install numpypip install matplotlibmatplotlib安装出错ImportError: libBLT.2.4.so.8.6: cannot open shared object file: No such file or directory, please install the python3-tk package[import matplotlib.pyplot as plt fails with error about python-tk]检测是否安装成功:>>> import numpy>>> numpy.__version__>>> import matplotlib>>> matplotlib.__version__不同绘图语言比较工科生说Matlab完爆其他数学系的说Mathematica高贵冷艳统计系的说R语言作图领域天下无敌计算机系的说Python低调奢华有内涵[如何在论文中画出漂亮的插图]matplotlib.pyplot模块- 快速绘图matplotlib的pyplot子库提供了和matlab类似的绘图API,方便用户快速绘制2D图表。
1.调用figure创建一个绘图对象,并且使它成为当前的绘图对象。
(可选)plt.figure(figsize=(8,4))也可以不创建绘图对象直接调用接下来的plot函数直接绘图,matplotlib会为我们自动创建一个绘图对象!!如果需要同时绘制多幅图表的话,可以是给figure传递一个整数参数指定图标的序号,如果所指定序号的绘图对象已经存在的话,将不创建新的对象,而只是让它成为当前绘图对象。
figsize参数:指定绘图对象的宽度和高度,单位为英寸;dpi参数指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80。
因此本例中所创建的图表窗口的宽度为8*80 = 640像素。
但是用show()出来的工具栏中的保存按钮保存下来的png图像的大小是800*400像素。
这是因为保存图表用的函数savefig使用不同的DPI配置,savefig函数也有一个dpi参数,如果不设置的话,将使用matplotlib配置文件中的配置,此配置可以通过如下语句进行查看:>>>matplotlib.rcParams["savefig.dpi"]1002.通过调用plot函数在当前的绘图对象中进行绘图plt.plot(years, price, 'b*')#,label="$cos(x^2)$")plt.plot(years, price, 'r')Note:1. 第一句将x,y数组传递给plot2.通过第三个参数"b--"指定曲线的颜色和线型,这个参数称为格式化参数,它能够通过一些易记的符号快速指定曲线的样式。
其中b表示蓝色,"--"表示线型为虚线。
3. 用关键字参数指定各种属性:label : 给所绘制的曲线一个名字,此名字在图示/图例(legend)中显示。
只要在字符串前后添加"$"符号,matplotlib就会使用其内嵌的latex引擎绘制的数学公式。
color : 指定曲线的颜色linewidth : 指定曲线的宽度具体参见【附录- matplotlib中的作图参数】3.设置绘图对象的各个属性plt.xlabel("years(+2000)")plt.ylabel("housing average price(*2000 yuan)")plt.ylim(0, 15)plt.title('line_regression & gradient decrease')plt.legend()xlabel : 设置X轴的文字ylabel : 设置Y轴的文字title : 设置图表的标题ylim : 设置Y轴的范围legend : 显示图示4.最后调用plt.show()显示出我们创建的所有绘图对象。
Matplotlib 里的常用类的包含关系为Figure -> Axes -> (Line2D, Text, etc.)一个Figure对象可以包含多个子图(Axes),在matplotlib中用Axes对象表示一个绘图区域,可以理解为子图。
清空plt绘制的内容plt.cla()plt.close(0)# 关闭图0plt.close('all') 关闭所有图图形保存和输出设置可以调用plt.savefig()将当前的Figure对象保存成图像文件,图像格式由图像文件的扩展名决定。
下面的程序将当前的图表保存为“test.png”,并且通过dpi参数指定图像的分辨率为120,因此输出图像的宽度为“8X120 = 960”个像素。
plt.savefig("test.png",dpi=120)也可以通过show()出来的图形界面手动保存和设置matplotlib中绘制完成图形之后通过show()展示出来,我们还可以通过图形界面中的工具栏对其进行设置和保存matplotlib修改图片大小:图形界面下方工具栏可以设置图形上下左右的边距如果想在跑程序外部查看图片,可以这样:plt.savefig('/tmp/1.png')subprocess.run('xdg-open /tmp/1.png', shell=True有个问题就是绘制的图中横纵坐标下面的+3.156e1代表什么意思?也不是坐标值的单位,那是什么呢。
5. 绘制多子图可以使用subplot()快速绘制包含多个子图的图表,它的调用形式如下:subplot(numRows, numCols, plotNum)matplotlib.pyplot.subplots(nrows=1, ncols=1, sharex=False, sharey=False, squeeze=True, subplot_kw=None, gridspec_kw=None, **fig_kw)subplot将整个绘图区域等分为numRows行* numCols列个子区域,然后按照从左到右,从上到下的顺序对每个子区域进行编号,左上的子区域的编号为1。
如果numRows,numCols和plotNum 这三个数都小于10的话,可以把它们缩写为一个整数,例如subplot(323)和subplot(3,2,3)是相同的。
subplot在plotNum指定的区域中创建一个轴对象。
如果新创建的轴和之前创建的轴重叠的话,之前的轴将被删除。
通过axisbg参数给每个轴设置不同的背景颜色。
imagesubplot()返回它所创建的Axes对象,我们可以将它用变量保存起来,然后用sca()交替让它们成为当前Axes对象,并调用plot()在其中绘图。
调节轴之间的间距和轴与边框之间的距离当绘图对象中有多个轴的时候,可以通过工具栏中的Configure Subplots按钮,交互式地调节轴之间的间距和轴与边框之间的距离。
如果希望在程序中调节的话,可以调用subplots_adjust函数,它有left, right, bottom, top, wspace, hspace等几个关键字参数,这些参数的值都是0到1之间的小数,它们是以绘图区域的宽高为1进行正规化之后的坐标或者长度。
[matplotlib.pyplot.subplots_adjust][matplotlib.pyplot.subplots]6.绘制多图表如果需要同时绘制多幅图表,可以给figure()传递一个整数参数指定Figure对象的序号,如果序号所指定的Figure对象已经存在,将不创建新的对象,而只是让它成为当前的Figure对象。
[python] view plain copy print?在CODE上查看代码片派生到我的代码片import numpy as npimport matplotlib.pyplot as pltplt.figure(1) # 创建图表1plt.figure(2) # 创建图表2ax1 = plt.subplot(211) # 在图表2中创建子图1ax2 = plt.subplot(212) # 在图表2中创建子图2x = np.linspace(0, 3, 100)for i in xrange(5):plt.figure(1) #选择图表1plt.plot(x, np.exp(i*x/3))plt.sca(ax1) #选择图表2的子图1plt.plot(x, np.sin(i*x))plt.sca(ax2) # 选择图表2的子图2plt.plot(x, np.cos(i*x))plt.show()/tech/static/books/scipy/_images/matplotlib_multi_figure.png7. 在图表中显示中文matplotlib的缺省配置文件中所使用的字体无法正确显示中文。