致毕设-如何作图
本文最后更新于 374 天前,其中的信息可能已经有所发展或是发生改变。

一篇文章应该简洁又准确,有些信息仅使用文字是不能同时满足此二者也,因此需要学会制图来传达信息。

我的习惯:
一些展示结果、数据类的绘图(云图、直方图等等)优先用 Python;
流程图、示意图等用 draw.io;
若文章用的是 latex,且图形非常结构化,可以用 latex 的 tikz 绘制流程图。

流程图和示意图

流程图五种基本图形

起止——椭圆/圆角矩形;
处理——矩形;
判断——菱形;
输出输入——梯形;
连接——箭头

PPT

省略……

Draw.io

这是一款免费开源的可以在浏览器直接使用的流程图绘制工具。但实际上,它绝不仅限于绘制流程图,也适合绘制示意图等。它默认提供了很多模板。

官网: draw.io (drawio.com)
在线: https://app.diagrams.net/

Draw.io 没有账户体系,如果使用网页版,文件需要保存在本地,也可以存在网盘,但基本都是国外的。Obsidian 中有 Draw.io 插件,可以进行展示和修改。

Visio

Visio是一款功能强大的流程图软件,由微软公司推出,主要用于绘制各种流程图、结构图、网络拓扑图、组织结构图等等,被广泛的应用在项目管理和工程设计领域。它具有以下特点:

  • 功能强大:Visio 提供了丰富的绘图工具和图形库,支持各种图形元素的绘制和修改,包括线条、箭头、形状、图标等等。
  • 兼容性好:Visio 可以导入和导出多种文件格式,包括 PDF、SVG、AutoCAD 等等,使得多种文件的共享和转换变得更加方便。
  • 易于学习:Visio 的界面清晰简洁,操作流程清晰,易于学习和使用。
  • 适用范围广:Visio 可以应用于各种领域,如流程管理、软件开发、网络架构等等。

在价格方面

Visio 提供了 2 种方案——订阅计划和一次性购买,每个方案还细分出 2 种计划:

订阅计划:Visio 网页版 36 元/月,Visio 网页版 + 桌面客户端 109 元/月

一次性购买(买断):Visio 标准版 2898 元,Visio 专业版 5808 元

数据图

这个网站展示了数据各种图形化的例子,给出详细的解释和示例。
Data Viz Project | Collection of data visualizations to get inspired and find the right type

Python

直接问 ChatGPT 。

常用的库有 Matplotlib ,从2D到3D、从标量到矢量, 图片能够保存成eps、pdf、svg、png和jpg等多种格式。

R

R语言则是做数据统计分析最强大的工具了,在数据挖掘、数据分析等领域具有非常广泛的应用。

ggplot2 是R语言的一个包,最擅长统计数据可视化。ggplot2 按图层作图,其核心理念是将绘图与数据分离。缺点是 ggplot2 功能没有 Python 或者 Matlab 全面,不过人家就是在统计方面做的最好最专业。

Mathematica/Matlab

这两款软件是不用多去介绍的,理工科的人再熟悉不过了,都是一个公司的。

其功能的强大在于编程代码简单,默认出图漂亮,自定义性好,支持常见各种类型的画图,能导出丰富的格式,动态交互很强大,方便简单上手。

Origin

简单易学、操作灵活、功能丰富全面的画图软件,既可以满足一般用户的制图需要,也可以满足高级用户数据分析、函数拟合的需要。

目前,它似乎已成为专业论文SCI的标配绘图软件。缺点是操作系统不太友好、易崩溃,只支持Windows系统。

Latex

Tikz 是 LaTex 原生支持的图包,可以画论文中的插图。二维图、三维图、流程图、示意图都能实现。缺点就是难度较高,入门需花时间。

其实绘图流程应该是在纸上或其他软件先大概画出来,然后描述让gpt4画

LaTeX—Tikz 宏包入门使用教程 – 知乎 (zhihu.com)

如何在LaTeX中使用TikZ绘图的简明教程 – An Amateur Computational Mathematician (scaomath.github.io)

基本流程

需要确保你的TeX系统已安装了pgftikz宏包。

  1. 在文档的导言区载入宏包:
    在LaTeX文档的导言区,使用\usepackage{tikz}命令来载入宏包。
    如果需要使用特定库,请在\usetikzlibrary{}中指定,例如:\usetikzlibrary{shapes,arrows,positioning}

  2. 开始和结束TikZ环境:
    在需要插入图形的地方,使用\begin{tikzpicture}开始一个TikZ环境,并使用\end{tikzpicture}结束该环境。

  3. 根据需求绘制图形元素:
    在TikZ环境中,可以使用各种命令绘制节点、线条、形状等。例如,\node用于添加节点,\draw用于绘制线条等。

  4. 设置样式:
    为了使图形更美观,可以使用\tikzset{}或者在TikZ环境中使用style选项设置样式。例如,\tikzset{mystyle/.style={rectangle,rounded corners,draw=black,minimum width=2cm,minimum height=1cm,inner sep=5pt,align=center}}定义了一个名为mystyle的样式,可用于节点等。

Latex绘制的曲线图:

Latex绘制的结构图:

借助 GPT4

为了让GPT4更好地理解想要绘制的流程图,可以按照以下几个方面提供详细信息:

  1. 流程图中的节点:

    • 节点的数量和描述(例如,“开始”、“步骤1”等)。
    • 节点的形状(例如,矩形、圆形、椭圆等)。
    • 节点的样式(例如,边框、颜色、文字大小等)。
  2. 流程图中的连接线:

    • 连接线的类型(例如,直线、曲线、双箭头等)。
    • 连接线的样式(例如,颜色、粗细、箭头形状等)。
    • 节点之间的连接关系(例如,“开始”连接到“步骤1”等)。
  3. 节点之间的相对位置:

    • 节点之间的水平和垂直距离。
    • 节点之间的对齐方式(例如,居中对齐、左对齐等)。
  4. 其他元素和样式:

    • 是否需要背景颜色、边框等其他元素。
    • 是否需要标注、文字说明等。
我想要用Latex的Tikz绘制一个UWB定位系统中标签的程序流程图。已有的LaTeX代码如下
\documentclass[type=bachelor]{bithesis}
\usepackage{listings}

\usepackage[
  backend=biber,
  style=gb7714-2015,
  gbalign=gb7714-2015,
  gbnamefmt=lowercase,
  gbpub=false,
  doi=false,
  url=false,
  eprint=false,
  isbn=false,
]{biblatex}

% 参考文献引用文件位于 misc/ref.bib
\addbibresource{misc/ref.bib}

% 文档开始
\begin{document}

\end{document}

提交的latex代码中省略上面已有的代码。

会用到的节点形状有:起止——圆角矩形;判断——菱形;处理——矩形;输出输入——梯形;连接线用单箭头的。

以下是节点信息,左边是节点类型,右边是节点描述:
开始--上电;
步骤1--初始化一系列资源;
步骤2--广播通信帧;
判断1--收到锚点的答复信息? NO 就连接到步骤1与步骤2之间的连接线上, YES就继续向下
步骤3--与锚点测距得到飞行时间,存锚点信息到MyLink和AnchorData;
步骤4--计算与锚点之间的距离,存入AnchorData,更新屏幕;
步骤5--计算本次测距与前两次测距平均值,存入MyLink;
判断2--距离上次发送数据超过 updateInterval 时间? NO 就连接到步骤1与步骤2之间的连接线上, YES就继续向下
步骤6--转化MyLink为JSON格式;
步骤7--发送JSON数据到服务端,记录时间戳;
步骤7的连接线连接到步骤1与步骤2之间的连接线上

请提交相应的latex代码

流程图(一条线往下的)模板

% 绘制流程图
\usepackage{tikz}
\usetikzlibrary{arrows.meta,
                chains,
                positioning,
                shapes.geometric}

如图\ref{fig:tagflowchart}

\begin{figure}[htbp]
\centering
\begin{tikzpicture}[
node distance = 6mm and 6mm,
  start chain = going below,
  arr/.style = {-Stealth, thick},
  base/.style = {draw, minimum width=3cm, align=center, on chain},
  startstop/.style = {base, rectangle, rounded corners},
  io/.style = {base, trapezium, trapezium left angle=70, 
               trapezium right angle=110, fill=blue!30},
  process/.style = {base, rectangle, fill=orange!30},
  decision/.style = {base, diamond, fill=green!30, 
               minimum height=1cm, minimum width=2cm, aspect=2},
]

\node (start) [startstop] {上电};            % start
\node (step1) [process]   {初始化一系列资源};    % step 1
\node (step2) [process]   {广播通信帧};       % step 2
\node (dec1) [decision]  {收到锚点的答复信息?};  % decision 1
\node (step3) [process]   {与锚点测距得到飞行时间,\\存锚点信息到MyLink和AnchorData}; % step 3
\node (step4) [process]   {计算与锚点之间的距离,\\存入AnchorData,更新屏幕}; % step 4
\node (step5) [process]   {计算本次测距与前两次测距平均值,\\存入MyLink}; % step 5
\node (dec2) [decision]  {距离上次发送数据超过 \\ updateInterval 时间?};  % decision 2
\node (step6) [process]   {转化MyLink为JSON格式}; % step 6
\node (step7) [io]        {发送JSON数据到服务端}; % step 7
\node (step8) [process]   {记录时间戳}; % step 8

\draw[arr] (start) -- (step1);
\draw[arr] (step1) -- (step2);
\draw[arr] (step2) -- (dec1);
\draw[arr] (dec1) -- node[midway,right] {YES} (step3);
\draw[arr] (dec1.west) -- ++(-1,0) node[pos=1,left] {NO} |- (step2);
\draw[arr] (step3) -- (step4);
\draw[arr] (step4) -- (step5);
\draw[arr] (step5) -- (dec2);
\draw[arr] (dec2) -- node[midway,right] {YES} (step6);
\draw[arr] (dec2.west) -- ++(-2,0) node[pos=1,left] {NO} |- (step2);
\draw[arr] (step6) -- (step7);
\draw[arr] (step7) -- (step8);
\draw[arr] (step8.east) -- ++(3,0) |- (step2);
\end{tikzpicture}
\caption{标签程序流程图} % 插入标题
\label{fig:tagflowchart} % 插入标签,用于引用
\end{figure}
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇