Python Matplotlib 十一种常见数据分析图表绘制指南

Ada
Ada
发布时间:2026-10-16| 2人浏览过
原创

本文详细介绍使用Python Matplotlib库绘制十一种常见数据分析图表的方法,涵盖折线图、散点图、直方图、饼图、箱线图、概率图、雷达图、流向图、极坐标图、词云图及表格嵌入。通过具体代码示例与参数说明,帮助开发者快速掌握各类图表的绘制技巧与核心配置。

1. 折线图

折线图(Line Chart)通过按顺序连接数据点来展示数据变化,可视作按X轴坐标排序后的散点图。其核心功能是观察因变量y随自变量x变化的趋势,特别适用于展示随时间(按常用比例设置)变化的连续数据,同时也能直观反映数量差异。

绘制折线图需使用plot函数,具体格式如下:

matplotlib.pyplot.plot(*args,**kwargs)

color参数支持8种常用缩写,详见下表。

表2 color参数的常用颜色缩写:

plt.plot绘制折线图的代码示例如下:

import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
x = np.arange(9)
y = np.sin(x)
z = np.cos(x)
#marker数据点样式,linewidth线宽,linestyle线型样式,color颜色
plt.plot(x,y,marker='*',linewidth=1,linestyle='--',color='orange')
plt.plot(x,z)
plt.title('matplotlib AK')
plt.xlabel('height',fontsize=15)
plt.ylabel('width',fontsize=15)
#设置图例
plt.legend(['Y','Z'],loc='upper right')
plt.grid(True)
plt.show()

2. 散点图

散点图(Scatter Diagram),亦称散点分布图,以某一特征为横坐标,另一特征为纵坐标,利用坐标点(散点)的分布形态反映特征间的统计关系。数值由点在图表中的位置表示,类别由不同标记区分,通常用于跨类别数据的比较。

scatter方法的调用格式为:

 matplotlib.pyplot.scatter(x,y,s=None,c=None,marker=None,alpha=None)

scatter函数的主要参数及其说明见表3。

scatter绘图示例1:

fig.ax = plt.subplots()
plt.rcParams['font.family'] = ['SimHei']      #用来显示中文标签
plt.rcParams['axes.unicode_minus'] = False   #用来正常显示符号
x1 = np.arange(1,30)
y1 = np.sin(x1)
ax1 = plt.subplot(1,1,1)
plt.title('散点图 AK')
plt.xlabel('X')
plt.ylabel('Y')
lvalue = x1
ax1.scatter(x1,y1,c='r',s=100,linewidths=lvalue,marker='o')
plt.legend('x1')
plt.show(),

scatter绘图示例2:

fig,ax = plt.subplots()
plt.rcParams['font.family'] = ['SimHei']      #用来显示中文标签
plt.rcParams['axes.unicode_minus'] = False   #用来正常显示符号
for color in ['red','green','blue']:
    n = 500
    x,y = np.random.randn(2,n)
    ax.scatter(x,y,c=color,label=color,alpha=0.3,edgecolor='none')
ax.legend()
ax.grid(True)
plt.show()

3. 直方图

直方图(Histogram),又称质量分布图,是统计报告图的一种。它由一系列高度不等的纵向条纹或线段表示数据分布情况,横轴通常表示数据所属类别,纵轴表示数量或占比。直方图能直观展示产品质量特性的分布状态,便于判断总体质量分布,并可发现分布表无法体现的数据模式、样本频率分布及总体分布。

绘制直方图使用bar函数,格式如下:

matplotlib.pyplot.bar(left,height,width = 0.8,bottom = None,hold = None,data = None)

函数bar的常用参数及其说明见下表4。

表4 bar常用参数及其说明:

bar绘图示例1:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
fig,axes = plt.subplots(2,1)
data = pd.Series(np.random.randn(16),index=list('abcdefghijklmnop'))
data.plot.bar(ax = axes[0],color='k',alpha=0.7)
data.plot.barh(ax = axes[1],color='k',alpha=0.7)

bar绘图示例2:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.family'] = ['SimHei']      #用来显示中文标签
plt.rcParams['axes.unicode_minus'] = False   #用来正常显示符号
fig,ax = plt.subplots()
x = np.arange(1,6)
y1 = np.random.uniform(1.5,1.0,5)
y2 = np.random.uniform(1.5,1.0,5)
plt.bar(x,y1,width = 0.35,facecolor='lightskyblue',edgecolor = 'white')
plt.bar(x+0.35,y2,width = 0.35,facecolor='yellowgreen',edgecolor = 'white')
plt.show()

4. 饼图

饼图(Pie Graph)用于展示不同分类的占比情况,通过弧度大小对比各类别。饼图能清晰反映部分与部分、部分与整体之间的比例关系,直观显示每组数据相对于总数的大小。

绘制饼图使用pie方法,格式如下:

matplotlib.pyplot.pie(x,explode = None,labels = None,color = None,autopct = None,
pctdistance = 0.6,shadow=false,labeldistance=1.1,startangle=None,radius=None,...)

pie函数的常用参数及其说明见表5。

表5 pie函数常用参数及其说明:

pie绘图示例:

plt.figure(figsize=(6,6))
#建立轴的大小
labels = ['Springs','Summer','Autumn','Winter']
x = [15,30,45,10]
explode = (0.05,0.05,0.05,0.05)
#这个是控制分离的距离的,默认饼图不分离
plt.pie(x,labels = labels,explode = explode,startangle = 60,autopct='%1.1f%%')
#autopct在图中显示比例值,注意值的格式
plt.title('Rany days by season')
plt.show()

5. 箱线图

箱线图(Boxplot),也称盒须图,通过绘制反映数据分布特征的统计量,提供数据位置和分散情况的关键信息,尤其在比较不同特征时,能更好地表现分散程度差异。箱线图利用数据中的5个统计量(最小值、下四分位数、中位数、上四分位数和最大值)描述数据,可粗略判断数据对称性、分布分散程度,特别适用于样本比较及异常值检测。

boxplot函数的调用格式为:

matplotlib.pyplot.boxplot(x,notch = None,sym = None,vert = None,whis = None,
positions = None,width = None,patch_artist = None,
meanline = None,labels = None,...)

boxplot函数的常用参数及其说明见表6。

表6 boxplot函数常用参数及其说明:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
np.random.seed(2)#设置随机种子
df = pd.DataFrame(np.random.rand(5,4),columns = ['A','B','C','D'])
#生成0~1的5*4维度数据并存入4列DataFrame中
df.boxplot()
plt.show()

6. 概率图

概率图模型由图灵奖得主Pearl提出,用于表示变量间的概率依赖关系。正态分布又名高斯分布,其概率密度函数为normpdf(X,mu,sigma),其中X为向量,mu为均值,sigma为标准差。

绘制概率图的代码如下:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy.stats import norm
fig,ax = plt.subplots()
plt.rcParams['font.family'] = ['SimHei']      #用来显示中文标签
plt.rcParams['axes.unicode_minus'] = False   #用来正常显示符号
np.random.seed(1587554)
mu = 100
sigma = 15
x = mu+sigma*np.random.randn(437)
num_bins = 50
n,bins,patches = ax.hist(x,num_bins,density=1,stacked=True)
y = norm.pdf(bins,mu,sigma)
ax.plot(bins,y,'--')
fig.tight_layout()
plt.show()

7. 雷达图

雷达图也称网络图、星图、蜘蛛网图、不规则多边形或极坐标图。它以从同一点开始的轴上表示三个或更多定量变量的二维图表形式显示多变量数据。轴的相对位置和角度通常无信息,雷达图相当于平行坐标图,轴呈径向排列。

绘制某学生成绩信息的雷达图示例:

import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
#某学生的课程与成绩
courses = ['数据结构','数据可视化','高数','英语','软件工程','组成原理','C语言','体育']
scores = [82,95,78,85,45,88,76,88]
dataLength = len(scores) #数据长度
#angles数组把圆周等分为dataLength份
angles = np.linspace(0,2*np.pi,dataLength,endpoint=False)
scores.append(scores[0])
angless = np.append(angles,angles[0])  #闭合
#绘制雷达图
plt.polar(angless,   #设置角度
      scores,   #设置各个角度上的数据
      'rv--',   #设置颜色、线型和端点符号
      linewidth=2)  #设置线宽
#设置角度网络标签
plt.thetagrids(angles*180/np.pi,courses,fontproperties='simhei',fontsize=12,color='k')
#填充雷达图内部
plt.fill(angless,scores,facecolor='g',alpha=0.2)
plt.show()

8. 流向图

在运输问题中,常需展示产地产量、销地销量以及流向和流量,此时可使用流向图。流向图能直观展示数据流向,揭示运动中的规律或现象。

流向图的绘制代码如下:

import numpy as np
import matplotlib.pyplot as plt
Y,X = np.mgrid[-3:3:100j,-3:3:100j]
U = -1-X**2+Y
V = 1+X-Y**2
speed = np.sqrt(U*U+V*V)
plt.streamplot(X,Y,U,V,color=U,linewidth = 2,cmap = plt.cm.autumn)
plt.colorbar()
f,(ax1,ax2) = plt.subplots(ncols=2)
ax1.streamplot(X,Y,U,V,density=[0.5,1])
lw = 5*speed/speed.max()
ax2.streamplot(X,Y,U,V,density=0.6,color='k',linewidth=lw)
plt.show()

9. 绘图中的表格设置

在绘图中,有时需同时显示数据表格。Matplotlib提供了table方法,可在绘图时同步显示数据表格。

在绘图中显示数据表格的代码示例:

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = ['SimHei']
data = [[66386,174296,75131,577908,32015],
        [58230,381139,78045,99308,160454],
        [89135,80552,152558,497981,603535],
        [78415,81858,150656,193263,69638],
        [139361,331509,343164,781380,52269]]
columns = ('Freeze','Wind','Flood','Quake','Hail')
rows = ['%d year'% x for x in (100,50,20,10,5)]
values = np.arange(0,2500,500)
value_increment = 1000
colors = plt.cm.BuPu(np.linspace(0,0.5,len(columns)))
n_rows=len(data)
index = np.arange(len(columns))+0.3
bar_width=0.4
y_offset = np.array([0.0]*len(columns))
cell_text = []
for row in range(n_rows):
    plt.bar(index,data[row],bar_width,bottom=y_offset)
    y_offset = y_offset+data[row]
    cell_text.append(['%1.1f'%(x/1000.0) for x in y_offset])
colors = colors[::-1]
cell_text.reverse()
the_table = plt.table(cellText=cell_text,
                     rowLabels=rows,
                     rowColours = colors,
                     colLabels = columns,
                     loc = 'bottom')
plt.subplots_adjust(left=0.2,bottom=0.2)
plt.ylabel("Loss in ${0}'s".format(value_increment))
plt.yticks(values*value_increment,['%d' % val for val in values])
plt.xticks([])
plt.title('气象灾害损失')
plt.show()

10. 极坐标图

在平面投影中,坐标由X轴和Y轴定位;而在极坐标投影中,坐标需以半径和角度形式定位。极坐标投影中的半径以圆半径大小显示,以每个角度为0°的圆的角度为起点投影角度。生成极坐标投影需将投影类型定义为极坐标。

绘制极坐标图的代码如下:

import numpy as np
import matplotlib.pyplot as plt
r = np.linspace(0,2,100)
theta = 2*np.pi*r
fig = plt.figure(figsize=(13,4))
ax1 = plt.subplot(121,projection='polar')
ax1.scatter(theta,r,label='Polar Projection',s=10)
ax1.legend(bbox_to_anchor=(0.85,1.35))
ax2 = plt.subplot(122)
ax2.scatter(theta,r,label='Polar Projection',s=10)
ax2.legend(bbox_to_anchor=(0.85,1.35))
ax2.set_xlabel('R')
ax2.set_ylabel(r'$\theta$')

11. 词云图

词云用于对网络文本中出现频率较高的关键词进行视觉突出,形成“关键词云层”或“关键词渲染”,从而过滤大量文本信息,使浏览者一眼即可领略文本主旨。

11.1 安装相关的包

绘制词云需要WordCloud和jieba包。jieba用于从文本句子中分割出词汇。

两个包的安装语句如下:

pip install wordcloudpip install jieba

11.2 词云生成过程

一般生成词云的过程包括以下步骤:

  • 1)使用Pandas读取数据,并将需要分析的数据转化为列表。
  • 2)对获得的列表数据使用分词工具jieba进行遍历分词。
  • 3)使用WordCloud设置词云图片的属性、掩码和停用词,并生成词云图像。

到此这篇关于python matplotlib绘画十一种常见数据分析图的文章就介绍到这了,更多相关python matplotlib 绘图内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。