1 回答
TA贡献1844条经验 获得超8个赞
D3 的 sankey 模块创建的链接是带有贝塞尔曲线的 SVG 路径。在您的示例中,浏览器的 SVG 引擎试图在非常紧凑的水平空间内创建一条曲线路径,路径非常粗(描边宽度)。例如比较以下两个 SVG(唯一的区别是笔划宽度)...
<svg style="width: 100%; height: 100%;">
<path d="M 0 50 C 25,50 25,100 50,100" style="stroke-width: 10px; fill: none; stroke: rgb(0, 0, 0); stroke-opacity: 0.2;"></path>
<g transform="translate(100,0)">
<path d="M 0 50 C 25,50 25,100 50,100" style="stroke-width: 80px; fill: none; stroke: rgb(0, 0, 0); stroke-opacity: 0.2;"></path>
</g>
</svg>
默认情况下,networkD3's sankey plot 尝试使用其容器允许的尽可能多的水平和垂直空间,在您的情况下,这会导致高度与宽度的比例低于最佳水平,这使得节点之间的水平距离相对较小,并且高度节点的数量(以及链接的厚度)相对较大。
您可以通过更改容器的大小并刷新(即调整浏览器窗口的大小,或更改容器的 HTML/CSS 属性)或通过指定宽度和高度来“修复”此问题,以便该比例适用于您的数据有,例如...
sankeyNetwork(
Links = links,
Nodes = nodes,
Source = "source",
Target = "target",
Value = "count",
NodeID = "name",
iterations = 0,
sinksRight = FALSE,
height = 250,
width = 1000
)
添加回答
举报