我希望在“时间线图”中看到数据库中事件的时间线,它看起来应该像这样:
我编写了一个小型 C# 程序,将其绘制到位图上,但这不是可行的方法。
我有包含 3 个字段的输入数据:
StartX EndX Y
2596 15008 1
5438 6783 2
5450 5453 4
5456 5459 4
5462 5466 4
5470 5474 4
5477 5657 5
5662 5665 4
5668 5671 4
如图所示,对于每条线,我希望有一条从StartX
到 的线EndX
,Y 值为Y
。堆积条形图几乎解决了我的问题,但我不想要在图表上为每一行添加一条新线,我有数千行,我想将 X 轴作为时间轴,并查看哪些事件(Y 是事件的类型)同时发生。我用一个简单的 C# 程序生成的图像(见上文)显示 SYSTEM 事件始终处于活动状态,TECH 和 BREAK 事件几乎互斥,但有一些重叠。
我至少想知道我应该采取的正确方向;我在众多的 Excel 图表类型中迷失了方向。
答案1
我发现实现此目的的唯一方法是使用堆叠条形图,其中实际事件之间的空白时间是设置为空白填充的一系列。此方法还需要辅助列来帮助提供堆叠条形图所需的数据。此方法需要一个行数与 Y 值一样多的表。这使得它变得困难,因为每行都有新行的要求似乎表明您希望将数据保留为其当前使用的格式。
其他想法:您是否考虑过在 c# 程序中添加一个图表组件,而不是尝试强制 Excel 制作图表?Microsoft 的 Chart Control 是 Dundas 的克隆版,并且是免费的。
答案2
像 Grantt 图表这样的时间线图表在原生 Excel 中很难制作,但如果您熟悉 C# 等编程语言,则可以使用 javascript 轻松制作图表。此语言附带许多不同的数据可视化库,为您的图表提供许多功能。
我使用 javascript 制作了这个图表,其中包含了您在问题中上传的数据:
https://www.funfun.io/1/#/edit/5a5732ea8dfd67466879ebbb
我使用 Json 文件从嵌入的电子表格中获取信息,如下所示:
{ "data": "=A1:C10" }
获取数据后,我用 javascript 图表库创建图表,这里我使用了Google 图表。
创建时间线图表后,你可以直接将 URL 粘贴到Funfun 插件。它看起来是这样的:
此插件使在 Excel 中创建复杂图表变得更加容易。希望对您有所帮助。
披露:我是 Funfun 的开发人员。