Python matplotlib库基本二维绘图

    技术2025-11-28  12

    这次的情况与以往不同,因为要保存许多图片,所以加了一个接合路径的函数 左右拆分后,就可以很直观的展示某一段代码对应的图。 有一些函数的参数不是很完整(主要列出了重要,必要的参数),如果想深入了解此函数的功能,点击函数,按下快捷键F12(基于VS Code)即可查看源文件。

    比如你想深入了解下subplot()函数,可以看官方的解释和例子。 言回正传 复制以下的代码,选择运行的函数,验证有关二维绘图的操作。 相关参考:Python语言程序设计(上海交通大学出版社 赵璐主编)<<----传送门 原谅我没有找到电子版,不然一定爬下来

    import matplotlib.pyplot as plt import matplotlib import numpy as np import sys import os def getFile_path(filename): ''' 无论用的是什么系统,当前工作目录是哪个文件夹 都能准确获取源代码同级目录下的文件完整路径 ''' workpath = os.path.split(sys.argv[0])[0] return os.path.join(workpath, filename) # 演示----------------------------------------------------------------------------------------------- def demo(filepath): """ 以下仅为简单的展示,具体函数功能在相关测试函数中介绍 """ # 设置中文字体为黑体 matplotlib.rcParams['font.family'] = ['SimHei'] # 设置负号显示正常 matplotlib.rcParams['axes.unicode_minus'] = False x = np.linspace(0, 2*np.pi, 100) y = np.sin(x) plt.plot(x, y, 'r') f1 = plt.figure(1) plt.title('我是标题') plt.xlabel('我是x轴标签') plt.ylabel('我是y轴标签') plt.text(np.pi, 0.6, '我是图文字') plt.ylim(-2, 2) plt.legend(labels=['我是图例']) plt.savefig(filepath+'y=sin(x).png') # 保存图片 plt.cla() # 清除figure中活动的axes # plot函数的相关测试-------------------------------------------------------------------------------------- def pyplot_test(filepath): """ plot(x,y,s,linewidth) 在二维直角坐标系中绘制直线、曲线、离散的点,返回一个列表对象 x:横坐标轴的取值范围,可选。省略时默认用y数据集的索引作为x y:与x对应的纵坐标轴的取值范围,必选。 s:控制线型的格式字符串,可选。省略时采用默认格式 linewidth:线的宽度 """ plt.plot([1, 2, 3]) # 绘制直线 y=x+1 plt.savefig(filepath+'y=x+1.png') plt.cla() # 通过设置线型的格式字符串来控制点线的颜色、风格 x = y = np.arange(10) plt.plot(x, y, 'r*:') plt.savefig(filepath+'y=x') plt.cla() # plot还支持一次性绘制多个图形 x = np.arange(10) y1 = x y2 = 2*x y3 = 3*x plt.plot(x, y1, 'ro--', x, y2, 'gv:', x, y3, 'bs-') plt.savefig(filepath+'三条线.png') plt.cla() # pyplot属性测试--------------------------------------------------------------------------------------- def pyplot_attribute(filepath): x = np.arange(10) y1 = x y2 = 2*x y3 = 3*x plt.plot(x, y1, 'ro--', x, y2, 'gv:', x, y3, 'bs-') plt.axis('scaled') # 设置x轴y轴按实际比例显示 plt.xlim(0, 10) # 设置x轴的区间 plt.ylim(0, 30) # 设置y轴的区间 xmin, xmax, ymin, ymax = plt.axis() # 获取当前x轴和y轴的区间值 print('x轴[{},{}]y轴[{},{}]'.format(xmin, xmax, ymin, ymax)) plt.xticks([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) plt.yticks([5, 10, 15, 20, 25, 30], ['a', 'b', 'c', 'd', 'e', 'f']) # 'a'与5对应,'b'与10对应 y_ticks, labels = plt.yticks() # 返回y轴刻度值和对应标签 print(y_ticks) print(type(labels)) for label in labels: # 输出y轴的刻度标签 print(label) plt.xlabel('x-axis') # 设置x轴标签 plt.ylabel('y-axis') # 设置y轴标签 plt.legend(['y1=x', 'y2=2x', 'y3=3x']) # 添加图例 plt.text(4, 2, 'TEXT') # 转换成你想要的显示文本 plt.savefig(filepath+'三条带属性的线.png') plt.cla() # 绘图函数测试------------------------------------------------------------------------------------------- def drawing_test(filepath): """ boxplot() 箱型图 bar() 竖向条形图 barh() 横向条形图 contour() 等高线 hist() 直方图 pie() 饼图 plot_date() 包含日期型数据的图 polar() 极坐标图 psd() 功率谱密度图 scatter() 散点图 specgram() 频谱图 stem() 火柴杆图 step() 步阶图 """ # bar(x,height) x:x轴对应的值,height:与x对应的高度值 x = np.arange(7) height = [3, 4, 7, 6, 2, 8, 9] plt.bar(x, height) plt.savefig(filepath+'横向条形图.png') plt.cla() # scatter(x,y) plt.scatter(x, height) plt.savefig(filepath+'散点图') plt.cla() # pie(x,explode=None,lables=None,autopct=None,shadow=False) # x:需要绘制饼图的数据集 # explode:设置饼块分离,默认为空(不分离),非0值将分离 # lables:设置饼块对应标签,默认为空 # autopct:设置饼块显示占比值,默认为空 # shadow:设置饼图是否有阴影,即立体效果,默认为False(即饼图是一个平面) Lables = 'Class-A', 'Class-B', 'Class-C', 'Class-D' # 饼块标签 data = [15, 30, 45, 10] Explode = (0, 0.1, 0, 0) plt.pie(data, explode=Explode, labels=Lables, autopct='%.2f%%') plt.savefig(filepath+'饼图.png') plt.cla() # subplot(),绘制子图----------------------------------------------------------------------------------- def subplot_test(filepath): """ 在一个区域绘制多个不重叠的图形 subplot(nrows,ncols,index):在绘图区域创建子绘图区域 nrows:将绘图区分割成nrows行 ncols:将绘图区分割成ncols列 index:指定当前子绘图区域的索引 子区索引按照行优先顺序,从1开始编号,步长为1,依次递增 """ plt.subplot(2, 2, 1) plt.bar(range(7), [3, 4, 7, 6, 2, 8, 9]) plt.subplot(2, 2, 2) plt.plot(range(7), [3, 4, 7, 6, 2, 8, 9]) plt.subplot(2, 2, 3) plt.scatter(range(7), [3, 4, 7, 6, 2, 8, 9]) plt.subplot(2, 2, 4) plt.barh(range(7), [3, 4, 7, 6, 2, 8, 9]) plt.savefig(filepath+'绘制子图.png') plt.cla() # 中文显示问题------------------------------------------------------------------------------------------- def chinese_test(filepath): """ 默认状态下,matplotlib库无法在图表中正常显示中文 需要使用系统字体,修改matplotlib库中rcParams参数字典的'font.family'键对应的值 常见的系统字体: 'Simhei' 黑体 'Kaiti' 楷体 'Microsoft YaHei' 微软雅黑 ...... """ matplotlib.rcParams['font.family'] = 'Kaiti' plt.plot([1, 2, 4], [1, 2, 3]) plt.title('坐标系标题') plt.xlabel('时间(s)') plt.ylabel('范围(m)') plt.savefig(filepath+'中文显示.png') plt.cla() # 还可以单独指定某一部分的字体,在函数中传递一个中文字体给参数fontproperties plt.plot([1, 2, 4], [1, 2, 3]) plt.title('坐标系标题', fontproperties='Simhei') plt.xlabel('时间(s)', fontproperties='Kaiti') plt.ylabel('范围(m)', fontproperties='Microsoft YaHei') plt.savefig(filepath+'多种字体.png') # 选择要验证的函数----------------------------------------------------------------------------------------- def main(): file_name = 'image\\' file_path = getFile_path(file_name) # demo(file_path) # pyplot_test(file_path) # pyplot_attribute(file_path) # drawing_test(file_path) # subplot_test(file_path) # chinese_test(file_path) if __name__ == "__main__": main()

    相关参考:Python语言程序设计(上海交通大学出版社 赵璐主编)<<----传送门

    如有错误,欢迎私信纠正 技术永无止境,谢谢支持!

    Processed: 0.018, SQL: 9