
可视化冠状病毒 COVID-19 全球病例
使用时间序列动画气泡图
我在这里收集了资源来帮助您进行可视化。 观看 2020 年 3 月 26 日在线网络研讨会的视频,阅读我选择这些分析的原因,访问数据或JMP 实时报告,试试我附加的脚本,和/或使用数据尝试做你自己的分析。
在传达有关冠状病毒 COVID-19 传播数据的持续努力中,有很多更新。 我在最新版本中包含了一些查看全局摘要和本地摘要的图形生成器图。 气泡图还增加了颜色以表示计数的日常变化。 有一个选项卡框可以在图形中的对数和线性刻度之间切换,在局部计数图中,线性刻度图具有一个分裂轴图,可以同时显示较低和较高计数区域。
在此处查看 HTML 版本JMP 实时页面。
前言:
- 冠状病毒及其传播引起的所有问题都很严重,影响了很多人,其中一些人的影响非常可怕。 我无意通过创造这个数字来贬低这件事的严重性。 我的目标也不是促进歇斯底里或仇外心理。
- 在我的脚本中,我重新编码了原作者使用的位置名称。 我没有政治议程。 当我使用谷歌地图 API 进行地理编码时,我需要它为我提供国家/地区位置。 Taiwan, Taiwan 会导致餐厅位置,而 Taiwan, China 会导致台湾中心附近的地理编码。 同样,这不是政治性的,而是功能性的。
- 围绕冠状病毒报告和检测的所有数据都存在巨大争议。 我不保证这些数据的准确性;然而,这是我所知道的公开可用数据(英文)的最佳集合。 如果你有更好的东西,请告诉我。
- 这不是我的数据。 约翰霍普金斯大学怀廷工程学院系统科学与工程中心的人们发布了一个漂亮的仪表板以及数据。 非常感谢这个团队提供他们的数据。阅读他们的博客一定要看看他们的可视化。
他们还设立了一个包含原始数据的 GitHub 页面以易于访问的格式。 (荣誉 x 10^6)。
为什么在时间序列动画中使用气泡图?
气泡图具有很高的实用性,因为可以在单个图中表示大量维度。 通过添加时间序列动画,这些维度之间关系的变化可以被可视化和传达,而无需观众进行大量复杂的预先注意处理。 (又名:它们看起来很酷而且很容易理解)
请注意,我说过气泡图对于查看多种的随时间动画的尺寸,而不仅仅是一随时间变化的尺寸(变量)动画。 我见过人们制作一个类似运行/控制图的图,在 X 轴上有一个维度,在 Y 轴上有时间,然后按时间制作动画。 这称为繁琐的运行/控制图,请不要这样做。
对于我要在这里构建的图形。 X 和 Y 轴采用测地线比例,因此这些点将与地图对齐。 我们可以看到图形上点的空间关系,这些点由背景地图形状赋予上下文。 接下来,我为标记添加了一个大小维度,这是每个位置按时间段的累计病例数。 最后,我使用时间段序列来制作动画,这会导致气泡随着时间的推移而增长或出现。 每个点都标有国家和地区。 在此图中,可以将所有单独的点折叠到它们的国家 ID 中,或者将它们拆分到国家 ID 中的区域 ID 中。
生成图形的脚本正在追逐移动目标。 数据的作者不断进行更改,因此如果源数据发生更改,这可能只适用几天。 截至 2/12/2020 上午,它有效。 脚本末尾有一个用于在 JMP Live 中发布或刷新图形的选项。 这对你不起作用,因为你没有我的绝密 API 密钥来访问 JMP Live 中的包。 如果您有 JMP Live,它可能有助于作为发布和刷新如何工作的示例。
脚本如何工作。
- 设置我稍后在脚本中需要的所有变量
- 下载数据并格式化
- 这部分有一些奇怪的东西。 在几个点上,我将数据保存在本地,关闭表格然后重新打开它。 我在强制脚本按顺序运行时遇到了麻烦,这是实现它的一种方法。 有时,在下一步开始之前,一个表还没有完成更新,我得到了不稳定的表。这种蛮力的方法很符合我的性格和作风。
- 生成气泡图
- 弄清楚是否需要发布或刷新,然后发布或刷新图形
在查看脚本时,您可能会注意到我用表达式包裹了部分。 当它与代码折叠选项(检查脚本编辑器的首选项)结合使用时,这是一种整理长脚本的便捷方法。
20 年 3 月 26 日更新
本周早些时候,我使用的数据集已被弃用。 今天早上,已弃用的数据已移至另一个位置。 不用说这个项目确实是一个移动的目标! Johns Hopkins CSSE 有另一个数据 GitHub 存储库,每天更新数据。 下面的新脚本“编译 COVID-19 时间序列数据”将检查存储库中有哪些文件,然后下载并组装它们。 这个数据集有一些有趣的“特征”。 我使用重新编码来解决其中的许多问题,并使用一些创造性的公式来解决其余问题。
一些问题和解决方案
- 每个站点的位置不一致,所以我使用了最新的位置并在其他地方替换了它。
-累计计数应该增加或保持不变。 当累计计数减少时,使用前一天的值。 这可以防止从累积计数中得出的每日计数中出现负数。
- 表中的列名称随着时间的推移不一致。 标签统一为 3/24/20 表列名。
- 某些位置名称中存在一些拼写错误和尾随/前导空格。 重新编码解决了这些问题。
- 位置按每个位置的确认计数总和按价值排序和颜色排序。
- 决赛桌不包含任何公式。 可以在不影响排序相关计算的情况下对表进行排序。
20 年 4 月 3 日更新
我今天更新了脚本。 请注意,它需要大约一分钟或更长时间才能运行。 清理脚本中发生了很多事情,一些公式需要一点时间才能完成。
此版本在末尾包含一个部分,该部分删除了重复的行以及其他一些调整
用于制作累积计数与按天计数气泡图的新列公式。 这些是位置列的移动平均值,而不是 5 或 7 天的平均值。 移动平均线给了我更多的工作点。
为图表提供信息的有用文章:
•关于在时间序列中绘制什么的注释,尤其是气泡图。 请注意,累积计数会使气泡不断增加,但按天计数会显示热点。(乔尔·塞拉尼基奥)
• https://www.futurehealth.live/blog/2020/2/17/all-the-coronavirus-maps-are-wrong
• https://www.futurehealth.live/blog/2020/2/10/coronavirus-dataviz-sucks
•使用地图和地图形状的注意事项。 (肯尼斯菲尔德)
• https://www.esri.com/arcgis-blog/products/product/mapping/mapping-coronavirus-responsibly/
•关于滞后指标和不同轴标度数据的说明。 (冯凯撒)
• https://junkcharts.typepad.com/numbersruleyourworld/2020/03/how-to-act-like-a-data-scientist-8-dont-use-lagging-indicators-to-forecast.html
@凯文B旧的拆分轴技巧。 将您的变量放在 x 轴上,然后再将它放在第一个变量的右侧或左侧。 简单吧?但很难理清,因为头脑正常的人会把同一个变量放在同一个轴上两次。 一个轴获得范围的低端,另一个获得范围的高端。
例如,左侧为 0 至 60 分钟,右侧为 1-24 小时。 然后,如果你想变得疯狂,在第三个 x 轴上的第 2 天到第 10 天。
@bfoulkes老实说,这就是我所能想到的,所以我很高兴看到你能用它做什么。 也许是时候举办活动了?或受影响地区在高增长和高原之间的时间......
这个脚本非常棒,可以跟踪进度并跟上受影响的区域。感谢您向我们展示如何做到这一点。
这个项目有点像在追逐一个移动的目标。 数据的作者不断移动它。
我更新了剧本(是的,在情人节那天,但在我等待怪物烤宽面条完成烘烤的时候。)
现在数据拉取更简单了,每个类别都在自己的选项卡框中,而不是数据筛选框。
还有一个点的问题没有出现在气泡图上,这也已修复。
提供一个有用(而且很酷)的脚本来跟上这场全球公共卫生悲剧的真正有趣和好方法,拜伦@Byron_JMP .它非常有用,以至于 JMP 可以处理时间序列数据。
我打算将代码复制到 .jsl 文件中,但注意到涉及一些自定义。例如,您指向您的 JMP Live 账户。你能更新脚本,让它更通用一点吗?并且,感谢您链接到包含原始数据的 GitHub 页面这样我就可以尝试自己在 JMP 中查看新数据。