论文绘图

「一篇论文投多个期刊,每个期刊对图表格式要求不一,同一组数据要用多种工具分别绘图。」

不光是你,哈佛大学天文研究所的博士后,也不堪忍受论文重复绘图之苦。

他的解决办法是:亲自开发一个Matplotlib的补充包,增添scatter、notebook等其他软件常用的绘图工具,还支持一键调用符合IEEE等不同期刊要求的图表格式

现在,这个论文神器已经在Github开源,@爱可可老师 也在微博推荐,收获大量转发好评。

安装工具包

推荐使用Python3环境,并且要预装Matplotlib原始包。

安装这款补充包可以通过pip用一行代码完成:

pip install git+https://github.com/garrettj403/SciencePlots.git

 
 

你也可以选择手动安装工具包,把Github上的项目克隆到本地以后,直接将*.mplstyle的所有文件放到Matplotlib的风格(style)路径下。如果不清楚具体路径,使用以下代码:


 
 
  1. import matplotlib
  2. print(matplotlib.get_configdir())

编译器会返回Matplotlib的路径,你可能还需要手动建立一个stylelib文件夹。

使用教程

调用补充包的各种风格和格式十分简单,都可以通过一行代码直接实现。

「science」是这个补充包最基本的一种风格,基本满足一般科研论文的绘图要求,代码如下:


 
 
  1. import matplotlib.pyplot  as plt
  2. plt.style.use( 'science')

也可以在同一张图中使用多个不同的风格:

plt.style.use(['science','ieee'])

 
 

对于一些期刊,比如IEEE,图表的格式要求中提出要在基本格式上强调某些特定的参数(字体大小,图片宽度等),单独调用这些特殊格式要求使用如下代码:


 
 
  1. with plt .style .context( ['science', 'ieee']):
  2. plt .figure()
  3. plt .plot( x, y)
  4. plt .show()

调用指令就这么简单。

使用实例

基本风格「science」:

「science」+「grid」(网格)风格:

「ieee」风格:IEEE期刊对图表的尺寸、文字大小都有要求,同时还要求在黑白印刷时也能清晰呈现,下图是符合要求的「science」+「ieee」风格:

「science」+「scatter」(离散)风格:

Jupyter环境下的「notebook」风格:

补充包中的风格也可以和Matplotlib中的已有风格一起调用,例如「dark_background」+「science」+「 high-vis」: 

此外,扩展包还提供多种绘图色彩搭配方案。

high-vis:

bright:

vibrant:

muted:

retro:

补充包默认使用Latex字体渲染,如果电脑中没有Latex,可以改用无Latex渲染模式:

plt.style.use(['science','no-latex'])

 
 

这个项目还在持续更新中,作者会不断添加不同的期刊格式,如果需要检查更新最新版本,通过这行代码实现:

pip install SciencePlots

 
 

作为科研党的你看到这款论文神器有没有心动呢?

如果它真的对你写论文有帮助,那么赶紧用起来吧。

在电子设计自动化(EDA)领域,Verilog HDL 是一种重要的硬件描述语言,广泛应用于数字系统的设计,尤其是在嵌入式系统、FPGA 设计以及数字电路教学中。本文将探讨如何利用 Verilog HDL 实现一个 16×16 点阵字符显示功能。16×16 点阵显示器由 16 行和 16 列的像素组成,共需 256 个二进制位来控制每个像素的亮灭,常用于简单字符或形显示。 要实现这一功能,首先需要掌握基本的逻辑门(如与门、或门、非门、与非门、或非门等)和组合逻辑电路,以及寄存器和计数器等时序逻辑电路。设计的核心是构建一个模块,该模块接收字符输入(如 ASCII 码),将其转换为 16×16 的二进制位流,进而驱动点阵的 LED 灯。具体而言,该模块包含以下部分:一是输入接口,通常为 8 位的 ASCII 码输入,用于指定要显示的字符;二是内部存储,用于存储字符对应的 16×16 点阵数据,可采用寄存器或分布式 RAM 实现;三是行列驱动逻辑,将点阵数据转换为驱动 LED 矩阵的信号,包含 16 个行输出线和 16 个列使能信号,按特定顺序选通点亮对应 LED;四是时序控制,通过计数器逐行扫描,按顺序控制每行点亮;五是复用逻辑(可选),若点阵支持多颜色或亮度等级,则需额外逻辑控制像素状态。 设计过程中,需用 Verilog 代码描述上述逻辑,并借助仿真工具验证功能,确保能正确将输入字符转换为点阵显示。之后将设计综合到目标 FPGA 架构,通过配置 FPGA 实现硬件功能。实际项目中,“led_lattice”文件可能包含 Verilog 源代码、测试平台文件、配置文件及仿真结果。其中,测试平台用于模拟输入、检查输出,验证设计正确性。掌握 Verilog HDL 实现 16×16 点阵字符显示,涉及硬件描述语言基础、数字逻辑设计、字符编码和 FPGA 编程等多方面知识,是学习
### 关于力学相关绘图的方法与工具 在科学研究和工程领域,MATLAB 和 Python 是常用的两种编程语言,用于完成复杂的科学计算、数据分析以及可视化工作。对于涉及力学的论文绘图需求,可以采用多种方法和工具来实现。 #### 使用 MATLAB 进行力学相关的绘图 MATLAB 提供了丰富的内置函数支持三维形绘制,特别是针对复杂的数据集或模拟结果。例如 `plot3` 函数可用于创建三维折线,而 `fill3` 则能对这些线条之间的区域进行填充[^2]。这种组合非常适合展示力场分布或其他空间变化现象。如果研究对象涉及到更高级别的物理过程比如流体流动或者应力应变关系,则可能还需要借助其他专门的功能模块如 PDE Toolbox 来解决偏微分方程组等问题[^3]。 以下是利用 plot3 和 fill3 实现简单三维面积的一个例子: ```matlab % 定义坐标轴范围 [x, y] = meshgrid(0:0.1:pi, 0:0.1:2*pi); z = sin(x).*cos(y); figure; hPlot = plot3(zeros(size(x)), zeros(size(y)), z); % 创建初始曲线 hold on; for i=1:size(x,1)-1 X=[x(i,:); x(i+1,:)]; Y=[y(i,:); y(i+1,:)]; Z=[z(i,:); z(i+1,:)]; hFill = fill3(X(:),Y(:),Z(:),'b'); % 填充颜色为蓝色 end axis equal; grid off; box on; view(-45,37.5); colormap jet; colorbar('SouthOutside'); title('Three-Dimensional Area Plot Example','FontSize',14,'FontWeight','bold') xlabel('\bfX-axis (meters)'); ylabel('\bfY-axis (seconds)'); zlabel('\bfAmplitude (\mu m)'); ``` #### 使用 Python 的 Matplotlib 库进行力学绘图 Python 中最流行的绘图库之一就是 Matplotlib ,它提供了极大的灵活性去定制各种类型的表 。 对于需要表达矢量场、张量特性或者其他多维数据结构的情况来说 , Axes3D 类型子能够很好地满足要求 。 此外还有 Mayavi 或者 ParaView 等第三方软件包也可以作为补充选项考虑进去 。 下面给出一段基于 NumPy 和 Matplotlib 绘制二维向量场的例子代码片段 : ```python import numpy as np from matplotlib import pyplot as plt from mpl_toolkits.mplot3d import axes3d fig = plt.figure(figsize=(8,6)) ax = fig.add_subplot(projection='3d') u,v,w,x,y,z=np.random.rand(6,10) quiver=ax.quiver( x, y, z, u, v, w, length=.1, normalize=True ) plt.show() ``` ### 结论 无论是选择 MATLAB 还是 Python 都可以根据具体项目的需求选取合适的绘图方式。两者各有优势,在实际应用过程中往往也会相互配合使用以达到最佳效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值