实验二、数据处理之Matplotlib

一、实验目的

  1. 了解matplotlib库的基本功能
  2. 掌握matplotlib库的使用方法

二、实验工具:

  1. Anaconda
  2. Numpy,matplotlib
  3. python

三、Matplotlib简介

Matplotlib 包含了几十个不同的模块, 如 matlab、mathtext、finance、dates 等,而 pylot 则是我们最常用的绘图模块

四、实验内容

1.绘制正弦曲线,并设置标题、坐标轴名称、坐标轴范围

import numpy as np
import matplotlib.pyplot as plt
from pylab import mpl
#设置字体
mpl.rcParams['font.sans-serif']=['FangSong']
mpl.rcParams['axes.unicode_minus']=False
x = np.arange(0,2*np.pi,0.02)
y = np.sin(x)
plt.plot(x,y)
plt.title(u'正弦曲线',fontdict={'size':18})#设置标题
plt.xlabel(u'弧度',fontdict={'size':16})#显示横轴名称
plt.ylabel(u'正弦值',fontdict={'size':16})#显示纵轴名称
plt.axis([-0.1*np.pi,2.1*np.pi,-1.1,1.1])#设置坐标轴范围
plt.show()

在这里插入图片描述

2.同一坐标系中绘制多种曲线并通过样式、宽度、颜色加以区分

import numpy as np
import matplotlib.pyplot as plt
from pylab import mpl
#设置字体
mpl.rcParams['font.sans-serif']=['FangSong']
mpl.rcParams['axes.unicode_minus']=False
x = np.linspace(-5,5,200)
f1 = np.power(10,x)
f2 = np.power(np.e,x)
f3 = np.power(3,x)
plt.plot(x,f1,'r',ls='-',linewidth=2,label='$10^x$')
plt.plot(x,f2,'b',ls='--',linewidth=2,label='$e^x$')
plt.plot(x,f3,'g',ls=':',linewidth=2,label='$3^x$')
plt.axis([-5,5,-0.5,8])
plt.text(1,7.5,r'$10^x$',fontsize=15)
plt.text(2.2,7.5,r'$e^x$',fontsize=15)
plt.text(3.1,7.5,r'$3^x$',fontsize=15)
plt.title("幂函数曲线图",fontsize=15)
plt.legend(loc='upper left')
plt.show()

在这里插入图片描述

3.绘制多轴图,即将多幅子图绘制在同一画板。

import matplotlib.pyplot as plt

plt.subplot(221) # 两行两列的第1个位置
plt.axis([-1, 2, -1, 2])
plt.axhline(y=0.5, color='b')
plt.axhline(y=0.5, xmin=0.25, xmax=0.75, color='r')
plt.subplot(222) # 两行两列的第2个位置
plt.axis([-1, 2, -1, 2])
plt.axvline(x=0, ymin=0, linewidth=4, color='r')
plt.axvline(x=1.0, ymin=-0.5, ymax=0.5, linewidth=5, color='g')
plt.subplot(212) # 两行一列的第2个位置
plt.axis([-1, 2, -1, 2])
plt.axvspan(1.25, 1.55, facecolor='g', alpha=0.5)
plt.axhspan(0.25, 0.75, facecolor='0.5', alpha=0.5)

plt.show()

在这里插入图片描述

4.直方图的绘制(数据自己定义)

import numpy as np
import matplotlib.pyplot as plt
mydata = np.random.normal(3.0,1.0,1000)
plt.hist(mydata)
plt.title("直方图",fontsize=15)
bins=np.arange(-3,14,1)
plt.hist(mydata,bins)
plt.show()

在这里插入图片描述

5.绘制散点图

import numpy as np
import matplotlib.pyplot as plt
x = np.random.rand(80)
y = np.random.rand(80)
area = np.pi * (15 * np.random.rand(80))**2
color = 2 * np.pi * np.random.rand(80)
plt.title("散点图",fontsize=20)
plt.scatter(x, y, s=area, c=color, alpha=0.5, cmap=plt.cm.hsv)
plt.show()

在这里插入图片描述

6.绘制盒状图

import matplotlib.pyplot as plt
import numpy as np
 
all_data = [np.random.normal(0, std, 100) for std in range(1, 4)]
 
fig = plt.figure(figsize=(8,6))
 
plt.boxplot(all_data,
            notch=False, # box instead of notch shape
            sym='rs',    # red squares for outliers
            vert=True)   # vertical box aligmnent
 
plt.xticks([y+1 for y in range(len(all_data))], ['x1', 'x2', 'x3'])
plt.xlabel('measurement x')
t = plt.title('盒状图',fontsize=20)
plt.show()


在这里插入图片描述

7.尝试matplotlib库的其它功能,如2D,3D等

2D

import numpy as np
import matplotlib.pyplot as plt
data=np.clip(np.random.randn(5,5),-1,1)
plt.subplot(221)
plt.imshow(data)
plt.subplot(222)
plt.imshow(data,cmap=plt.cm.cool)
plt.subplot(223)
plt.imshow(data,cmap=plt.cm.hot)
plt.colorbar()
plt.subplot(224)
im = plt.imshow(data,cmap=plt.cm.winter)
plt.colorbar(im, cmap=plt.cm.winter, ticks=[-1,0,1])
plt.show()


![在这里插入图片描述](https://img-blog.csdnimg.cn/ec4422207d284175b3111eda401728ee.png

3D

import numpy as np
import matplotlib.pyplot as plt
import mpl_toolkits.mplot3d
x, y = np.mgrid[-2:2:50j,-2:2:50j]
z = x*np.exp(-x**2-y**2)
ax = plt.subplot(111,projection='3d')
ax.plot_surface(x,y,z,rstride=2,cstride=1,cmap=plt.cm.coolwarm,alpha=0.8)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
plt.show()

![在这里插入图片描述](https://img-blog.csdnimg.cn/807c33d5b5bc45c5825a4284aad7c708.png

8.安装pyecharts,利用pyecharts自选数据并进行可视化展示。

(此部分数据是从网上寻找的,可自行另找数据)

from pyecharts.charts import Pie ,Grid,Bar,Line
#from pyecharts.faker import Faker #数据包from pyecharts.charts import Map,Geo
from pyecharts.charts import Map,Geo
from pyecharts import options as opts
from pyecharts.globals import ThemeType

locate =['合肥市', '阜阳市', '亳州市', '安庆市', '马鞍山市', '铜陵市', '六安市', '滁州市', '池州市','蚌埠市','芜湖市','宿州市','宣城市','淮北市','淮南市','黄山市']
data =['115','105','72','66','30','22','41','11','11','88','27','27','5','22','14','9']

list1 = [[locate[i],data[i]] for i in range(len(locate))] #首先创建数据
map_1 = Map(init_opts=opts.InitOpts(width="400px", height="460px")) #创建地图,其中括号内可以调整大小,也可以修改主题颜色。
map_1.add("安徽疫情", list1, maptype="安徽") #添加安徽地图
map_1.set_global_opts( #设置全局配置项#title_opts=opts.TitleOpts(title="安徽疫情"), 添加标题
    visualmap_opts=opts.VisualMapOpts(max_=120, is_piecewise=True),#最大数据范围 并且使用分段
    legend_opts=opts.LegendOpts(is_show=False), #是否显示图例
    )
map_1.render() #将地图以html形式保存在工作目录下

tips:这个图片不会直接打印输出,而是以html文件的形式保存到工作目录中

在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 激光雷达数据处理是通过处理激光雷达测量的点云数据来实现的。在Python中,可以使用一些常用的库来处理激光雷达数据,如numpy和matplotlib。 首先,需要将激光雷达的原始数据转换为点云数据,通常是以文本文件的形式存在。可以使用Python中的文件读取函数将数据读取到内存中。 读取到内存后,可以使用numpy库对数据进行进一步处理,如计算点的距离或者角度等。numpy库提供了强大的数组操作功能,可以方便地进行数据处理和计算。 接着,可以使用matplotlib库对处理后的点云数据进行可视化。matplotlib库提供了丰富的绘图函数,可以绘制出点云的三维形状或者二维投影图等。 在处理激光雷达数据时,还可以根据需求进行其他更复杂的处理,例如滤波、地面提取、障碍物检测等。这些处理可以使用其他相关的Python库来实现,如scipy、scikit-learn等。 最后,根据实际需求对数据进行分析和应用。例如可以使用机器学习算法对点云数据进行分类、分割或者聚类等。可以使用scikit-learn库来实现一些常见的机器学习算法,如支持向量机、随机森林等。 总之,通过使用Python中的各种库和函数,可以方便地进行激光雷达数据处理实验。可以根据实际需求选择合适的库和算法,对数据进行处理、分析和应用。 ### 回答2: 激光雷达数据处理是一个常见的技术,用于获取和分析激光雷达传感器返回的数据。在Python中,可以使用一些库和模块来处理激光雷达数据,如PCL(点云库)和ROS(机器人操作系统)。 下面是一个简单的激光雷达数据处理实验代码的示例: ``` import numpy as np import pcl # 读取激光雷达数据文件 cloud = pcl.load("laser_data.pcd") # 将点云数据转换为numpy数组 points = np.array(cloud) # 进行数据处理操作,如降采样、滤波、聚类等 # 例如,进行体素网格下采样 vox = cloud.make_voxel_grid_filter() vox.set_leaf_size(0.01, 0.01, 0.01) downsampled_cloud = vox.filter() # 进行聚类分割 seg = downsampled_cloud.make_segmenter() seg.set_model_type(pcl.SACMODEL_PLANE) seg.set_method_type(pcl.SAC_RANSAC) seg.set_distance_threshold(0.01) cluster_indices, coefficients = seg.segment() # 可根据需要执行其他操作,如可视化、保存结果等 ``` 这段代码首先使用pcl库加载激光雷达数据文件,然后将点云数据转换为numpy数组以进行进一步处理。之后,可以进行各种数据处理操作,本示例中演示了体素网格下采样和聚类分割。可以根据需要进行其他操作,如可视化结果或保存处理后的数据等。 需要注意的是,这只是一个简单的示例代码,实际的激光雷达数据处理可能涉及更多的复杂操作和算法,需要根据具体的需求进行更多的代码编写和测试。 ### 回答3: 激光雷达数据处理是一项非常重要的技术,在无人驾驶、机器人导航等领域起着关键作用。Python作为一种脚本语言,在激光雷达数据处理中也有广泛的应用。下面将简要介绍一种基于Python的激光雷达数据处理实验代码。 首先,我们需要导入一些必要的Python库,例如numpy、matplotlib等。这些库提供了丰富的数据处理和可视化功能,能够方便地对激光雷达数据进行处理和展示。 接着,我们需要读取激光雷达数据。通常,激光雷达数据保存在文本文件或者二进制文件中,我们可以使用Python的文件读取功能将其读入内存中。读取完成后,可以将其存储为一个numpy数组,方便后续的处理。 在处理数据之前,我们通常需要对激光雷达数据进行滤波。常见的滤波方法包括高斯滤波、中值滤波等,可以有效地去除噪声和异常值。通过调用相应的库函数,我们可以很方便地进行滤波操作。 接下来,我们需要对滤波后的数据进行处理。例如,可以将数据转换为极坐标形式,计算激光雷达点云的密度、角度分布等统计量。这些统计量可以帮助我们更好地理解和分析激光雷达数据。 最后,我们可以使用matplotlib库进行数据可视化。通过绘制散点图、雷达图等形式,可以直观地展示激光雷达数据的分布和特征。这样可以帮助我们更好地理解和分析激光雷达数据,并辅助后续的决策和控制。 综上所述,基于Python的激光雷达数据处理实验代码可以帮助我们方便地对激光雷达数据进行处理、分析和可视化。这种代码的开发和运行需要一定的Python编程基础和相关领域知识,但是通过学习和实践,我们可以更好地应用激光雷达数据处理技术,为实际应用提供有效的支持。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dlex、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值