彩票走势图

JavaScript图表工具FusionCharts入门教程(41):如何创建Sankey流程图

翻译|使用教程|编辑:杨鹏连|2021-01-05 10:56:00.513|阅读 149 次

概述:Sankey图是一种流程图,描述了从一个节点到另一个节点的资源(材料,能源,成本等)流。每个流的起点和终点称为节点,它们之间的流路径称为链接。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

FusionCharts Suite XT是全面的跨平台、跨浏览器JavaScript图表套包,其中包括FusionCharts XTPowerCharts XT 、FusionWidgets XTFusionMaps XT。支持 ASP、 ASP.NET、 PHP、 JSP、 ColdFusion、 Ruby on Rails、 JavaScript、甚至简单的HTML页面。它是你值得信赖的JavaScript图表解决方案,目前在全球有45万用户选择Fusioncharts来制作专业的JavaScript图表。

点击下载FusionCharts最新版

Sankey图是一种流程图,描述了从一个节点到另一个节点的资源(材料,能源,成本等)流。每个流的起点和终点称为节点,它们之间的流路径称为链接。一对节点之间只能有一个链接。每对节点之间的流的值由链接的宽度编码。链接的颜色有助于与它们各自的节点建立视觉映射。

要创建sankey图,请遵循以下步骤:

  • 在JSON数据中,以"<attributeName>": "<value>"格式设置属性及其对应的值。
  • 使用type属性指定图表类型。要渲染sankey图,请设置sankey。
  • 使用renderAt属性设置容器对象。
  • 使用width和height属性指定图表的尺寸。
  • 使用dataFormat属性设置要传递给图表对象的数据类型(JSON / XML)。
有关属性的详细列表,请参考sankey图的图表属性页面。

可以以水平布局(默认)或垂直布局绘制Sankey图。带有水平方向的Sankey图如下所示:

上面提供的Sankey图中有19个节点。链接连接彼此相关的任何两个节点(即,在它们之间发生流)。如果将鼠标悬停在节点上,将看到与该节点关联的所有链接(或关系)。悬停在链接上将显示两个都是与之关联的节点。

重要概念相关的热平衡图

Sankey图可用于表示流数据。使用连接链接从一个节点流到另一个节点。整个图中不应重复任何节点,并且一对连接节点之间最多应有一个链接。

下面简要介绍一些关键概念:

节点

节点是流程图中的关键关头。每个节点可以具有流资源的流入和流出。在我们的Sankey图中,它们当前由矩形表示。可以进行大量的自定义,包括大小,颜色,标签,填充等。

每个节点在Sankey图中应该只出现一次。

要自定义节点,请定义“ nodes”对象并为每个节点指定参数label。

链接

链接是连接节点的路径。他们为流程指明方向。它们本质上是流体,并根据它们所连接的节点进行成形(或弯曲)。每个链接都应该知道它的源节点和宿节点。流值由链接的宽度编码。可以根据颜色,曲率和值定制它们。

如果链接没有“从”和“到”节点,则不会绘制该链接。

一对节点之间应该有最大的链接。

流量值

Sankey图中的每个链接表示从源节点到目标节点的流。对于水平Sankey图,流向是从左到右,对于垂直图,流向是从上到下。每个链接的粗细取决于从源节点到宿节点的流量。累积流量值可以显示在节点上。

流量值link通过value参数在对象内部定义。

突出特点

方向

Sankey图的方向可以是水平或垂直。为此,请将orientation属性的值分别设置为horizontal或vertical。默认情况下,它设置为horizontal。

使用下面给出的代码:

{
  "chart": {
    "orientation": "vertical";
  }
}
该图表如下图所示:

无节点Sankey

如果在Sankey Diagram中将nodeWidth属性的值设置为对象0下的chart,则不会渲染节点。结果图表仅显示链接,称为“无节点Sankey”。

使用下面给出的代码:

{
  "chart": {
    "nodeWidth": "0";
  }
}
该图表如下图所示:

混合模式

Sankey图支持blend链接颜色的模式。要应用此模式,需要将linkColor属性的值设置为blend。当您这样做时,由源节点和目标节点的颜色组合而成的渐变将应用于链接。您可以在chart对象下提及这一点,以将混合模式应用于图表中的每个链接。否则,您可以在links对象下提及它,以将其应用于特定链接。

使用下面给出的代码:

{
  "chart": {
    "linkColor": "blend";
  }
}
拖动

您可以在垂直方向上将Sankey图中的节点拖动到水平Sankey,在水平方向上拖动以垂直Sankey。默认情况下,Sankey图启用了拖动功能。要禁用拖动,请将enableDrag属性的值设置为0。

使用下面给出的代码:

{
    "chart": {
        "enableDrag": "0"
    }
}
链接曲率

您可以设置呈现图表中链接的角度。要做到这一点,该值设置linkCurvature属性0,1或它们之间的任何十进制值。请注意,如果将值设置为0,则链接将呈现为直线,如果将其设置为1,则将以最大可能的曲率呈现。

您可以在图表中全局设置所有链接的曲率。为此,linkCurvature如上所述设置属性的值,并将其包括在chart对象中。但是,如果要设置单个链接的曲率,请curvature如上所述设置属性的值,并将其包括在该links特定链接的对象内。

如果同时全局(在chart对象下)和局部(在link对象下)设置链接的曲率,则局部值将覆盖全局值。

请参阅下面给出的代码:

{
    "chart": {
        "linkCurvature": "0"
    }
}
该图表如下图所示:

自定义Sankey图

在以下各节中,您将在Sankey Diagram中看到用于自定义节点和链接的选项。

节点定制
设置节点宽度

您可以设置图表上节点的宽度。为此,请将nodeWidth属性的值设置为所需的值。
使用下面给出的代码:

{
  "chart": {
    "nodeWidth": "5";
  }
}

位置节点标签

您可以将节点标签放置在节点的开头,结尾或内部。为此,请将nodeLabelPosition属性的值设置为以下之一:

  • 将其设置为start,将其放置在节点的左侧。
  • 将其设置为right,以将其放置在节点的右侧。
默认情况下,nodeLabelPosition的值设置为end。

仅当showNodeLabelsvalue属性的值设置为时,才能放置Sankey图的节点标签1。此属性的默认值为1。
使用下面给出的代码:

{
    "chart": {
        "nodeLabelPosition": "right"
    }
}
隐藏节点标签

如果节点的标签在Sankey图表中造成混乱,则FusionCharts允许您隐藏图表中的所有标签。为此,请将showNodeLabels属性设置为0。

请参考下面的代码:

{
    "chart": {
        "showNodeLabels": "0"
    }
}
要隐藏节点的特定标签,请将showLabelattribute的值设置为0。showLabel应在nodes数组内部调用该属性。

请参考下面的代码:

{
    "chart": { },
    "nodes": [{
        "label": "Netherlands",
        "showLabel": "0" //Disable Label of a particular node
    }]
}
显示节点值

要在图表中显示节点值,请将showNodeValues属性的值设置为1。默认情况下,其值设置为0。

使用下面给出的代码:

{
    "chart": {
        "showNodeValues": "1"
    }
}

旋转节点标签

您可以将节点标签旋转到垂直位置,而不是默认的水平位置。为此,请将rotateNodeLabels属性的值设置为1。默认情况下,其值设置为0。

使用下面给出的代码:

{
    "chart": {
        "rotateNodeLabels": "1"
    }
}
设置节点之间的填充

您可以在连续的节点之间添加空格,以使图表看起来不太混乱。它将增加水平Sankey中两个连续节点之间的垂直空间,以及垂直Sankey中两个节点之间的水平空间。

您可以在连续的节点之间添加空格,以使图表看起来不太混乱。为此,请将nodeSpacing属性的值设置为所需的值

使用下面给出的代码:

{
    "chart": {
        "nodeSpacing": "10"
    }
}

配置节点松弛

您可以将Sankey Diagram中的节点拖离其他节点,以引起注意。在水平Sankey图中,您可以在垂直方向上拖动节点。在垂直Sankey图中,您可以在水平方向上拖动节点。默认情况下,Sankey图将重新定位节点,并在必要时在节点之间引入一些空间,以避免重叠。此行为由nodeRelaxation属性控制。默认情况下,该属性的值设置为1。

您可以通过将nodeRelaxation属性的值设置为来禁用此行为0。

使用下面给出的代码:

{
    "chart": {
        "nodeRelaxation": "0"
    }
}
该图表如下图所示:

节点化妆品

您可以将以下定制应用于节点的外观。

定义nodes数组以指定各个节点级别的节点修饰符。

设置节点颜色

您可以跨Sankey图设置所有节点的颜色。为此,请将nodeColor属性的值设置为所需颜色的十六进制值,并将其包括在chart对象中。但是,如果要设置单个节点的颜色,则将color属性的值设置为所需颜色的十六进制代码,并将其包括在该nodes特定节点的对象内。

如果同时全局(在chart对象下)和局部(在node对象下)设置节点的颜色,则局部值将覆盖全局值。

请参阅下面给出的代码:

{
    "chart": {
        "nodeColor": "#FFA816" //Applied to all the nodes in the diagram
    },
    "nodes": [{
        "label": "China",
        "color": "#ff0000" //Applied only to node of China
    }]
}
设置节点透明度

您可以在图表中全局设置所有节点的透明度。为此,请将nodeAlpha属性的值设置在0(透明)和100(不透明)之间,并将其包含在chart对象中。另一方面,如果要设置单个节点的透明度,请alpha在0(透明)和100(不透明)之间设置属性的值,并将其包括在该nodes特定节点的对象内。

注意:如果同时在全局(在chart对象下)和本地(在node对象下)设置节点的透明度,则局部值将覆盖全局值。

请参阅下面给出的代码:

{
    "chart": {
        "nodeAlpha": "50" //Applied to all the nodes in the diagram
    },
    "nodes": [{
        "label": "China",
        "alpha": "100" //Applied only to node of China
    }]
}
节点标签设置

您可以对节点标签应用一系列修饰。它们在下面列出:

  • 使用nodeLabelFont属性设置节点标签文本的字体。
  • 使用nodeLabelFontColor属性设置节点标签文本的颜色。
  • 使用属性设置节点标签的透明度(介于0透明和100不透明之间)nodeLabelAlpha。
  • 使用nodeLabelBgColor属性设置节点标签的背景色。
  • 使用nodeLabelBorderColor属性设置节点标签的边框颜色。
  • 使用nodeLabelBorderColor属性设置节点标签的边框厚度。
  • 使用该nodeLabelFontSize属性设置节点标签文本的字体大小。
  • 使用该nodeLabelFontBold属性将节点标签文本的字体样式设置为粗体。
  • 使用该nodeLabelFontItalic属性将节点标签文本的字体样式设置为斜体。
  • 使用nodeLabelBorderRadius属性设置节点标签的边界半径。
  • 使用nodeLabelBorderPadding属性设置节点标签边框和节点标签之间的间隔。
  • 使用该nodeLabelBorderDashed属性将节点标签边框样式设置为虚线。
  • 使用该nodeLabelBorderDashLen属性设置节点标签边框破折号的长度。请注意,仅当将该nodeLabelBorderDashed属性应用于节点时,此属性才有效。
  • 使用该nodeLabelBorderDashGap属性设置节点标签边框破折号之间的间隙长度。请注意,仅当将该nodeLabelBorderDashed属性应用于节点时,此属性才有效。
  • 设置标签以使用inheritLabelColorFromNode属性从节点继承其颜色。
使用下面给出的代码将上面列出的自定义应用于图表:
{
    "chart": {
        "nodeLabelFont": "Arial",
        "nodeLabelFontColor": "#000fff",
        "nodeLabelAlpha": "50",
        "nodeLabelBgColor": "#ff0000",
        "nodeLabelBorderColor": "#000000",
        "nodeLabelFontSize": "13",
        "nodeLabelFontBold": "1",
        "nodeLabelFontItalic": "1",
        "nodeLabelBorderRadius": "5",
        "nodeLabelBorderPadding": "5",
        "nodeLabelBorderDashed": "1",
        "nodeLabelBorderDashLen": "3",
        "nodeLabelBorderDashGap": "2",
        "inheritLabelColorFromNode": "1"
    }
}
链接自定义

直链Sankey

FusionCharts允许您向Sankey图添加直接链接,而不是默认链接。为此,请将linkCurvatureattribute的值设置为0。

该linkCurvature属性的默认值为1。

请参考下面的代码:

{
    "chart": {
        "linkCurvature": "0"
    }
}
设置节点和链接之间的填充

您可以在节点和链接之间添加空格,以使图表看起来不太混乱。为此,nodeLinkPadding以像素为单位设置值。

请参考下面的代码:

{
    "chart": {
        "nodeLinkPadding": "20"
    }
}

设置链接颜色

您可以使用linkColor属性来自定义链接的颜色。将其值设置为以下选项之一:

  • 对其进行设置,source以使链接继承其源节点或该from节点的颜色。
  • 对其进行设置,target以使链接从目标节点或该to节点继承其颜色。
  • 设置它可以blend组合链接的源节点和目标节点的颜色,并将其作为渐变应用于链接。
  • 将其设置为颜色的十六进制值,以将该颜色应用于链接。
您可以全局设置所有链接的颜色。为此,请将linkColor属性的值设置为上述选项之一,并将其包括在chart对象中。但是,如果要设置单个链接的颜色,请将color属性的值设置为上面给出的选项之一,并将其包括在该links特定链接的对象内。

如果同时全局(在chart对象下)和本地(在link对象下)设置链接的颜色,则本地值将覆盖全局值。

请参阅下面给出的代码:

{
    "chart": {
        "linkColor": "#FFA817"
    },
    "links": [
        {
          "from": "Germany",
          "to": "European Union",
          "value": 1468990,
          "color": "#ff0000"
        }
    ]
}
设置链接透明度

您可以全局设置图表中所有链接的透明度。为此,请将linkAlpha属性的值设置在0(透明)和100(不透明)之间,并将其包含在chart对象中。但是,如果要设置单个链接的透明度,请alpha在0(透明)和100(不透明)之间设置属性的值,并将其包括在该link特定链接的对象内。

如果同时设置全局(在chart对象下)和本地(在link对象下)的链接的透明度,则本地值将覆盖全局值。

请参阅下面给出的代码:

{
    "chart": {
        "linkAlpha": "20"
    },
    "links": [
        {
          "from": "Germany",
          "to": "European Union",
          "value": 1468990,
          "alpha": "100"
        }
    ]
}
自定义工具提示

您可以自定义节点和链接的工具提示,以在用户将鼠标悬停在节点或链接上时显示更多上下文信息。要做到这一点,你可以使用plotToolText,linkToolText或者toolText属性与一些支持宏一起。

使用 plotToolText

该plotToolText属性在全局级别起作用,它为图表中的所有节点定义了一个工具提示模板。对于价值plotToolText属性是由宏的模板,模板也可以包含纯文本和喜欢各种内嵌HTML标签br,strong,em,和b。

对于热平衡图,plotToolText支持以下宏$label,$nodeValue,$nodeDataValue,$plotFillColor,$plotFillAlpha,和$plotIdentifier。有关宏的更多信息,请参见“宏列表”。

请参考下面的代码:

{
    "chart": {
        "plotToolText": '$plotfillcolor $label'
    }
}
使用 linkToolText

该linkToolText属性在全局级别起作用,它为图表中的所有链接定义了一个工具提示模板。对于价值linkToolText属性是由宏的模板,模板也可以包含纯文本和喜欢各种内嵌HTML标签br,strong,em,和b。

对于热平衡图,linkToolText支持以下宏$from,$to,$linkValue,$linkDataValue,$fromPlotIdentifier,$toPlotIdentifier,和$flowDirection。有关宏的更多信息,请参见“宏列表”。

请参考下面的代码:

{
    "chart": {
        "linkToolText": '$from To $to $linkValue'
    }
}
使用 toolText

该toolText属性在链接和节点的本地级别起作用,它为图表中的各个链接或节点定义了一个工具提示模板。对于价值toolText属性是由宏的模板,模板也可以包含纯文本和喜欢各种内嵌HTML标签br,strong,em,和b。

当使用toolText中的节点,它使用下面的宏:$label,$nodeValue,$nodeDataValue,$plotFillColor,$plotFillAlpha。有关宏的更多信息,请参见“宏列表”。

请参考下面的代码:

{
    "nodes": [{
        "plotToolText": '$label exports $nodeDataValue'
    }]
}
当使用toolText中的链接,它使用下面的宏:$from,$to,$linkValue,$linkDataValue,$fromPlotIdentifier,$toPlotIdentifier,和$flowDirection。有关宏的更多信息,请参见“宏列表”。

请参考下面的代码:

{
    "links": [{
         "toolText": 'From: $from To: $to $linkValue'
    }]
}


想要购买FusionCharts Suite XT正版授权,或了解更多产品信息请点击


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn

文章转载自:

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
相关产品
FusionCharts Suite XT

全面的跨平台、跨浏览器JavaScript图表解决方案套包,拥有100+图表和2000+地图

FusionCharts XT

50万用户首选的跨平台、跨浏览器的JavaScript/HTML图表解决方案

FusionWidgets XT

FusionWidgets XT操作简单,提供各种实时图表、金融图表、支持图表自动更新

PowerCharts XT

适用于专业领域的高级图表控件

FusionMaps XT

功能强大的JavaScript (HTML5)地图工具,可以根据内容、地区来展现及描绘地理数据或者其它实体。

扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP