985博后最爱的免费开源图表绘制工具,导师夸爆了
xsobi 2024-11-26 10:14 1 浏览
我们写论文的时候,需要用文档编辑器写文本,需要绘图工具制图。一旦文本、图片修改,就需要在不同的工具间切换,专业绘图和编辑文字花费了用户宝贵的时间。
有没有什么工具可以同时完成文档编辑和专业绘图?
有!Mermaid 可以做到,它通过允许用户创建便于修改的图表来解决这一难题。换句话说,Mermaid 就是通过简单的语法绘制出复杂的图形。
笔者使用 Obsidian 写论文、做笔记。当需要专业绘图的时候,直接在文档上输入Mermaid 语法就可以绘制出一张专业图表。 你不需要安装任何插件,只需要用 Obsidian 就可以实现科研绘图。
下图是笔者使用 Obsidian 写笔记的时候,插入 Mermaid 语法,实时实现专业绘图。导师看了都说牛!
Mermaid
Mermaid 是一个基于 Javascript 的图表绘制工具,通过解析类 Markdown 的文本语法来实现图表的创建和动态修改。Mermaid诞生的主要目的是让文档的更新能够及时跟上开发进度。
Mermaid 被提名并获得了 JS Open Source Awards (2019) 的 "The most exciting use of technology" 奖项!!!
笔者刚开始使用 Mermaid 的时候,也是豁然开朗,原来科研绘图还能这么玩。
Mermaid 也有一个线上实时编辑器(Live Editor),Live Editor 可以编写语法,实时预览图形,还有样本库,可以导出多种文件,如下图所示。Live Editor 的地址:
https://mermaid.live/edit
大家可以上去 Live Editor 体验一下 Mermaid 的用法。
更多详细用法,请看官方教程:
https://mermaidjs.github.io/mermaid/
Mermaid的专业绘图
Mermaid 支持流程图、时序图、饼图、甘特图、类图、状态图、旅程图等。
下面通过一些示例演示 Mermaid 的用法。
流程图
Mermaid 提供了流程图用法,只需要几行语法就可以实现一个流程图。
下面是一个流程图的示例。在 Obsidian 上输入以下语法,您就可以看到这么个流程图了。
flowchart LR
A[Hard] -->|Text| B(Round)
B --> C{Decision}
C -->|One| D[Result 1]
C -->|Two| E[Result 2]
Mermaid 并不复杂,仔细看这段语法,你会发现几个关键点:
? 关键字 flowchart LR,表示从左向右的流程图。同理,如果我们想画从右往左的流程图,那么就用关键字 flowchart RL。
? A[Hard] 表示一个内容为“Hard”方框,名称为 A。
? -->表示连接线方向。
? |Text|表示线上文本。
? B(Round) 表示一个内容为“Round”圆框,名称为 B。
? C{Decision} 表示一个内容为“Decision”菱形,名称为C。
? 定义好几个元素后,就可以通过箭头连接各个元素了。
它的效果是下图这样的。
是不是很神奇?学会使用 Mermaid,还需要什么 VISIO 绘图! Mermaid会自动帮助我们排版,而我们只需要负责好内容。
时序图
Mermaid 提供了时序图用法。时序图的语法和流程图的语法不同,区别还是挺大的。但是流程图和时序图的工作流程差不多:先写关键字,再写定义元素,最后用箭头连接各个元素。
下面是一个流程图的示例。
sequenceDiagram
Alice->>John: Hello John, how are you?
loop Healthcheck
John->>John: Fight against hypochondria
end
Note right of John: Rational thoughts!
John-->>Alice: Great!
John->>Bob: How about you?
Bob-->>John: Jolly good!
它的效果是下图这样的。如果我们用其它工具自己绘制,那么排版就要花费很长时间。
甘特图
Mermaid 提供了甘特图用法,甘特图的语法更加简单一些。
下面是一个甘特图的示例。读者们只需看看下面的例子就能学会了,创建一个自己的甘特图,用于项目、时间、日程管理是非常实用的。
gantt
section Section
Completed :done, des1, 2014-01-06,2014-01-08
Active :active, des2, 2014-01-07, 3d
Parallel 1 : des3, after des1, 1d
Parallel 2 : des4, after des1, 1d
Parallel 3 : des5, after des3, 1d
Parallel 4 : des6, after des4, 1d
它的效果是下图这样的。
类图
Mermaid 提供了类图,这对于涉及到程序开发的用户而言,简直是太棒了。
下面是一个类图的示例。笔者觉得类图的语法有些复杂,看得有些头晕,不如 VISIO 方便。
classDiagram
Class01 <|-- AveryLongClass : Cool
<<Interface>> Class01
Class09 --> C2 : Where am I?
Class09 --* C3
Class09 --|> Class07
Class07 : equals()
Class07 : Object[] elementData
Class01 : size()
Class01 : int chimp
Class01 : int gorilla
class Class10 {
<<service>>
int id
size()
}
它的效果是下图这样的。
状态图
Mermaid 支持状态图,语法和流程图、时序图的语法类似。
下面是一个状态图的示例。
stateDiagram-v2
[*] --> Still
Still --> [*]
Still --> Moving
Moving --> Still
Moving --> Crash
Crash --> [*]
它的效果是下图这样的。
饼图
Mermaid 支持饼图,语法应该是最简单的。笔者总结一下它的语法:
? 先写上关键字 pie。
? 再定义元素,即每个标签对应一个数字,用冒号隔开标签和数字。
? 最后生成一个饼图。
下面是一个饼图的示例。
pie
"Dogs" : 386
"Cats" : 85
"Rats" : 15
它的效果是下图这样的。
用户体验旅程图
如果你喜欢写日记,那么用户体验旅程图非常适合你,它可以记录每天的事情和心情。
下面是一个用户体验旅程图的示例,语法很简单:注意缩进和冒号的使用。
journey
title My working day
section Go to work
Make tea: 5: Me
Go upstairs: 3: Me
Do work: 1: Me, Cat
section Go home
Go downstairs: 5: Me
Sit down: 3: Me
它的效果是下图这样的。
C4图
C4图是 Memarid 的一种实验图,笔者不清楚这个图的用处,但它看上去好像很牛 X。如果你知道这个图是做什么的,那么可以留言告诉我。
下面是一个 C4 图的示例。
C4Context
title System Context diagram for Internet Banking System
Enterprise_Boundary(b0, "BankBoundary0") {
Person(customerA, "Banking Customer A", "A customer of the bank, with personal bank accounts.")
Person(customerB, "Banking Customer B")
Person_Ext(customerC, "Banking Customer C", "desc")
Person(customerD, "Banking Customer D", "A customer of the bank, <br/> with personal bank accounts.")
System(SystemAA, "Internet Banking System", "Allows customers to view information about their bank accounts, and make payments.")
Enterprise_Boundary(b1, "BankBoundary") {
SystemDb_Ext(SystemE, "Mainframe Banking System", "Stores all of the core banking information about customers, accounts, transactions, etc.")
System_Boundary(b2, "BankBoundary2") {
System(SystemA, "Banking System A")
System(SystemB, "Banking System B", "A system of the bank, with personal bank accounts. next line.")
}
System_Ext(SystemC, "E-mail system", "The internal Microsoft Exchange e-mail system.")
SystemDb(SystemD, "Banking System D Database", "A system of the bank, with personal bank accounts.")
Boundary(b3, "BankBoundary3", "boundary") {
SystemQueue(SystemF, "Banking System F Queue", "A system of the bank.")
SystemQueue_Ext(SystemG, "Banking System G Queue", "A system of the bank, with personal bank accounts.")
}
}
}
BiRel(customerA, SystemAA, "Uses")
BiRel(SystemAA, SystemE, "Uses")
Rel(SystemAA, SystemC, "Sends e-mails", "SMTP")
Rel(SystemC, customerA, "Sends e-mails to")
UpdateElementStyle(customerA, $fontColor="red", $bgColor="grey", $borderColor="red")
UpdateRelStyle(customerA, SystemAA, $textColor="blue", $lineColor="blue", $offsetX="5")
UpdateRelStyle(SystemAA, SystemE, $textColor="blue", $lineColor="blue", $offsetY="-10")
UpdateRelStyle(SystemAA, SystemC, $textColor="blue", $lineColor="blue", $offsetY="-40", $offsetX="-50")
UpdateRelStyle(SystemC, customerA, $textColor="red", $lineColor="red", $offsetX="-50", $offsetY="20")
UpdateLayoutConfig($c4ShapeInRow="3", $c4BoundaryInRow="1")
它的效果是下图这样的。
写在最后
这个 Mermaid太牛了!Obsidian 的用户不需要安装 Mermaid,就可以在文档上绘制各种图形。如果您有任何关于 Mermaid 的问题,都可以留言给我,我会给大家答疑解惑。
总结一下就是这么个公式:
Obsidian=Word+Visio+Excel+Zotero。
相关推荐
- 好用的云函数!后端低代码接口开发,零基础编写API接口
-
前言在开发项目过程中,经常需要用到API接口,实现对数据库的CURD等操作。不管你是专业的PHP开发工程师,还是客户端开发工程师,或者是不懂编程但懂得数据库SQL查询,又或者是完全不太懂技术的人,通过...
- 快速上手:Windows 平台上 cURL 命令的使用方法
-
在工作流程中,为了快速验证API接口有效性,团队成员经常转向直接执行cURL命令的方法。这种做法不仅节省时间,而且促进了团队效率的提升。对于使用Windows系统的用户来说,这里有一套详细...
- 使用 Golang net/http 包:基础入门与实战
-
简介Go的net/http包是构建HTTP服务的核心库,功能强大且易于使用。它提供了基本的HTTP客户端和服务端支持,可以快速构建RESTAPI、Web应用等服务。本文将介绍ne...
- #小白接口# 使用云函数,人人都能编写和发布自己的API接口
-
你只需编写简单的云函数,就可以实现自己的业务逻辑,发布后就可以生成自己的接口给客户端调用。果创云支持对云函数进行在线接口编程,进入开放平台我的接口-在线接口编程,设计一个新接口,设计和配置好接口参...
- 极度精神分裂:我家没有墙面开关,但我虚拟出来了一系列开关
-
本内容来源于@什么值得买APP,观点仅代表作者本人|作者:iN在之前和大家说过,在iN的家里是没有墙面开关的。...
- window使用curl命令的注意事项 curl命令用法
-
cmd-使用curl命令的注意点前言最近在cmd中使用curl命令来测试restapi,发现有不少问题,这里记录一下。在cmd中使用curl命令的注意事项json不能由单引号包括起来json...
- Linux 系统curl命令使用详解 linuxctrl
-
curl是一个强大的命令行工具,用于在Linux系统中进行数据传输。它支持多种协议,包括HTTP、HTTPS、FTP等,用于下载或上传数据,执行Web请求等。curl命令的常见用法和解...
- Tornado 入门:初学者指南 tornados
-
Tornado是一个功能强大的PythonWeb框架和异步网络库。它最初是为了处理实时Web服务中的数千个同时连接而开发的。它独特的Web服务器和框架功能组合使其成为开发高性能Web...
- PHP Curl的简单使用 php curl formdata
-
本文写给刚入PHP坑不久的新手们,作为工具文档,方便用时查阅。CURL是一个非常强大的开源库,它支持很多种协议,例如,HTTP、HTTPS、FTP、TELENT等。日常开发中,我们经常会需要用到cur...
- Rust 服务器、服务和应用程序:7 Rust 中的服务器端 Web 应用简介
-
本章涵盖使用Actix提供静态网页...
- 我给 Apache 顶级项目提了个 Bug apache顶级项目有哪些
-
这篇文章记录了给Apache顶级项目-分库分表中间件ShardingSphere提交Bug的历程。说实话,这是一次比较曲折的Bug跟踪之旅。10月28日,我们在GitHub上提...
- linux文件下载、服务器交互(curl)
-
基础环境curl命令描述...
- curl简单使用 curl sh
-
1.curl--help#查看关键字2.curl-A“(添加user-agent<name>SendUser-Agent<name>toserver)”...
- 常用linux命令:curl 常用linux命令大全
-
//获取网页内容//不加任何选项使用curl时,默认会发送GET请求来获取内容到标准输出$curlhttp://www.baidu.com//输出<!DOCTYPEh...
- 三十七,Web渗透提高班之hack the box在线靶场注册及入门知识
-
一.注册hacktheboxHackTheBox是一个在线平台,允许测试您的渗透技能和代码,并与其他类似兴趣的成员交流想法和方法。它包含一些不断更新的挑战,并且模拟真实场景,其风格更倾向于CT...
- 一周热门
- 最近发表
-
- 好用的云函数!后端低代码接口开发,零基础编写API接口
- 快速上手:Windows 平台上 cURL 命令的使用方法
- 使用 Golang net/http 包:基础入门与实战
- #小白接口# 使用云函数,人人都能编写和发布自己的API接口
- 极度精神分裂:我家没有墙面开关,但我虚拟出来了一系列开关
- window使用curl命令的注意事项 curl命令用法
- Linux 系统curl命令使用详解 linuxctrl
- Tornado 入门:初学者指南 tornados
- PHP Curl的简单使用 php curl formdata
- Rust 服务器、服务和应用程序:7 Rust 中的服务器端 Web 应用简介
- 标签列表
-
- grid 设置 (58)
- 移位运算 (48)
- not specified (45)
- patch补丁 (31)
- strcat (25)
- 导航栏 (58)
- context xml (46)
- scroll (43)
- element style (30)
- dedecms模版 (53)
- vs打不开 (29)
- nmap (30)
- webgl开发 (24)
- parse (24)
- c 视频教程下载 (33)
- paddleocr (28)
- listview排序 (33)
- firebug 使用 (31)
- transactionmanager (30)
- characterencodingfilter (33)
- getmonth (34)
- commandtimeout (30)
- hibernate教程 (31)
- label换行 (33)
- curlpost (31)