目录
一、实验目的... 1
二、实验环境... 1
三、实验内容... 1
1)绘制带颜色的柱状图。.. 1
2)绘制堆叠柱状图。.. 3
3)绘制数学函数曲线图。.. 4
4)使用seaborn绘制组合图形。... 5
5)使用Boken绘制多个三角形图。.. 7
6)使用pyqtgraph绘制曲线图。... 8
7)使用Numpy和matplotlib在一张图中绘制多种图形。.. 10
四、思考问题... 13
五、总结与心得体会... 13
一、实验目的
了解大数据可视化的特点,能进行简单的与大数据可视化有关的操作,能够绘制不同的可视化图表。
二、实验环境
硬件:微型图像处理系统,
包括:主机, PC机;
操作系统:Windows 11
应用软件:Jupyter Notebook, pycharm
数字图像处理软件:Excel/Python
三、实验内容
1)绘制带颜色的柱状图。
编写如下代码:
import matplotlib.pyplot as plt |
这段代码中:
导入matplotlib.pyplot模块。
定义了x轴的位置列表x。
定义了柱状图的高度列表heights。
定义了柱状图的颜色列表colors,列表中的每个颜色将分别应用于相应的柱子。
使用plt.bar函数绘制柱状图,其中color=colors参数将上面定义的颜色列表应用到每个柱子上。
使用plt.title,plt.xlabel,和plt.ylabel分别添加图表的标题和x、y轴的标签。
使用plt.show()函数显示图表。
运行结果如下:
2)绘制堆叠柱状图。
编写如下代码:
import matplotlib.pyplot as plt |
运行结果如下:
3)绘制数学函数曲线图。
绘制正弦余弦图,编写如下代码:
from bokeh.plotting import figure, output_file, show |
运行结果如下:
4)使用seaborn绘制组合图形。
编写如下代码:
|
运行结果如下:
5)使用Boken绘制多个三角形图。
编写代码如下:
from bokeh.plotting import figure, output_file, show |
这段代码使用了Python的Bokeh库来创建并展示两个带有透明度和线条宽度的图形补丁(patches)。Bokeh是一个强大的交互式可视化库,它可以用来生成复杂的图表和图形,并且可以集成到Web应用程序中。下面是代码的详细解释:
frombokeh.plottingimportfigure,output_file,show:从bokeh.plotting模块导入figure,output_file,和show函数。
figure用于创建一个新的Bokeh图形对象。
output_file用于指定将要生成的HTML文件的名称,这个文件将包含渲染的图表。
show用于显示一个Bokeh图形对象。
output_file("patch.html"):这行代码设置了输出文件的名称。当你运行这段代码时,Bokeh将会生成一个名为"patch.html"的文件,其中包含了渲染的图形。
p=figure(plot_width=400,plot_height=400):创建一个新的Bokeh图形对象p,并设置图形的宽度和高度为400像素。
p.patch([1,3,5],[5,8,5],alpha=0.5,line_width=2):使用p.patch方法在图形上绘制第一个多边形补丁。
第一个参数[1,3,5]是x坐标列表。
第二个参数[5,8,5]是y坐标列表。
alpha=0.5设置了补丁的透明度,0是完全透明,1是完全不透明。
line_width=2设置了多边形边缘线条的宽度。
p.patch([2,3,4],[5.5,7,5.5],alpha=0.3,line_width=2):同样使用p.patch方法绘制第二个多边形补丁,其参数与第一个类似,但透明度和坐标点不同。
show(p):显示图形对象p。这将打开一个Web浏览器窗口,展示由p定义的图形。在JupyterNotebook环境中,show函数还可以内联显示图表。
运行这段代码后,将会生成一个包含两个半透明多边形补丁的HTML文件"patch.html"。这些补丁叠加在同一个坐标轴上,各自具有不同的透明度和线条宽度,展示了Bokeh在图形渲染方面的灵活性和定制能力。
运行结果如下:
6)使用pyqtgraph绘制曲线图。
编写代码如下:
import pyqtgraph as pg |
这段代码使用了pyqtgraph库来创建一个简单的应用程序,该程序绘制了一个余弦波形图。pyqtgraph是一个基于Qt的图形库,它提供了丰富的数据可视化工具,特别适合实时数据更新和交互式图表。下面是代码的详细解释:
importpyqtgraphaspg:导入pyqtgraph库,并给它起一个别名pg,这样你就可以通过pg来访问库中的函数和类。
importnumpyasnp:导入numpy库,并给它起一个别名np。numpy是一个用于科学计算的库,它提供了大量的数学函数和对多维数组的支持。
app=pg.mkQApp():创建一个Qt应用程序实例。在pyqtgraph中,你需要一个Qt应用程序的上下文来使用图形和窗口。pg.mkQApp()会检查是否已经有一个Qt应用程序在运行,如果有,它会返回那个应用程序的实例;如果没有,它会创建一个新的应用程序实例。
x=np.linspace(2,10*np.pi,100):使用numpy的linspace函数生成一个等间隔的数组。
2是数组的起始值。
10*np.pi是数组的结束值。
100是数组中的元素数量。这个函数会生成从2到20π(约等于62.8318)的100个等间隔的点。
z=np.cos(x):计算数组x中每个点的余弦值,并将结果存储在数组z中。这样,z就包含了对应x值的余弦波形的y坐标。
pg.plot(x,z):使用pyqtgraph的plot函数创建一个图形窗口并绘制图形。
第一个参数x是图形的x轴数据。
第二个参数z是图形的y轴数据,即余弦波形。
app.exec_():进入Qt应用程序的主循环。这行代码会启动应用程序的事件循环,等待用户与图形窗口进行交互,例如关闭窗口。在JupyterNotebook环境中,你可能需要使用%guiqt魔法命令来确保图形可以正确显示。
运行这段代码后,会出现一个窗口,显示了一个从2到20π的余弦波形图。用户可以关闭这个窗口,或者与图形进行交互,如缩放和平移。这段代码展示了如何使用pyqtgraph和numpy快速创建一个基本的实时更新的交互式图表。
运行结果如下:
7)使用Numpy和matplotlib在一张图中绘制多种图形。
编写以下代码:
import matplotlib.pyplot as plt |
这段代码使用了matplotlib库,一个非常流行的Python绘图库,来创建一个包含多个子图的复杂图表。下面是代码的详细解释:
importmatplotlib.pyplotasplt:导入matplotlib.pyplot模块,并给它起一个别名plt,这是matplotlib中用于绘图的模块。
importnumpyasnp:导入numpy库,并给它起一个别名np,用于进行数学运算。
x=np.linspace(0,10,100):使用numpy的linspace函数生成一个包含100个从0到10均匀分布的数值的数组。
y=2*np.cos(x)**5+3*np.sin(x)**3:根据x的值计算y的值。这里y是由余弦函数和正弦函数经过变换后相加得到的。
fig,axes=plt.subplots(2,3,figsize=(10,6),facecolor='#ccddef'):使用plt.subplots创建一个2行3列的子图网格。figsize设置了整个图表的大小,facecolor设置了图表的背景颜色。
fig.suptitle('Photo',fontsize=20):为整个图表添加一个主标题"Photo"。
axes[0,0].plot(x,y):在第一个子图(0,0)上绘制x和y的折线图。
axes[0,1].bar(x,y*y):在第二个子图(0,1)上绘制x和y*y的柱状图。
axes[0,2].hist(y,bins=30):在第三个子图(0,2)上绘制y的直方图,bins=30表示将直方图分成30个箱子。
axes[1,0].scatter(x,y):在第四个子图(1,0)上绘制x和y的散点图。
axes[1,1].barh(x,y):在第五个子图(1,1)上绘制x和y的水平柱状图。
axes[1,2].pie([1,2,3,4,5],labels=['A','B','C','D','E']):在第六个子图(1,2)上绘制一个饼图,饼图由5个部分构成,每个部分的数值分别为1到5。
ax1=axes[0,0]:获取第一个子图的引用。
ax1.set(xlim=[-10,12],ylim=[-6,4],facecolor='#ffeedd'):对第一个子图进行详细设置,包括设置坐标轴的范围、标题、标签以及背景颜色。
ax1.grid(True):为第一个子图添加网格线。
fig.subplots_adjust(left=0.2,bottom=0.1,right=0.8,top=0.8,hspace=0.5):调整子图之间的间距,left、bottom、right、top分别设置子图与图表边缘的距离,hspace设置子图之间的水平间距。
plt.show():显示图表。在JupyterNotebook中,这会导致图表内联显示。在Python脚本中,这将打开一个窗口来显示图表。
运行这段代码后,会显示一个包含6个不同类型图表的窗口,每个图表都根据其数据和类型进行了特定的设置和样式定制。这个例子很好地展示了matplotlib的灵活性和强大的绘图能力。
运行结果如下:
四、思考问题
Python软件功能强大,除了上述要实现的功能,大家可以自己进行扩展。
五、总结与心得体会
无。