附录:绘制多种图表类型
matplotlib是一个功能强大的绘图库,提供了多种绘图方式来满足不同的数据可视化需求。以下是一些常用的绘图方式:
| 绘图方式 | 作用 |
|---|---|
| 折线图(Line plot) | 用于展示连续变量随着另一个变量的变化而变化的趋势。 |
| 散点图(Scatter plot) | 用于展示两个变量之间的关系,每个数据点由两个数值变量的数值对表示。 |
| 柱状图(Bar plot) | 用于展示离散变量的分布或不同类别之间的比较。 |
| 饼图(Pie chart) | 用于展示不同类别的占比或比例关系。 |
| 直方图(Histogram) | 用于展示连续变量的分布情况。 |
| 箱线图(Box plot) | 用于展示数据的分布情况、离群值和中位数等统计指标。 |
| 热力图(Heatmap) | 用于展示矩阵数据的热度分布,通常使用颜色来表示数值大小。 |
| 3D图(3D plot) | 用于展示三维数据的可视化,如三维散点图、三维曲面图等。 |
| 等高线图(Contour plot) | 用于展示二维数据的等高线分布,通常用于表示地形、气象等数据。 |
| 简单地图(Simple map) | 用于展示地理数据的简单地图,如散点地图、区域地图等。 |
除了上述常用的绘图方式,matplotlib还提供了许多其他类型的图表和绘图工具,如极坐标图、网络图、动画等,可以根据具体需求选择合适的绘图方式。
使用如下命令在jupyter绘图过程中显示无损图形:
from matplotlib_inline import backend_inline
backend_inline.set_matplotlib_formats('svg') 在进行绘图前,我们先创建两组序列,分别为X和Y:
import numpy as np
X = np.arange(100)
Y = X * np.random.rand(100) #生成100个0-1之间的随机数1. 散点图¶
散点图(Scatter plot)是一种常用的数据可视化方式,用于展示两个变量之间的关系。在散点图中,每个数据点由两个数值变量的数值对表示,其中一个变量位于横轴,另一个变量位于纵轴。通过绘制数据点的位置,可以观察到两个变量之间的分布、趋势和相关性。
散点图可以帮助我们回答一些问题,例如:
两个变量之间是否存在线性关系?
变量之间的相关性是正向还是负向?
是否存在异常值或离群点?
是否存在聚类或分组的趋势?
在matplotlib中,可以使用scatter函数来绘制散点图:
import matplotlib.pyplot as plt
plt.figure(figsize=(6,2))
plt.scatter(X, Y) # 散点图的语句
plt.show()ax.scatter函数是matplotlib中用于绘制散点图的函数,它有很多可用的参数。以下是一些常用的参数:
x,y:表示散点图的横轴和纵轴数据,可以是数组、列表或标量。s:表示散点的大小,可以是标量或数组。默认值为20。c:表示散点的颜色,可以是颜色名称、颜色缩写、RGB元组或RGBA元组。默认值为None,表示使用默认颜色。marker:表示散点的形状,可以是标记名称或标记代码。常见的标记有’o’(圆圈)、‘s’(正方形)、‘^’(三角形)等。默认值为’o’。cmap:表示散点的颜色映射,可以是颜色映射对象或颜色映射名称。默认值为None。alpha:表示散点的透明度,取值范围为0到1之间。默认值为1,表示完全不透明。edgecolors:表示散点的边缘颜色,可以是颜色名称、颜色缩写、RGB元组或RGBA元组。默认值为’face’,表示使用与散点颜色相同的边缘颜色。linewidths:表示散点的边缘线宽度,可以是标量或数组。默认值为None,表示使用默认线宽。label:表示散点的标签,用于图例显示。
这只是一部分常用的参数,您可以根据需要查阅matplotlib官方文档以获取更详细的参数说明。
2. 折线图¶
折线图(Line plot)是一种常用的数据可视化方式,用于展示连续变量随着另一个变量的变化而变化的趋势。在折线图中,横轴通常表示自变量,纵轴表示因变量,通过连接数据点的线段来展示数据的变化趋势。
折线图常用于以下情况:
观察随时间变化的趋势,如股票价格、气温变化等。
比较不同组别或条件下的变化趋势,如不同产品的销售量、不同地区的人口增长等。
分析变量之间的关系,如变量X对变量Y的影响程度。
在matplotlib中,可以使用plot函数来绘制折线图:
plt.figure(figsize=(6,2))
plt.plot(X, Y, '-o') # 绘制折线图
plt.show() ax.plot函数是matplotlib中用于绘制折线图的函数,它有很多可用的参数。以下是一些常用的参数:
x, y:表示折线图的横轴和纵轴数据,可以是数组、列表或标量。
linestyle:表示折线的样式,可以是线条样式字符串(如’-‘、’--‘、’:‘、’-.'),也可以是Line2D属性(如Line2D.linestyle)。
linewidth:表示折线的宽度,可以是标量。默认值为1。
color:表示折线的颜色,可以是颜色名称、颜色缩写、RGB元组或RGBA元组。默认值为None,表示使用默认颜色。
marker:表示折线上数据点的标记,可以是标记名称或标记代码。常见的标记有’o’(圆圈)、‘s’(正方形)、‘^’(三角形)等。默认值为None,表示不显示标记。
markersize:表示折线上数据点标记的大小,可以是标量。默认值为None,表示使用默认大小。
label:表示折线的标签,用于图例显示。
alpha:表示折线的透明度,取值范围为0到1之间。默认值为1,表示完全不透明。
其他参数:还有一些其他参数,如zorder(绘图顺序)、solid_capstyle(线条端点样式)、dash_capstyle(虚线段端点样式)等。
这只是一部分常用的参数,您可以根据需要查阅matplotlib官方文档以获取更详细的参数说明。
练习: 绘制收益率的折线图¶
IBM的股票代码为IBM,标普指数的代码为SP,可口可乐的股票代码是KO,三者的月度收益率序列存储在’datasets/ibmspko.csv’文件中。
请使用pandas读取收益率序列
使用
pd.DataFrame.cumsum()计算可口可乐的收益率序列的累积收益率序列绘制可口可乐的收益率序列的累积收益率折线图
绘制一个图形,包含3个子图,每个子图中分别绘制3个(IBM、SP,KO)的累积收益折线图,分别使用3种marker(“^”,“o”, “x”),显示图例legend
3. 柱状图¶
柱状图(Bar plot)是一种常用的数据可视化方式,用于展示离散变量的分布或不同类别之间的比较。在柱状图中,每个类别是一个矩形柱,柱的高度表示该类别的频数、数量或其他统计指标。
柱状图常用于以下情况:
比较不同类别的数量或频数,如不同产品的销售量、不同地区的人口数量等。
展示离散变量的分布情况,如考试成绩的分布、用户评分的分布等。
分析类别变量与连续变量之间的关系,如不同性别的平均收入、不同年龄段的平均消费等。
在matplotlib中,可以使用bar函数来绘制柱状图。该函数接受一个数组或列表作为参数,表示每个类别的高度或值。可以通过设置参数来调整柱的宽度、颜色、边框等属性,以及添加标题、标签等元素来增强图表的可读性和美观性。
plt.figure(figsize=(6,2))
plt.bar(X, Y) # 柱状图的语句
plt.show()ax.bar()函数是matplotlib中用于绘制柱状图的函数,它有以下常用参数:
x:柱状图的x坐标,可以是一个一维数组或列表。height:柱状图的高度,可以是一个一维数组或列表。width:柱状图的宽度,默认为0.8。bottom:柱状图的底部位置,默认为None。align:柱状图的对齐方式,可以是’center’、‘edge’或一个浮点数,默认为’center’。color:柱状图的颜色,可以是一个颜色字符串、颜色列表或一个数组,默认为None。edgecolor:柱状图的边框颜色,默认为None。linewidth:柱状图的边框线宽度,默认为None。tick_label:柱状图的刻度标签,默认为None。log:是否使用对数刻度,默认为False。orientation:柱状图的方向,可以是’vertical’或’horizontal’,默认为’vertical’。label:柱状图的标签,默认为None。alpha:柱状图的透明度,取值范围为0到1,默认为1。align:柱状图的对齐方式,默认为’center’。yerr:柱状图的y方向误差线,默认为None。capsize:误差线的帽子大小,默认为None。
这些参数可以根据需要进行调整,以满足绘制柱状图的需求。
4. 频数图或直方图¶
在matplotlib中,频数图(Histogram)也被称为直方图。它是一种用于展示数据分布的图表类型。直方图将数据分成一系列的区间(也称为“箱子”或“柱子”),并统计落入每个区间的数据数量,然后将这些统计结果以柱状图的形式呈现出来。
直方图的x轴表示数据的取值范围,y轴表示该范围内数据的频数或频率。每个柱子的宽度表示区间的大小,柱子的高度表示该区间内数据的数量或频率。通过直方图,我们可以直观地了解数据的分布情况,包括数据的集中程度、偏态、峰度等。
在matplotlib中,可以使用plt.hist()函数来绘制直方图:
plt.figure(figsize=(6,3))
plt.hist(Y, bins=20)
plt.show()ax.hist()函数是matplotlib中用于绘制直方图的函数,它有以下常用参数:
x:直方图的数据,可以是一个一维数组或列表。bins:直方图的箱体数量,可以是一个整数、一个数组或一个字符串,默认为10。range:直方图的数据范围,默认为None。density:是否将直方图归一化为概率密度,默认为False。weights:直方图的权重,默认为None。cumulative:是否绘制累积直方图,默认为False。histtype:直方图的类型,可以是’bar’、‘barstacked’、‘step’、‘stepfilled’,默认为’bar’。align:直方图的对齐方式,可以是’left’、‘mid’、‘right’,默认为’mid’。orientation:直方图的方向,可以是’vertical’或’horizontal’,默认为’vertical’。rwidth:直方图的宽度相对于箱体宽度的比例,默认为0.8。color:直方图的颜色,默认为None。edgecolor:直方图的边框颜色,默认为None。linewidth:直方图的边框线宽度,默认为None。label:直方图的标签,默认为None。alpha:直方图的透明度,取值范围为0到1,默认为1。
这些参数可以根据需要进行调整,以满足绘制直方图的需求。
练习: 绘制收益率的频率分布图¶
IBM的股票代码为IBM,标普指数的代码为SP,可口可乐的股票代码是KO,三者的月度收益率序列存储在’datasets/ibmspko.csv’文件中。
请使用pandas读取收益率序列
绘制可口可乐的收益率序列的频率分布图,bins参数为50
5. 箱形图¶
在matplotlib中,箱形图(Box plot)是一种用于展示数据分布和离群值的图表类型。它通过五个统计量(最小值、第一四分位数、中位数、第三四分位数、最大值)来描述数据的分布情况,并使用箱体和须线的形式呈现出来。
箱形图的主要组成部分包括:
箱体(Box):表示数据的四分位数范围,箱体的上边界为第三四分位数(Q3),下边界为第一四分位数(Q1),箱体内部为中位数(Median)。
须线(Whiskers):表示数据的整体范围,通常是从箱体边界延伸出来的线段。须线的长度可以根据数据的分布情况进行调整。
离群值(Outliers):超出须线范围的数据点,被认为是异常值或离群值。
箱形图可以帮助我们快速了解数据的中心趋势、离散程度和异常值情况。在matplotlib中,可以使用plt.boxplot()函数来绘制箱形图:
plt.figure(figsize=(6,3))
plt.boxplot(Y)
plt.show()ax.boxplot()函数是matplotlib中用于绘制箱线图的函数,它有以下常用参数:
x:用于绘制箱线图的数据,可以是一个一维数组或列表。notch:是否绘制缺口箱线图,默认为False。sym:指定异常值的标记符号,默认为’+'。vert:指定箱线图的方向,True表示垂直方向,False表示水平方向,默认为True。patch_artist:是否使用填充颜色,默认为False。meanline:是否绘制均值线,默认为False。showmeans:是否显示均值,默认为False。showcaps:是否显示箱线图的边缘线,默认为True。showbox:是否显示箱体,默认为True。showfliers:是否显示异常值,默认为True。whis:指定箱线图的须的长度,默认为1.5。widths:指定箱体的宽度,可以是一个标量或一个数组,默认为0.5。labels:指定每个箱线图的标签,默认为None。positions:指定每个箱线图的位置,默认为None。meanprops:用于设置均值线的属性,如颜色、线型等,默认为None。medianprops:用于设置中位数线的属性,默认为None。boxprops:用于设置箱体的属性,默认为None。whiskerprops:用于设置须的属性,默认为None。capprops:用于设置边缘线的属性,默认为None。
这些参数可以根据需要进行调整,以满足绘制箱线图的需求。
6. 饼状图¶
在饼状图(Pie chart)是一种用于展示数据占比的图表类型。它通过将数据按照比例划分成扇形区域,并使用扇形的面积来表示数据的相对大小。
饼状图的主要特点包括:
扇形区域:每个数据类别对应一个扇形区域,扇形的面积表示该类别数据的占比。
标签:可以在每个扇形区域内显示数据类别的标签,用于标识不同类别。
饼图的总体形状:饼状图通常呈现为一个圆形,但也可以通过调整参数来改变形状,如椭圆形、半圆形等。
饼状图适用于展示数据的相对比例和占比关系,特别适合用于展示分类数据的分布情况。在matplotlib中,可以使用plt.pie()函数来绘制饼状图:
X = np.random.uniform(0, 1, 4)
plt.figure(figsize=(6,4))
labels = [ 'label_A', 'label_B', 'label_C', 'label_D']
autopct='%1.1f%%'
explode = (0.1, 0, 0, 0)
plt.pie(X, labels=labels,
autopct=autopct,
explode=explode,
shadow=True,
startangle=90) # 饼状图的语句
plt.show()ax.pie()函数是matplotlib中用于绘制饼状图的函数,它有以下常用参数:
x:用于绘制饼状图的数据,可以是一个一维数组或列表。explode:控制每个扇形区域的偏移量,用于突出显示某些部分,默认为None。labels:每个扇形区域的标签,可以是一个字符串列表,默认为None。colors:每个扇形区域的颜色,可以是一个颜色列表,默认为None。autopct:控制扇形区域内显示的百分比格式,默认为None。shadow:是否显示阴影效果,默认为False。startangle:起始角度,以逆时针方向测量,默认为0度。radius:饼状图的半径,默认为1。counterclock:是否按逆时针方向绘制饼状图,默认为True。
这些参数可以根据需要进行调整,以满足绘制饼状图的需求。