Matplotlib是一个用于创建二维图表和绘图的Python库。它可以生成高质量的折线图、散点图、柱状图、饼图、等高线图、3D图等各种类型的图表,适用于数据可视化、科学研究、数据分析和报告生成等领域。
以下是Matplotlib的一些主要特点和功能:
-
灵活性:Matplotlib提供了丰富的绘图选项和定制功能,使用户能够根据需要创建具有各种样式和布局的图表。可以自定义图表的标题、标签、线条样式、颜色、图例等。
-
多种图表类型:Matplotlib支持多种常见的图表类型,如折线图、散点图、柱状图、饼图、等高线图、热图、3D图等。可以根据数据的特点选择合适的图表类型进行展示。
-
高质量输出:Matplotlib生成的图表具有高质量的输出,可以保存为各种常见的图片格式,如PNG、JPEG、SVG等。图表的分辨率和尺寸可以进行调整,以适应不同的需求。
-
支持交互式绘图:Matplotlib可以与Jupyter Notebook等交互式环境结合使用,实时显示和更新图表。这使得数据分析和实验性工作更加方便。
-
与NumPy集成:Matplotlib与NumPy紧密集成,可以直接使用NumPy数组作为图表的数据源,简化了数据处理和图表绘制的流程。
-
丰富的文档和社区支持:Matplotlib拥有详细的官方文档和示例集,用户可以轻松查找和理解各种绘图函数和用法。同时,Matplotlib拥有庞大的用户社区,可以获取支持、交流经验和分享代码。
总的来说,Matplotlib是Python中最常用和广泛应用的绘图库之一。它提供了丰富的绘图功能和灵活的定制选项,使用户能够轻松地创建各种类型的图表,实现数据可视化和图形化展示。
在使用Python绘制图表前,我们需要先安装两个库文件numpy和matplotlib
pip install numpy
pip install matplotlib
生成直方图
直方图是一种用于可视化数据分布的图形表示方法。它将数据分成若干个等宽的区间(也称为“箱子”或“柱”),并计算落入每个区间的数据点数量。然后,通过在坐标轴上绘制这些区间的柱状条形图来表示数据的分布情况。
直方图通常用于展示数值数据的频率分布,可以帮助我们了解数据集中值的范围、分布形态以及数据的集中程度。在直方图中,横轴表示数据的取值范围或区间,纵轴表示该区间内数据点的数量或频率。每个柱状条形的高度表示该区间内数据点的数量或频率。
通过观察直方图,我们可以得到关于数据集的一些重要信息,如数据的中心趋势、峰值、离散程度等。直方图可以帮助我们发现数据的异常值、判断数据的分布类型(如正态分布、偏态分布等)以及进行数据预处理和特征工程等任务。
在统计学和数据分析中,直方图是一种常用的探索性数据分析工具,它提供了对数据集的直观认识,并为后续的分析和决策提供了基础。
import numpy as np
from pylab import *
num=100
sigma=20
x=num+sigma*np.random.randn(20000) #样本数量
plt.hist(x,bins=100,color="green",normed=True) #bins显示有几个直方,normed是否对数据进行标准化
plt.show() #显示图像
plt.savefig() #保存图片
运行结果:
生成条形图
条形图(Bar chart)是一种常见的数据可视化图表,用于比较不同类别或组之间的数据大小或数量。它使用矩形条形的长度或高度来表示数据的数值大小,从而提供了一种直观的比较方式。
条形图通常由两个轴组成:水平轴(x轴)和垂直轴(y轴)。水平轴用于表示不同的类别或组,而垂直轴用于表示数值大小。每个类别或组对应一个矩形条形,其高度或长度与该类别或组的数值大小成比例。
条形图可用于显示不同类别的数据之间的比较,例如不同产品的销售额、不同城市的人口数量、不同时间段的收入情况等。它可以直观地展示数据的差异、趋势和关系,帮助我们理解数据的分布和变化。
条形图的优点包括简单易懂、易于比较不同类别的数据、能够显示数据的大小和差异。它可以用于探索性数据分析、报告数据结果、支持决策等应用场景。
在绘制条形图时,可以使用不同的样式和颜色来区分不同类别或组,增加可视化效果。还可以添加数据标签、图例和标题等元素,以增强图表的可读性和信息传达能力。
import numpy as np
from pylab import *
value=[22,13,34]
index=["root","admin","lyshark"]
#index=np.arange(5)
plt.bar(left=index,height=value,color="green",width=0.5)
plt.show()
运行结果:
生成折线图
折线图(Line chart)是一种常见的数据可视化图表,用于显示随着时间、顺序或其他连续变量的变化而变化的数据趋势。它通过连接数据点形成线段来展示数据的变化情况。
折线图通常由两个轴组成:水平轴(x轴)和垂直轴(y轴)。水平轴表示时间、顺序或其他连续变量,而垂直轴表示与该变量相关的数值。每个数据点在图表中用一个标记(通常是圆圈、方块或其他形状)表示,并通过线段将这些数据点连接起来。
折线图常用于显示数据随时间的变化趋势,例如股票价格的变化、气温的变化、销售额的变化等。它可以帮助我们观察数据的趋势、周期性、季节性和其他模式,以及识别异常值或突变点。
折线图的优点包括清晰明了、能够显示数据的趋势和变化、易于比较不同类别或组之间的数据。它可以用于分析数据的变化、预测趋势、发现关联性等,对于探索性数据分析、报告数据结果和支持决策都非常有用。
在绘制折线图时,可以根据需要添加多条线来比较不同组别或变量的趋势。还可以通过改变线条的颜色、粗细、样式和标记的形状来区分不同组别或变量。此外,还可以添加图例、数据标签和标题等元素,以增强图表的可读性和信息传达能力。
import numpy as np
from pylab import *
x=np.linspace(-10,10,100)
y=x**3
plt.plot(x,y,linestyle="--",color="green",marker="<")
plt.show()
运行结果:
生成散点图
散点图(Scatter plot)是一种常见的数据可视化图表,用于展示两个变量之间的关系或模式。它通过在坐标系中绘制数据点来表示两个变量的取值,并用点的位置来表示变量之间的关系。
在散点图中,每个数据点由两个数值表示,分别对应于两个变量在坐标系上的位置。水平轴通常表示自变量(独立变量),垂直轴表示因变量(依赖变量)。每个数据点在图表中以一个点或其他标记(如圆圈、方块)的形式呈现。
import numpy as np
from pylab import *
x=np.random.randn(1000)
y=x+np.random.randn(1000)*0.5
plt.scatter(x,y,s=5,marker="<") #s表示面积 Marker表示图形
plt.show()
运行结果:
生成饼状图
饼状图(Pie chart)是一种常见的数据可视化图表,用于展示分类数据的占比关系。它通过将数据划分成不同的分类,并用扇形的区域来表示每个分类在整体中所占的比例。
在饼状图中,每个分类用一个扇形区域来表示,扇形的角度大小与该分类的占比成正比。通常,所有分类的扇形区域加起来形成一个圆,整个圆代表全部数据的总和。
import numpy as np
from pylab import *
labels="cangjingkong","jizemingbu","boduoyejieyi","xiaozemaliya"
fracs=[45,10,30,15]
plt.axes(aspect=1)
explode=[0,0.05,0,0]
plt.pie(x=fracs,labels=labels,autopct="%0f%%",explode=explode)
plt.show()
运行结果:
生成箱形图
箱形图(Box plot),也称为盒须图或盒式图,是一种常见的数据可视化图表,用于展示数据的分布特征和离群值。
箱形图主要由以下几个部分组成:
- 箱体(Box):箱体代表了数据的中间50%范围,即数据的四分位数(Q1、Q2、Q3)。箱体的下边缘表示第一四分位数(Q1),箱体的上边缘表示第三四分位数(Q3),而箱体内部的线表示中位数(Q2)。
- 上须(Whisker):上须表示数据中大于上边缘的1.5倍四分位距(Q3 - Q1)的数据范围,通常用一条直线或符号表示。上须的末端通常是最后一个不超过上须距离的数据点。
- 下须(Whisker):下须表示数据中小于下边缘的1.5倍四分位距的数据范围,通常用一条直线或符号表示。下须的末端通常是第一个不超过下须距离的数据点。
- 离群值(Outlier):离群值是远离箱体和须的数据点,可能代表了异常值或极端值。
主要用于显示数据的分散情况。图形分为上边缘、上四分位数、中位数、下四分位数、下边缘。外面的点时异常值
import numpy as np
from pylab import *
np.random.seed(100)
data=np.random.normal(size=(1000,4),loc=0,scale=1)
labels=["A","B","C","D"]
plt.boxplot(data,labels=labels)
plt.show()
运行结果:
生成组合图例
import numpy as np
from pylab import *
x=np.arange(1,11,1)
plt.plot(x,x*2)
plt.plot(x,x*3)
plt.plot(x,x*4)
plt.legend(["BoDuoYeJieYi","CangJingKong","JiaTengYing"])
plt.show()
运行结果:
生成中文图片
import numpy as np
from pylab import *
mpl.rcParams['font.sans-serif'] = ['KaiTi']
label = "windows xp","windows 7","Windows 8","Linux 4","Centos 6","Huawei交换机"
fracs = [1,2,3,4,5,1]
plt.axes(aspect=1)
plt.pie(x=fracs,labels=label,autopct="%0d%%")
plt.show()