Matplotlib简介与基础使用
Matplotlib简介与基础使用Matplotlib是Python中最流行的数据可视化库之一支持跨平台运行能够轻松将数据转化为高质量图形。它提供了丰富的2D绘图功能并包含部分3D绘图接口常与NumPy和pandas配合使用。Matplotlib的API设计借鉴了MATLAB对于熟悉MATLAB的用户易于上手。其核心优势在于支持多种图形类型折线图、散点图、柱状图等可输出多种文件格式PNG、PDF、SVG等高度可定制的图形属性一、基本绘图流程数据准备阶段导入必要的库import matplotlib.pyplot as plt import numpy as np绘制正弦函数曲线的Python实现使用Matplotlib库可以轻松绘制正弦函数曲线。以下是完整的代码示例和说明关键技术:采用Matplotlib包Pyplot模块的plot函数绘制曲线图。from matplotlib import pyplot as plt import numpy as np import math # 设置中文字体显示 plt.rcParams[font.family] [sans-serif] plt.rcParams[font.sans-serif] [SimHei] # 生成x轴数据从0到2π步长0.05 x np.arange(0, math.pi*2, 0.05) # 计算对应的正弦值 y np.sin(x) # 绘制曲线图 plt.plot(x, y) # 添加标签和标题 plt.xlabel(角度) plt.ylabel(正弦值) plt.title(正弦函数曲线) # 显示图形 plt.show()代码解析np.arange(0, math.pi*2, 0.05)创建了一个从0到2π的数值数组步长为0.05作为x轴数据。np.sin(x)计算数组中每个元素的正弦值生成y轴数据。plt.plot(x, y)将x和y数据绘制为连续曲线。plt.xlabel、plt.ylabel和plt.title分别设置x轴标签、y轴标签和图表标题。plt.show()显示最终的图形窗口。扩展建议修改步长参数可以调整曲线的平滑度较小的步长会使曲线更平滑。添加网格线可提高图表可读性plt.grid(True)要显示多个周期的正弦波只需调整x的范围x np.arange(0, math.pi*4, 0.05) # 显示两个周期生成或加载数据通常使用NumPy数组x np.linspace(0, 10, 100) y np.sin(x)图形绘制阶段创建图形并绘制plt.plot(x, y) plt.title(Sine Wave) plt.xlabel(X-axis) plt.ylabel(Y-axis)输出阶段显示或保存图plt.show() # 显示图形 # 或 plt.savefig(sine_wave.png) # 保存为文件二、常用图表类型示例折线图的绘制折线图是最基本的图表类型,是用点和点之间连线的上升或下降表示指标的连续变化趋势。折线图反映了一段时间内事物连续的动态变化规律,适用于描述一个变量随另一个变量变化的趋势,通常用于绘制连续数据,适合数据点较多的情况。plot:折线图 matplotlib是一个用于绘制图形的Python库其中的plot函数用于绘制线条图。下面是matplotlib中plot函数的详细解释import matplotlib.pyplot as plt import numpy as np x np.linspace(0, 10, 20) y np.sin(x) # 完整参数示例 plt.plot(x, y, colorblue, # 蓝色线条 linestyle--, # 虚线 linewidth2, # 线宽2 markero, # 圆形标记 markersize8, # 标记大小8 markerfacecolorred, # 标记填充红色 markeredgecolorblack, # 标记边缘黑色 markeredgewidth1, # 标记边缘宽度1 alpha0.8, # 透明度0.8 labelsin(x)) # 图例标签 plt.legend() plt.grid(True) plt.show()参数说明alpha:设置透明度plt.plot(x, y, alpha0.5) # 透明度0.5(0-1)x表示x轴上的数据序列可以是一个列表、数组或Series类型的数据也可以是一个数字此时表示生成从0到该数字的等间隔的数据序列。y表示y轴上的数据序列要求与x轴上的数据序列长度相同。plt.plot(x, y) # x轴数据, y轴数据 plt.plot(y) # 只给y数据x自动为0,1,2...label给绘制的线条指定一个标签可以在绘制图例时使用。plt.plot(x, y, label数据系列1) # 设置图例名称 plt.legend() # 显示图例linestyle线条的样式可以是实线‘solid’、虚线‘dashed’、点线‘dotted’等默认为实线。plt.plot(x, y, linestyle-) # 实线 plt.plot(x, y, linestyle--) # 虚线 plt.plot(x, y, linestyle:) # 点线 plt.plot(x, y, linestyle-.) # 点划线 plt.plot(x, y, --) # 简写形式color线条的颜色可以是一个关键字字符串如’red’、blue’等也可以是一个RGB元组表示的颜色如(0.1, 0.2, 0.3)默认为蓝色。plt.plot(x, y, colorred) # 颜色名称 plt.plot(x, y, color#FF0000) # 十六进制 plt.plot(x, y, color(1, 0, 0)) # RGB元组(0-1) plt.plot(x, y, g) # 简写r红,g绿,b蓝,c青,m紫,y黄,k黑,w白linewidth线条的宽度可以是一个数字默认为1。plt.plot(x, y, linewidth2) # 线宽为2 plt.plot(x, y, lw3) # 简写形式marker线条上的标记点的样式可以是一个关键字字符串如’、‘o’等也可以是一个标记字符如’x’、s’等默认为没有标记点。plt.plot(x, y, markero) # 圆形 plt.plot(x, y, markers) # 正方形 plt.plot(x, y, marker^) # 上三角形 plt.plot(x, y, markerD) # 菱形 plt.plot(x, y, marker*) # 星形 plt.plot(x, y, marker.) # 点 plt.plot(x, y, o-) # 简写圆形实线使用plot函数可以绘制不同样式的线条图可以通过设置不同的参数来定制线条的样式、颜色、宽度、标记点等。在绘制完所有的线条后可以使用plt.legend()函数来添加图例使得不同线条对应的标签在图中显示出来。plt.grid()设置网格线常见的美观设置plt.grid(True, linestyle--, # 虚线 colorlightgray, # 浅灰色 alpha0.6, # 稍微透明 linewidth0.8) # 适中粗细plt.grid(True) # 显示网格线 plt.grid(False) # 隐藏网格线 plt.grid(True, axisx) # 只显示x轴网格线 plt.grid(True, axisy) # 只显示y轴网格线 plt.grid(True, axisboth) # 显示x和y轴网格线默认 plt.grid(True, linestyle-) # 实线默认 plt.grid(True, linestyle--) # 虚线 plt.grid(True, linestyle:) # 点线 plt.grid(True, linestyle-.) # 点划线 plt.grid(True, linewidth0.5) # 细线 plt.grid(True, linewidth2) # 粗线 plt.grid(True, lw1) # 简写形式 plt.grid(True, colorgray) # 灰色 plt.grid(True, colorred) # 红色 plt.grid(True, color#CCCCCC) # 十六进制颜色码 plt.grid(True, cblue) # 简写形式 plt.grid(True, alpha0.3) # 透明度0.30-1之间示例 【例7.4】请根据给定的两组数据x和y,分别代表某城镇居民消费水平增长率和对应的年份,利用Python绘制城镇居民消费水平增长率折线图。关键技术:利用matplotlib包的plot方法进行折线图的绘制。#定义y轴数据2010-2020年城镇居民消费水平增长率单位% y [8.07,6.42,9.79,8.20,7.69,6.02,7.86,6.93,6.84,9.04,10.06] #定义x轴数据年份 x [2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020] #plt.plot() 绘制折线图 #x, yx轴和y轴的数据 #g线条颜色为绿色green #lw4线宽line width为4像素 #label...图例标签 plt.plot(x,y,g,lw 4,label 城镇居民消费水平增长率) plt.legend(loc 5)#loc5图例位置5代表右下角也可以使用字符串lower right plt.grid(True) plt.xlabel(年)#x轴标签 plt.ylabel(增长率)#y轴标签 plt.title(我国历年城镇消费水平增长率)#折线图总标签散点图的绘制散点图是以直角坐标系中各点的密集程度和变化趋势来表示两种现象间的相关关系常用于显示和比较数值。当要在不考虑时间的情况下比较大量数据点时使用散点图比较数据方便直观。散点图将序列显示为一组点其中每个散点值都由该点在图表中的坐标位置表示。对于不同类别的点,则由图表中不同形状或颜色的标记符表示。同时,也可以设置标记符的颜色或大小。scatter() scatter是matplotlib库中用于绘制散点图的函数。散点图是一种用于展示两个变量之间关系的图形其中每个点代表一个数据样本。scatter函数可以接受一系列的x和y坐标作为输入然后将这些坐标在图中绘制成散点。plt.scatter(x, y, cred, markero, s50)下面是一个示例代码展示了如何使用这些参数调整散点图的样式import matplotlib.pyplot as plt import numpy as np # 生成随机数据 np.random.seed(0) x np.random.randn(100) y np.random.randn(100) # 绘制散点图设置散点的大小、颜色和形状 plt.scatter(x, y, s50, cr, markero, alpha0.5) # 显示图形 plt.show()这段代码会生成一个具有随机数据的散点图散点的大小为50颜色为红色形状为圆形透明度为0.5。除了基本的用法和常用参数scatter函数还有其他一些参数用于进一步控制散点图的样式和外观例如edgecolors设置散点边缘的颜色。 linewidths设置散点边缘的宽度。 cmap设置颜色映射用于根据数值变化为散点着色。 norm设置归一化器用于归一化数值。 label设置散点图的标签用于图例显示。 可以参考Matplotlib官方文档获取更多关于scatter函数的详细说明和示例代码。示例 【例7.5】对于给定的两个市场收益率的波动情况数据x和y,请利用Python绘制散点图来反映两个市场的波动率情况。关键技术:利用matplotlib包的plot函数进行散点图的绘制,与绘制折线图相比,绘制散点图只用到一组数据,而绘制折线图需要用到两组对应的数据。x np.random.randint(0,5,10) y np.random.randint(0,5,10) plt.figure(figsize (10,10)) plt.subplot(121) plt.ylim((-5,5)) plt.plot(x,ro,label 第一组) plt.grid(True) plt.title(第一组市场波动情况) plt.subplot(122) plt.ylim((-5,5)) plt.plot(y,b*,label 第二组) plt.grid(True) plt.title(第二组市场波动情况) plt.savefig(test,dpi 600) plt.show()柱状图categories [A, B, C] values [10, 20, 15] plt.bar(categories, values, colorgreen)图形自定义选项设置坐标轴范围plt.xlim(0, 2*np.pi) plt.ylim(-1.5, 1.5)添加图例plt.plot(x, np.sin(x), labelsin(x)) plt.plot(x, np.cos(x), labelcos(x)) plt.legend()网格线设置plt.grid(True, linestyle:, alpha0.5)多子图布局使用subplot创建多个子图plt.subplot(2, 1, 1) # 2行1列第1个子图 plt.plot(x, np.sin(x)) plt.subplot(2, 1, 2) # 第2个子图 plt.plot(x, np.cos(x))