如何创建我的数据的地铁地图可视化

2024-03-04

在一篇论文中找到了下面漂亮的图(http://www.ncbi.nlm.nih.gov/pubmed/25626705 http://www.ncbi.nlm.nih.gov/pubmed/25626705)。它直观地展示了不同实验室的工作流程,并很好地说明了它们的分歧之处。可以看到这对于许多其他数据集很有用。

是否有一种工具可以帮助从一组数据创建此类地图(即避免我必须从头开始在绘图应用程序中绘制它)?

我可以在ggplot2中做这样的事情吗?


这是我对公交车站地图的建议(最后有图表作为附件):

library(ggplot2)

# DF
datos <- data.frame(origen=c(rep("Ruta 126", 7), rep("Ruta 131", 6), rep("Ruta 132", 6)), 
                destino=c("San José", "Jericó", "Guadarrama", "San Juan Norte", "San Juan Sur", "Río Conejo", "Loma Larga",
                          "Cartago", "Copalchí", "El Alumbre", "San Juan Norte", "San Juan Sur", "Loma Larga",
                          "San Juan Norte", "Calle Valverde", "Calle Abarca", "San Juan Sur", "Río Conejo", "Loma Larga"),
                subsidio=c("","-345","-135","-400","-325","-155","400", "", "230", "255", "515", "530", "2150", rep("",6)))

# Levels to factor
datos$destino <- factor(datos$destino, levels = c("San José", "Cartago","Jericó", "Copalchí", "Guadarrama", "El Alumbre", "San Juan Norte",  "Calle Valverde", "Calle Abarca", "San Juan Sur", "Río Conejo", "Loma Larga"))
datos$origen <- factor(datos$origen, levels = c("Ruta 126", "Ruta 132", "Ruta 131"))

# Groups for geom_text
etiqueta1 <- c("San José", "Cartago","Jericó", "Copalchí", "Guadarrama", "El Alumbre", "Calle Valverde", "Calle Abarca", "Río Conejo")
etiqueta2 <- c("San Juan Norte", "San Juan Sur", "Loma Larga")

# group for geom_label
text1 <- c("-345","-135","-400","-325","-155","400")
text2 <- c("230", "255", "515", "530", "2150")

# Plot
ggplot(datos, aes(destino, origen, group=origen)) +
  geom_line(size=10, aes(color=origen)) +
  geom_segment(aes(x=7, xend=7, y= 1, yend=3), size=1, color="grey20", linetype=3) +
  geom_segment(aes(x=10, xend=10, y= 1, yend=3), size=1, color="grey20", linetype=3) +
  geom_segment(aes(x=12, xend=12, y= 1, yend=3), size=1, color="grey20", linetype=3) +
  geom_segment(aes(x=11, xend=11, y= 1, yend=2), size=1, color="grey20", linetype=3) +
  geom_point(size=6) +
  scale_color_manual("", values = c("steelblue3", "tomato2", "forestgreen")) +
  geom_text(data= subset(datos, destino %in% etiqueta1), aes(label=destino), nudge_y = .25, size=3, angle=45, fontface="bold") +
  geom_text(data= subset(datos, destino %in% etiqueta2 & origen== "Ruta 126"), aes(label=destino), nudge_y = -.2, size=4, fontface="bold") +
  geom_label(data= subset(datos, subsidio %in% text1 & origen== "Ruta 126"), aes(label=subsidio), nudge_y = -.5, size=4, fontface="bold") +
  geom_label(data= subset(datos, subsidio %in% text2 & origen== "Ruta 131"), aes(label=subsidio), nudge_y = .52, size=4, fontface="bold") +
  labs(x="", y="") +
  theme_minimal() +
  theme(panel.grid = element_blank()) +
  theme(axis.text = element_blank()) +
  theme(legend.text = element_text(size = 14)) +
  theme(legend.position = "bottom") + 
  guides(color = guide_legend(nrow=3, reverse = T)) +
  theme(plot.margin = unit(c(3,.5,3,.5), "cm"))

巴士站地图 https://i.stack.imgur.com/xkeZ8.jpg

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何创建我的数据的地铁地图可视化 的相关文章

随机推荐

  • 此信封实现是否正确使用 C++11 原子?

    我编写了一个简单的 信封 类 以确保我正确理解 C 11 原子语义 我有一个标头和一个有效负载 编写器清除标头 填充有效负载 然后用递增的整数填充标头 这个想法是 读取器然后可以读取标头 memcpy 出有效负载 再次读取标头 如果标头相同
  • B-Prolog 中带有累加器的嵌套循环

    B Prolog 具有逻辑循环 例如 我们可以这样计算 1 2 3 的和 test1 foreach A in 1 3 ac Sa 0 Sa 1 is Sa 0 A writeln sa Sa test1 test1 sa 6 yes 但是
  • Android 初始化 Visualizer 时出现错误代码 -3

    初始化时出现此错误Visualizer visualizer new Visualizer mediaPlayer getAudioSessionId lt 错误 无法初始化 Visualizer 引擎 错误 3 java lang Run
  • Twitter bootstrap:跨浏览器圆角和渐变?

    有什么方法可以添加 Twitter Bootstrap 跨浏览器对圆角和 CSS 渐变的支持 阅读 愚蠢的 IE 7 支持 我会使用 CSSPIE http css3pie com http css3pie com 这是一个 htc 文件
  • 有 XWalkView webviewclient 吗?

    我正在尝试使用XWalkView作为我的 Android 应用程序中的 webview 替代品 我注意到没有setWebViewClient方法上XWalkView目的 问题是我想检查页面何时完成 onPageFinished 以及资源加载
  • 在同一服务器上部署 ASP.net Ajax 1.0 和 3.5 Web 应用程序

    我们有一个生产服务器 其中运行 Ajax 1 0 的 ASP net 2 0 应用程序和相应的工具包 工具包版本 1 0 20229 我被要求使用 ASP net 3 5 移动另一个应用程序构建 该应用程序也利用了最新的 ASP NET A
  • 如何计算 NSArray 中的重复值?

    我的价值NSArray包括重复项 我找到了重复项 但现在我怎样才能找到没有 他们重复 您可以使用NSCountedSet http developer apple com library ios documentation Cocoa Re
  • pandas 过滤和比较日期

    我有一个 sql 文件 其中包含我读入 pandas 的数据 df pandas read sql Database count details con engine index col id parse dates newest avai
  • 雪花不旋转

    我需要转置一个表 其中column1 是实体的名称 column2 到column366 是一年中包含美元金额的日期 表 select语句 输出结果都给定了 以下 问题 此语法要求我创建一个逗号分隔的列列表 基本上是 365 个日期 并在
  • 找不到模块:错误:无法解析“sass-loader”

    刚接触 webpack 尝试让 sass loader 与我的 React 项目配合良好 已遵循教程 配置似乎正确 但结果始终是 无法解析 sass loader 我怀疑这是一些明显的错误 但我还没有通过任何搜索或谷歌搜索找到它 任何帮助表
  • 如何使用 jQuery (IE) 删除禁用属性[重复]

    这个问题在这里已经有答案了 我面临的情况是 我必须使用禁用属性来停用我不希望用户编辑的所有输入
  • iOS 7 UIImagePickerController 有黑色预览

    我有一个使用 sourceType 相机调用的 UIImagePickerController 80 的时间我得到黑色预览 如果我等待 假设大约 30 秒 我会得到一个很好的预览 并且在大约 50 的时间内它会很好 然后它可能会再次中断 所
  • 从 Private Repo 下载 Git 存档 tarball 时遇到问题

    我需要能够在特定标签下载我们的应用程序 但我无法为此找到可行的解决方案 基于 git 标签下载 tarball 似乎很有前途 但我无法使用 Curl 让它工作 我尝试了以下方法 但我得到的只是 github 404 页面的源代码 curl
  • C++ 使用计算参数调用超类构造函数

    也许这非常简单 但是有人可以告诉我如何使用子类构造函数中计算的参数来调用超类构造函数吗 像这样的东西 class A A int i int j class B A B int i B B int i int complex calcula
  • 如何在heroku应用程序中使用npm pdf图像包

    我正在尝试使用 npm 包 pdf image https www npmjs com package pdf image https www npmjs com package pdf image 对于部署在 heroku 上的应用程序
  • 设置minimumScaleFactor时UILabel获取当前比例因子?

    我有一个UILabel并设置 let label UILabel label minimumScaleFactor 10 25 设置标签文本后 我想知道当前的比例因子是多少 我怎样才能做到这一点 你还需要知道原始字体大小是多少 但我想你可以
  • getPackageManager().getInstalledPackages(PackageManager.GET_ACTIVITIES) 返回 null

    如果我打电话 PackageManager pm getPackageManager List
  • 在图像底部添加阴影

    如何在图像上添加阴影 在底部 以使标题清晰可见 请参见下图 我写了一个应用程序 也有同样的效果 我所做的是 我创建了一个框架布局其中有图像视图和另一个View它与 ImageView 具有相同的高度 然后我添加一个透明的渐变背景View E
  • TPC 继承错误

    我在使用 C Entity Framework Codefirst 和 Fluent Api 进行 TPC 继承时遇到了一个奇怪的问题 我有 3 个班级Person Invoice and PeriodicInvoice正如你在下面看到的
  • 如何创建我的数据的地铁地图可视化

    在一篇论文中找到了下面漂亮的图 http www ncbi nlm nih gov pubmed 25626705 http www ncbi nlm nih gov pubmed 25626705 它直观地展示了不同实验室的工作流程 并很