R可以画图吗?

2024-01-13

我想知道 R 中是否有任何包可以使用 x、y 坐标和形状大小来绘制如下内容:

我有车辆前中心的坐标及其尺寸(长度和宽度)。

Edit

原始数据集如下所示:

> head(df)
  Vehicle.ID Frame.ID Global.X Global.Y Vehicle.Length Vehicle.width Lane Preceding.Vehicle.ID Following.Vehicle.ID Spacing Headway
1          2       43  6451214  1873261           14.5           4.9    2                    0                   13       0       0
2          2       44  6451217  1873258           14.5           4.9    2                    0                   13       0       0
3          2       45  6451220  1873256           14.5           4.9    2                    0                   13       0       0
4          2       46  6451223  1873253           14.5           4.9    2                    0                   13       0       0
5          2       47  6451225  1873250           14.5           4.9    2                    0                   13       0       0
6          2       48  6451228  1873247           14.5           4.9    2                    0                   13       0       0

对于任何给定的帧,我想可视化间隙,例如,对于帧号。 500:

ff <- subset(df, Frame.ID==500)
qplot(x=Global.X, y=Global.Y, data=ff)

所有这些点都是车辆的前中心坐标。我不知道如何显示每辆车的长度和宽度并标记间隙值。


所以,我不提倡你依赖ggplot这样做,因为很可能其他一些建议的解决方案更好,但是这个问题引起了我的兴趣,因为我一直想深入研究ggplot一阵子。这就是我设法想出的:

ggplot(df, aes(x=x, y=y, length=length, width=width, fill=label)) +
  geom_hline(yintercept=seq(5, 35, by=10), color="white", size=2, linetype=2) +
  geom_car() +
  coord_equal() +
  theme(panel.background = element_rect(fill="#555555"), 
    panel.grid.major = element_blank(),
    panel.grid.minor = element_blank())

您还可以添加箭头geom_segment或明确的标签geom_text,但我们将其作为练习留给读者。

现在,为了让它发挥作用,我们必须创建geom_car,不过如果你不需要详细的图片,你可以使用geom_rect。这是geom_car(注:现在也可以作为ggbg包 https://github.com/brodieG/ggbg):

# Generate a car 'grob' using a baseline PNG

car.raster <- png::readPNG("~/Downloads/car2.png")

# The `grid` grob actually responsible for rendering our car, 
# combines our transparent car elements with a background rectangle
# for color/fill.

carGrob <- function(x, y, length, width, gp) {
  grid::grobTree(
    grid::rectGrob(
      x, y, hjust=.5, height=width, width=length,
      gp = gp
    ),
    grid::rasterGrob(
      car.raster, x=x, y=y, hjust=.5, height=width, width=length
) ) }
# The `ggproto` object that maps our data to the `grid` grobs

GeomCar <- ggplot2::ggproto("GeomCar", ggplot2::Geom,
  # Generate grobs from the data, we have to reconvert length/width so
  # that the transformations persist

  draw_panel=function(self, data, panel_params, coords) {
    with(
      coords$transform(data, panel_params),
      carGrob(
        x, y, length=xmax-xmin, width=ymax-ymin,
        gp=grid::gpar(
          col = colour, fill = alpha(fill, alpha),
          lwd = size * .pt, lty = linetype, lineend = "butt"
  ) ) ) },
  # Convert data to coordinates that will get transformed (length/width don't
  # normally).

  setup_data=function(self, data, params) {
    transform(data,
      xmin = x - length / 2, xmax = x + length / 2,
      ymin = y - width / 2, ymax = y + width / 2
  ) },
  # Required and default aesthetics

  required_aes=c("x", "y", "length", "width"),
  default_aes = aes(
    colour = NA, fill = "grey35", size = 0.5, linetype = 1, alpha = NA
  ),
  # Use the car grob in the legend

  draw_key = function(data, params, size) {
    with(
      data,
      carGrob(
        0.5, 0.5, length=.75, width=.5,
        gp = grid::gpar(
          col = colour, fill = alpha(fill, alpha),
          lwd = size * .pt, lty = linetype, lineend = "butt"
  ) ) ) }
)
# External interface

geom_car <- function(
  mapping=NULL, data=NULL, ..., inherit.aes=TRUE, show.legend=NA
) {
  layer(
    data=data, mapping=mapping, geom=GeomCar, position="identity",
    stat="identity", show.legend = show.legend, inherit.aes = inherit.aes,
    params=list(...)
  )
}

The car:

数据:

df <- read.table(h=T, t="vehicle  x y   length  width   label
1   150 10  14  5   other
2   180 8   12  5   other
3   220 10  18  5   other
4   145 20  15  5   target
5   250 18  14  5   other
6   160 30  13  5   autonomous
7   200 33  15  5   other
8   240 31  22  5   other
")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R可以画图吗? 的相关文章

  • 如果“testthat”测试在“R”中失败,则打印自定义诊断信息

    I use a testthat单元测试来检查是否data frame函数返回的结果与我期望它返回的结果相同 如果测试失败 testthat打印一些诊断信息 例如 MyFunction df orig is not identical to
  • 将summary()写入as.data.frame以在ggplot / R中使用

    请查找 af 数据样本t below 我正在使用以下方法进行竞争风险分析etmCIF来自etm package 产生以下结果 这很好 但需要更好的图形 曾经有一个ggtrans etm函数将数据导入ggplot 然而 这个功能显然被删除了
  • R 中的 NA 替换函数

    我正在尝试替换矩阵中的 NA mat 零 我在用着mat is na mat lt 0 当我有 18946 个变量的 94531 个观察值或更小的矩阵时 效果很好 但我在 22752 个变量的 112039 个观察值的矩阵上尝试它 R 显示
  • 用于清除工作空间和转储存储的 R 全局函数

    我希望创建一个全局函数来清除我的工作区并转储我的内存 我将我的函数称为 cleaner 并希望它执行以下代码 remove list ls gc 我尝试在全局环境中创建该函数 但是当我运行它时 控制台仅打印该函数的文本 在我要获取的函数文件
  • 在 mac (iMac OSX ) 终端中远程运行脚本(r 脚本)到其他计算机

    我有一个小示例脚本 script p r 如下所示 打算在终端中运行 usr bin Rscript sink output capture txt mn lt mean 1 10 and so on much longer list of
  • R-了解 akima::interp 结果中的 NA 值

    我有以下数据框 ref dat k Intensity Slope 1 0 021467214 33 16 2 0 012444759 33 8 3 0 006079156 33 4 4 0 003792025 33 2 5 0 02276
  • 如何在 R 中为传单中的数值变量设置不对称颜色渐变

    我想让传单调色板以零为中心 红白绿发散 我已经尝试过中所说的这个帖子 https stackoverflow com questions 29262824 r center color palette on 0 当我尝试手动创建颜色时 我得
  • 从 R 环境中删除对象

    我正在阅读 Hadley 的 Advanced R 在第 8 章中 他说我们可以使用以下方法从环境中删除对象 rm 但是 移除该物体后我仍然可以看到该物体 这是我的代码 e lt new env e a lt 1 e b lt 2 e a
  • 在另一个 Rmd 中运行选定的块

    我已经在源 Rmd 文件中运行了分析 并且希望仅使用few来自源的块 我已经看到了一些关于从源 Rmd 中提取所有块的答案来自另一个 Rmd 中的 Rmd 文件的源代码 https stackoverflow com questions 4
  • R 编程:如何计算数据框中两个单元格之间的差异并将它们保存在新列中

    尝试学习 R 并陷入自相关示例中 我想将 x 的差异与 y 的差异进行回归 我在数据框中有 x 和 y 并且希望将 x2 x1 的差值保存在新列 例如 dx 中 我不知道该怎么做 我拥有的 data1 x y 5 3 8 9 3 1 1 5
  • 根据另一列中的键累积一列中的值时出现问题

    我有一个看起来像这样的数据框 我需要使用 PROJ ID 列中的字符串创建一个新的值列 并形成 PROJ NAME 列中的值字符串 这里提供的解决方案 根据 r 中另一列的键累积一列中的值 https stackoverflow com q
  • R 更改小数位且不四舍五入

    gt signif 1 89 digits 2 1 1 9 我想要1 8 这有点笨拙 但它会起作用并保持所有数字 x lt 1 829380 trunc dec lt function x n floor x 10 n 10 n Resul
  • 将函数应用于 3d 数组的每一层,返回一个数组

    假设您有一个包含行 列和层的 3 维数组 A lt array 1 27 c 3 3 3 想象你有一个函数 它接受一个矩阵作为输入并返回一个矩阵作为输出 就像t 如何将该函数应用于数组的每一层 返回与第一层大小相同的另一个数组 我觉得我应该
  • 逻辑回归/二项式的 glmnet 误差

    当尝试将 glmnet 与 family binomial 配合以进行逻辑回归拟合时 出现此错误 gt data lt read csv DAFMM HE16 matrix csv header F gt x lt as data fram
  • fread 将空导入为 NA

    我正在尝试导入带有空白的 csv 读取为 不幸的是他们都读作 NA now 为了更好地演示问题 我还展示了如何NA NA and 都映射到同一事物 除了最底部的示例 这将妨碍简单的解决方法dt is na dt lt gt write cs
  • 为绘图制作 2D 图例 - 双变量分区统计图

    我一直在玩双变量 choropleth 地图 并且一直在如何创建类似于 2d 图例的问题上陷入困境约书亚 史蒂文斯 http www joshuastevens net cartography make a bivariate chorop
  • 使用outer代替expand.grid

    我正在寻找尽可能快的速度并留在基地做该做的事expand grid做 我用过outer为过去类似的目的创建一个向量 像这样的东西 v lt outer letters LETTERS paste0 unlist v lower tri v
  • 如何计算嵌套函数中的粘合表达式?

    我正在尝试嵌套一个函数 该函数将两个字符串粘合在一起 该函数使用组合字符串来命名数据帧的列 然而 问题似乎是粘合表达式没有足够早地评估为字符串 我可以 并且应该 强制在将表达式作为参数传递给另一个函数之前对其进行求值吗 library ti
  • ggplot2、R 中的单条形条形图

    我有以下数据和代码 gt ddf var1 var2 1 aa 73 2 bb 18 3 cc 9 gt gt dput ddf structure list var1 c aa bb cc var2 c 73L 18L 9L Names
  • 单击 R 中的 Sankey Chart 线时添加额外的标签值

    以下 R 闪亮脚本创建一个桑基图 如下面的快照所示 我的要求是 当我单击左右节点之间的任何链接 即 a1 和 a2 时 我希望相应的 a3 的总和出现在标签中 例如 a1 中的 A 和 a2 中的 E 总共具有值 50 和 32 因此 我想

随机推荐

  • Fabric.js:如何填充徒手路径来绘制形状?

    在fabric js中 我们可以徒手绘制路径 例如http fabricjs com freedrawing http fabricjs com freedrawing 但是 在 HTML canvas 2d context ctx 中 我
  • UnparsedFlagAccessError:在解析标志之前尝试访问标志 --preserve_unused_tokens。伯特

    我想使用 Bert 语言模型来训练多类文本分类任务 之前我使用 LSTM 进行训练 没有任何错误 但 Bert 给了我这个错误 我收到以下错误 我真的不知道如何解决它 有人可以帮助我吗 不幸的是 keras 库中使用 BERT 的文档很少
  • ModuleNotFoundError:没有名为“__main__.models”的模块; “__main__”不是一个包

    目前在 Django 网站上工作 我在从我的网站导入类及其属性时遇到问题models py模块到我的views py我的音乐应用程序中的模块 据我了解 Django 使用元类来构建模型 因此定义的字段最终不会作为类的属性 这是问题吗 如果是
  • 如何编写多线程单元测试?

    我想知道是否有一些单元测试框架能够轻松编写多线程测试 我会想象这样的事情 n个线程同时调用一个特殊的测试方法m次 所有测试线程完成后 将调用应验证某些约束的断言方法 我当前的方法是在 junit 测试方法中创建 Thread 对象 在每个
  • Google Chrome 与 Nodejs (v8) 的性能比较?

    Example console time Test for var i 0 i lt 2500000 i 1 loop around console timeEnd Test 上面的代码运行faster in nodejs than goo
  • Ruby 正则表达式:负匹配

    我想知道是否可以对整个单词使用否定匹配 这样就像 em lt em gt 会匹配一切 但之间 并包括 之间的文本 em em 我正在考虑使用负向前瞻 但我认为这不会起作用 因为我需要检查开口 em 以及 当然 我可以只使用正则表达式 然后从
  • Java:委托模式和受保护的方法

    我一直在使用委托模式将工厂创建的对象包装在第三方库中 最近 该库在基类中添加了受保护的方法 而我的包装类不再起作用 有没有人有一个好的解决方案而不诉诸反思 这是在第 3 方库及其包中 public class Base public voi
  • 通过扩展程序更改 Google chrome 主页

    无论如何 是否可以通过扩展程序更改 google chrome 主页 url 我正在尝试编写一个可以更改主页网址的简单扩展 希望你能帮我 这是可能的 快速搜索就会发现这样的扩展已经存在 https chrome google com web
  • xml2csv包错误'_IterParseIterator'对象没有属性'next'

    我正在使用 xmlutils 包将 xml 文件转换为 csv 我的代码如下 from xmlutils xml2csv import xml2csv as x input path media ishan Local Disk doc x
  • 线性回归中使用的显式公式

    我有一个公式列表 我使用lapply and lm创建回归模型列表 然而 当我看到call每个线性模型的组成部分 我看到的不是显式公式 而是解析到线性模型中的变量的名称 例如 使用 mtcars 数据集 temp formula list
  • dlib (setup.py) 循环的构建轮子

    尝试从 Ubuntu 安装 dlib 和face recognition 参考自https www learnopencv com install dlib on ubuntu https www learnopencv com insta
  • 为什么 Win32 API 中不使用标准数据类型? [复制]

    这个问题在这里已经有答案了 我学习 Visual C Win32 编程已经有一段时间了 为什么会有这样的数据类型DWORD WCHAR UINT等等用来代替 比如说 unsigned long char unsigned int等等 我必须
  • 使用 TypeScript React prop 类型 - 如何拥有函数类型?

    是否有使用 TypeScript 来使用 React prop types 的函数类型的最佳实践 我以为这会起作用 但实际上它出错了 type Props onClick Function const Submit onClick Prop
  • 什么时候应该使用类,什么时候应该使用函数?

    什么时候类比函数更有用 有什么我应该知道的硬性或快速规则吗 它依赖于语言吗 我打算为 Python 编写一个脚本来解析不同类型的 json 数据 我的直觉是我应该使用类来完成此操作 而不是使用函数 当您的例程需要保存状态时 您应该使用类 否
  • 如何在linux(ubuntu)上更新ruby?

    我是 ruby 和 linux 的新手 所以我确信这是微不足道的 但我还不知道 我目前安装了 ruby 1 8 7 我想将其更新到 ruby 1 9 我怎样才能做到这一点 sudo apt get install ruby1 9 应该可以解
  • 将地图标记设置为自定义颜色 Android

    我正在制作一个应用程序 可以在地图的某些点添加图钉 我希望我的图钉颜色与我们应用程序的主题颜色相匹配 抱歉我真的是菜鸟 int color Color rgb 255 201 14 mMap MapFragment getFragmentM
  • 如何解决由内联命名空间中的标识符冲突引起的不明确引用

    考虑以下代码 include
  • git 存档与 cp -R

    如果我有一个 git 存储库的克隆作为远程服务器上的缓存副本用于 capistrano vlad 样式部署 那么最好执行 A git archive format tar origin master cd destination tar x
  • TortoiseHg - 如何在不先提交的情况下创建补丁

    当我想从未提交的更改创建补丁时 我真的必须首先提交吗 TortoiseHg 是否不允许在不执行提交的情况下创建补丁 TortoiseHg 2 0 2 在工作台中 您可以右键单击Working Directory行并选择Export Copy
  • R可以画图吗?

    我想知道 R 中是否有任何包可以使用 x y 坐标和形状大小来绘制如下内容 我有车辆前中心的坐标及其尺寸 长度和宽度 Edit 原始数据集如下所示 gt head df Vehicle ID Frame ID Global X Global