在上一篇中简单介绍了matplotlib绘图的基础方法。用matplotlib进行绘图并不复杂,但是复杂的是让图片变得美观。为了让图片更加美观,更加容易使用编写了一套程序。结构如下:在VisulizationModule中包含Visulization1D,Visulization2D和Visulization3D。在BeamDefinition中包含make_grid, HG_beam, LG_beam, BG_beam以及airy_beam在Plots中包含projection_plots, plot_section_curve等在spectrum_plot中支持绘制两种风格的光谱图如果有数据x和y就可以绘制折线图,这个可以涵盖很多场景,比如温度随着时间变化,风速随着时间变化,地磁强度随着时间变化等。可以选择添加标签、设置不同的线型、填充颜色等参数。Visulization2D()处理平面的伪彩色图。这种图虽然称为二维绘图但是往往涉及三个维度,X、Y以及每一个像素处的值。其中颜色条映射强度值。因而需要三个参数,X,Y和强度I。ax可以绑定具体的坐标区。当然了,在这种情况下我们需要设置纵横比为1:1但在一些情况下比如绘制r-z图的时候,我们需要z方形稍微长一点,就可以设置desired_ratio,这个参数表示视觉上的长宽比。extent设置显示范围,colorlimits设置颜色条的范围。这里演示的是光场的横向截面的强度,在模块BeamDefinition中包含几种光束的定义以及不同的物理量:#U = HG_beam(x,y,2,1,0.5,532e-6,z=2)#U = LG_beam(x,y,2,1,0.5,532e-6,z=0)#U = airy_beam(x,y,0.2,0.2,0.4,532e-6,total_power=1);U = BG_beam(x,y,0.002,0,532e-6,total_power=1)intensity = extract_physical_quantity(U, 'intensity')
在matplotlib中绘制三维图需要先创建三维绘图对象,即: fig = plt.figure(figsize=(10, 7)) ax = fig.add_subplot(111, projection='3d')
这个版本是经过优化过的。在模块Plots中的函数projection_plot包含四个绘图元素:表面图,这个使用Visulization3D绘制,等高线图以及在背面和侧面的投影。后三者借助plot_section_curve函数:plot_section_curve(ax=ax, x=x0, y=2, z=y0, plane_limits=extent2,marker=None,curve_color="red")plot_section_curve(ax=ax, x=-2, y=x1, z=y1, plane_limits=extent3,marker=None,curve_color="blue")
表示在y=2平面绘制y0关于x0的曲线以及在x=-2的区域绘制y1关于x0的曲线。使用boxplot绘制箱线图,显示数据范围,平均值。在文件spectrum_plot.py中提供了两种风格的光谱堆叠图,一种是利用Visulization1D创建N个堆叠的窗口,将每条光谱绘制在这个图片中,对应layout参数中的“tiled”。另一种则是在一个坐标区中将不同的曲线上移,对应layout参数中的“stacked”。(光谱数据可以通过spectrum_generator.py文件生成)假如有一组从10:00:00到10:30:00的光谱图,希望将它们按照特定的维度排列开,这种就是光谱瀑布图。还可以按照不同的维度映射到给定的颜色图中。在实例中,mystyle定义一些风格参数,通过函数plot_waterfall()一键绘制。 http://t.a0j.top/DCEZV/C_oNAElMi