matplotlib库学习实验报告

一、实验目的

1.理解python语言中matplotlib库的各函数作用;
2.掌握matplotlib库中常用函数,能够用其进行画图;

二、实验内容

用matplotlib库中函数进行画图,数据可以用随机函数生成,也可以用其他数据,数据集不做限制,需绘制的图像有:
(1)直方图。用sin函数在区间[0,π/2]上100个点做数据;
(2)散点图。用sin和cos函数在区间[0,π/2]上100个点做数据;
(3)饼图。画出标签为1,2,3,4,大小为10,20,30,40的四个扇形组成的饼图;
(4)曲线图。用sin和cos函数在区间[0,π/2]上100个点做数据;
(5)子图。在两个子图中分别用sin和cos函数在区间[0,π/2]上100个点做数据。
可能会用到的matplotlib库中的函数:linspace、subplot、plot、axis、show、scatter、xlabel、ylabel、title、hist、pie等。根据课堂上对该问题的描述和分析,自行完成程序设计并实现,要求算法描述准确且程序运行正确。

三、设计与实现

详细描述设计过程、关键问题的实现方法及算法的分析说明。
1、制作数据
(1)使用linspace()函数定义均匀间隔创建数值序列。其实,需要指定间隔起始点、终止端,以及指定分隔值总数(包括起始点和终止点);最终函数返回间隔类均匀分布的数值序列。在此数据的起始点为0,终止点为pi/2,在此区间内选择100个值,从而得到(0,π/2)区间内的100个数。
(2)定义一个sindata[]列表,利用循环计算100个数对应的sin值,将其添加到sindata的列表中,同理,定义一个cosdata[]列表,利用循环计算100个数对应的cos值,将其添加到cosdata的列表中。
(3)定义一个sincos[]列表,利用循环和判断,将100个数中的奇数个数对应的区间值的sin值求出,偶数个数对应的区间值的cos值求出,添加到sincos中。
2、绘图
为方便展示规定画布大小为正方形(6,6)
(1)直方图hist(),统计各个区间的数值,取sindata中的数据,bins为统计的区间分布,这里取20个区间,color设置为蓝色,每个柱形的边缘颜色为黑色,设置x轴的标签为数值,y轴的标签为频数,图的标题为直方图,并将绘制完的直方图进行保存展示。
(2)散点图scatter(),x的数据为区间(0,π/2),y的值为其对应sincos数据中的值。x轴的标签为x,y轴的标签为y,图的标题为散点图,并将其进行保存展示。
(3)饼图pie(),定义一个列表label[]存放饼图的标签,列表explode[]设定各项距离圆心n个半径,列表values[]存放饼图各部分对应的值,设置图的标题为饼图,显示图例,并将其进行保存展示。
(4)曲线图plot(),x的数据为区间(0,π/2),y的值为其对应sincos数据中的值。颜色为红色,线条宽度为2。x轴的标签为x,y轴的标签为y,图的标题为曲线图,并将其进行保存展示。
(5)子图subplot(),创建两个子图,一行两列的绘图区域,第一个图放在左边区域,第二个图放在右边区域。绘制第一个图为以区间(0,π/2)为x轴,sindata为y轴的曲线图,颜色为红色,宽度为2,x轴的标签为x,y的标签为y,子图标题为sin(x),绘制第一个图为以区间(0,π/2)为x轴,cosdata为y轴的曲线图,颜色为蓝色,宽度为2,x轴的标签为x,y的标签为y,子图标题为cos(x),将绘制完成的子图进行展示并保存。

四、测试与分析(附测试用例,运行结果截图等)

在这里插入图片描述在这里插入图片描述
如图,直方图由有一个个柱形组成,x轴为(0,π/2)区间上100个点对应的sin值也就是(0,1),y轴为每个区间数值对应的频数,取20个区间值,每个区间表示0.05,图标题为“直方图”;散点图的x轴为(0,π/2)区间,y轴按照100个点的sin值,cos值交替组成,对应(0,1)的范围内,图标题为“散点图”。
在这里插入图片描述在这里插入图片描述
如图,饼图由有一个个扇形组成,每个扇形的标签分别为1,2,3,4,对应的比例为10.0%,20.0%,30.0%,40%,每部分用不同的颜色表示,并注明图例,图标题为“饼图”;曲线图的x轴为(0,π/2)区间,y轴按照100个点的sin值,cos值交替组成,对应(0,1)的范围内,图标题为“曲线图”。
在这里插入图片描述
如图,子图有两个曲线图组成组成,第一部分x轴为(0,π/2)区间,y轴为(0,π/2)区间上100个点对应的sin值,图标题为“sin(x)”;第二部分x轴为(0,π/2)区间,y轴为(0,π/2)区间上100个点对应的cos值,图标题为“cos(x)”。

五、设计技巧及体会

1.实验过程中遇到的问题及解决办法;
问题:对函数的应用不熟练;对数据进行处理时,确定x轴和y轴的数值;中文与负数的显示;如何在完成图像的绘制后,进一步进行丰富。
解决方法:对之前学习的知识进行整理回顾,在分析实验要求时,一步一步理清思路,对一些数据分析案例进行学习,在此基础上不断完善自己的绘图。
2.对设计进行评价(优点与不足)
优点:基本完成实验要求,掌握了常见图形的绘制方法,设计过程有条有理,循序渐进,简单明了。
缺点:在完成绘图的基础上,还可以增加一些额外的功能使图像更加丰富,如直方图上标注各项对应的值,标题字体的大小等。
3.对设计及调试过程的心得体会。
首先是对于思路的分析,明确目标,需要使用的数据,对数据进行预处理,需要使用的到的函数,了解函数对应的参数,其次,在完成实验要求的基础上,保证代码简洁,适当添加注释进行说明,然后对于Python库的学习不能停留在简单的掌握,课下还需进行深入的自主学习,最后一点,就是多练习多敲代码,只有真正的将学到的知识,应用到实际中,完成数据分析,才能真正掌握。

六、附源代码

import matplotlib.pyplot as plt
import numpy as np
import math
plt.rcParams['font.sans-serif']='SimHei'#设置中文显示
plt.rcParams['axes.unicode_minus']=False #设置符号显示
# 制作数据
region = np.linspace(0, math.pi/2, 100)  #选取区间[0,π/2]
#print(region)
sindata = []#制作sin数据
for i in range(len(region)):
    y = math.sin(region[i])
    sindata.append(y)
#print(sindata)
cosdata = []#制作cos数据
for i in range(len(region)):
    y = math.cos(region[i])
    cosdata.append(y)
#print(cosdata)
sincos = [] #制作sin和cos的数据 偶数个时取其对应的sin值,奇数个时取其对应的cos值
for i in range(len(region)):
    if i%2 == 0 :
        y = math.sin(region[i])
        sincos.append(y)
    else:
        y = math.cos(region[i])
        sincos.append(y)
# (1)直方图。用sin函数在区间[0,π/2]上100个点做数据;
plt.figure(figsize=(6,6))#将画布设定为正方形
plt.hist(sindata, bins = 20, color='blue', edgecolor = 'black')
plt.xlabel('数值')
plt.ylabel('频数')
plt.title("直方图")
plt.savefig('./直方图')#保存图片
plt.show()
# (2)散点图。用sin和cos函数在区间[0,π/2]上100个点做数据;
plt.figure(figsize=(6,6))#将画布设定为正方形
plt.scatter(region, sincos)
plt.xlabel('x')
plt.ylabel('y')
plt.title("散点图")
plt.savefig('./散点图')#保存图片
plt.show()
# (3)饼图。画出标签为1,2,3,4,大小为10,20,30,40的四个扇形组成的饼图;
plt.figure(figsize=(6,6))#将画布设定为正方形
label=['1','2','3','4']#定义饼图的标签,标签是列表
explode=[0.01,0.01,0.01,0.01]#设定各项距离圆心n个半径
values=[10,20,30,40]
plt.pie(values,explode=explode,labels=label,autopct='%1.1f%%')#绘制饼图
plt.title('饼图')#绘制标题
plt.legend()
plt.savefig('./饼图')#保存图片
plt.show()
# (4)曲线图。用sin和cos函数在区间[0,π/2]上100个点做数据;
plt.figure(figsize=(6,6))#将画布设定为正方形
plt.plot(region,sincos,color="red",linewidth=2)
plt.xlabel('x')
plt.ylabel('y')
plt.title("曲线图")
plt.savefig('./曲线图')#保存图片
plt.show()
# (5)子图。在两个子图中分别用sin和cos函数在区间[0,π/2]上100个点做数据。
plt.subplots_adjust(wspace=0.45)
plt.subplot(121)
plt.plot(region,sindata,color="red",linewidth=2)
plt.xlabel('x')
plt.ylabel('y')
plt.title("sin(x)")
plt.subplot(122)
plt.plot(region,cosdata,color="blue",linewidth=2)
plt.xlabel('x')
plt.ylabel('y')
plt.title("cos(x)")
plt.savefig('./子图')#保存图片
plt.show()
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一份可能符合您要求的实验报告,希望能对您有所帮助。 ## 实验报告 ### 一、实验目的 本次实验旨在掌握特征数据类型的应用、文件的应用、matplotlib绘制图形的应用,并且不使用pandas。 ### 二、实验环境 - Python 3.7 - Jupyter Notebook ### 三、实验内容 #### 1. 特征数据类型的应用 在本次实验中,我们使用了Python中常用的特征数据类型,包括列表、元组、字典等。具体应用如下: ```python # 列表的应用 fruits = ["apple", "banana", "orange"] print(fruits[0]) # 输出 "apple" fruits.append("pear") print(fruits) # 输出 ["apple", "banana", "orange", "pear"] # 元组的应用 colors = ("red", "green", "blue") print(colors[1]) # 输出 "green" # 字典的应用 person = {"name": "Tom", "age": 20, "gender": "male"} print(person["name"]) # 输出 "Tom" person["height"] = 170 print(person) # 输出 {"name": "Tom", "age": 20, "gender": "male", "height": 170} ``` #### 2. 文件的应用 在本次实验中,我们使用了Python中的文件操作,包括打开文件、读取文件、写入文件等。具体应用如下: ```python # 打开文件并读取内容 f = open("data.txt", "r") content = f.read() print(content) f.close() # 写入文件 f = open("output.txt", "w") f.write("Hello, world!") f.close() ``` #### 3. matplotlib绘制图形的应用 在本次实验中,我们使用了Python中的matplotlib进行绘图。具体应用如下: ```python import matplotlib.pyplot as plt # 绘制折线图 x = [1, 2, 3, 4, 5] y = [2, 4, 6, 8, 10] plt.plot(x, y) plt.show() # 绘制散点图 x = [1, 2, 3, 4, 5] y = [2, 4, 6, 8, 10] plt.scatter(x, y) plt.show() ``` ### 四、实验结果 我们成功地掌握了特征数据类型的应用、文件的应用、matplotlib绘制图形的应用,并且不使用pandas。 ### 五、实验总结 本次实验让我们更加深入地了解了Python中的基本数据类型,以及如何进行文件操作和绘图。这些技能对于我们在日后的工作和学习中都有很大的帮助,我们需要不断地练习和掌握。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值