大多数组织在电子表格中存储大量数据。当然,电子表格程序非常擅长从纯数字数据创建图表。但如果你的数据不仅仅是数字呢?
也许你在电子表格或数据库中跟踪供应链 - 这最好以流程图的形式呈现。或者你有员工信息,想要格式化为组织结构图。
插入CSV数据并自动创建绘图
Hello World - 简单的CSV流程图
当你将以下文本粘贴到插入 > CSV对话框中时,你会看到一个包含五个形状的非常简单的流程图。
## Hello World
# label: %step%
# style: shape=%shape%;fillColor=%fill%;strokeColor=%stroke%;
# namespace: csvimport-
# connect:
# width: auto
# height: auto
# padding: 15
# ignore: id,shape,fill,stroke,refs
# nodespacing: 40
# levelspacing: 100
# edgespacing: 40
# layout: auto
## CSV starts under this line
id,step,fill,stroke,shape,refs
1,Hello World,#dae8fc,#6c8ebf,rectangle,
2,Am I alive?,#fff2cc,#d6b656,rhombus,1
3,Yes,#d5e8d4,#82b366,ellipse,2
4,No,#f8cecc,#b85450,ellipse,2
5,,#fff2cc,#d6b656,mxgraph.basic.smiley,3
顶部的配置部分
实际CSV数据上方的顶部(较大)部分是配置 - 你需要指定形状、标签和连接器样式、形状如何连接以及图表的布局。配置中的每一行都必须以井号(#
)开头。
提示: 以两个井号(##
)开头的行会被忽略,非常适合编写解释性注释。
逐步了解配置,最重要的定义如下:
- 此示例中每个形状的
label
是'step'列中的条目,此变量由围绕它的百分号表示:%step%
style
定义包括形状(由CSV数据中的'shape'列指定)、设置形状的圆角、使用CSV数据中'fill'和'stroke'列定义的填充和边框颜色- 配置中的
connect
行定义哪些形状连接到其他形状(从'refs'列到'id'列)、连接器方向是否反转以及连接器和箭头的样式 node-
、level-
和edgespacing
行表示图表中形状(和级别)之间的距离- 最后,
layout
表示图表的实际布局。这遵循与排列 > 布局
相同的自动布局
注意: 你可以用斜杠分解长样式配置(在大括号内),但确保下一行 - 续行 - 以井号(#
)字符开头!
底部的CSV数据
在示例底部,你会看到几行不以井号(#
)开头的内容。这是逗号分隔(CSV)数据。每行是图表中的一个形状。CSV数据的第一行是列"标题" - 它们在配置部分中用作变量名,不会在图表中显示。
样式和格式选项
形状、连接器和标签都可以有不同的样式 - 背景、渐变、圆角、虚线边框、箭头样式、不同字体等。在CSV数据上方的配置部分中有大量选项来设置图表组件的样式。请参考以下文章了解更多信息:
使用AWS的习惯跟踪应用基础设施图表
一个稍微复杂的示例,说明如何使用更复杂的形状,是使用Amazon Web Services的习惯跟踪应用的基础设施。
它被设计为一个非常简单的无服务器Web应用,使用标准AWS组件,所有这些组件都可以在AWS形状库中找到。
有一些额外的样式设置,比如将形状标签移到形状下方并使用无箭头的虚线连接器。
AWS diagram
# label: %component%
# style: shape=%shape%;fillColor=%fill%;strokeColor=%stroke%;verticalLabelPosition=bottom;aspect=fixed;
# namespace: csvimport-
# connect: {"from":"refs", "to":"id", "invert":true, "style": \
# "curved=0;endArrow=none;endFill=0;dashed=1;strokeColor=#6c8ebf;"}
# width: 80
# height: 80
# ignore: id,shape,fill,stroke,refs
# nodespacing: 40
# levelspacing: 40
# edgespacing: 40
# layout: horizontaltree
## CSV data starts below this line
id,component,fill,stroke,shape,refs
1,Habit Tracker HTML App,#ffe6cc,#d79b00,mxgraph.aws4.mobile,
2,UI Assets,#277116,#ffffff,mxgraph.aws4.s3,1
3,User Authentication,#C7131F,#ffffff,mxgraph.aws4.cognito,1
4,API Gateway,#5A30B5,#ffffff,mxgraph.aws4.api_gateway,1
5,AWS Lambda,#277116,none,mxgraph.aws4.lambda_function,4
6,Database,#3334B9,#ffffff,mxgraph.aws4.dynamodb,5
在CSV中使用什么形状名称?
可以查看任意图形的样式获取图形的名称:
从CSV数据创建习惯跟踪应用用例图
为了使其更复杂一些,下一个示例重新创建了早期文章中的习惯跟踪应用UML用例图。它有三种不同的连接器类型 - 一种从用户到操作,然后是各种用例之间的includes
和extends
关系。
这些不同的连接在CSV数据中都在各自的列中表示,并且每种连接类型都有三种不同的样式。
注意: 由于布局是自动计算的,它将是可读的,但对于这样的图表不一定是最合理的 - 用户和教练角色最好位于图表的两侧。
下面是三种不同连接器的配置代码,然后是几行CSV数据,这样你就可以看到这个示例是如何构建的。有关完整代码,请在打开示例图表并展开用例图下方的容器形状。
## Habit Tracker UML use case diagram - connector styles
# connect:
# connect: {"from":"includes", "to":"id", "label":"includes", "style": \
# "curved=0;endArrow=blockThin;endFill=1;dashed=1;"}
# connect: {"from":"extends", "to":"id", "label":"extends", "style": \
# "curved=0;endArrow=blockThin;endFill=1;dashed=1;"}
## Partial CSV data for the Habit Tracker UML use case diagram example
id,action,fill,stroke,shape,includes,extends,refs
1,User,#dae8fc,#6c8ebf,umlActor,,,"3,4,5,6,7"
2,Coach,#dae8fc,#6c8ebf,umlActor,,,"10,6,7,12"
3,Add a habit,#dae8fc,#6c8ebf,ellipse,9,,
6,List habits,#dae8fc,#6c8ebf,ellipse,,,
7,View habit history,#dae8fc,#6c8ebf,ellipse,,8,
10,Add a comment,#dae8fc,#6c8ebf,ellipse,9,5,
复杂示例 - 从CSV数据创建供应链图表
这是汽车中一个组件 - 变速器的部分供应链。汽车有数十万个零件和数百个这些零件的供应商。许多公司出于安全(和保险)原因需要能够将供应链追溯到原材料供应商。
在此示例中,图表中每种类型的供应商或组件都有不同的形状和样式,所有这些都在配置部分中定义。
通过将形状颜色移到配置部分的样式定义中,CSV变得更加简洁。 以下是此示例中的几行:
## Partial CSV data for the Supply Chain example
id,name,supplier,shapeType
mb,Mine B,,raw
w1,Well 1,,well
fc,Foundry C,"ma,md",foundry
o1,Oil and Gas 1,w2,raw
man5,Manufacturer 5,ca,manufacturer
ca,Chemicals A,o3,chemicals
eb,Electronics B,cc,electronics
a1,Assembly 1,"3,4,5",assembly
1,gearbox housing,fb,component
更多CSV数据和配置的基本示例
我们在配置注释中为每一行添加了许多基本的CSV数据示例和详细说明 - 请访问我们的GitHub存储库查看每个图表的文本文件。