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可以画图吗? 的相关文章

  • R 中的卡方拟合优度检验

    我有一个观察值向量 还有一个用模型计算的值向量 actual lt c 1411 439 214 100 62 38 29 64 expected lt c 1425 3 399 5 201 6 116 9 72 2 46 3 30 4 6
  • 在 R data.table 中计算时间增量

    我有一个篮球运动员数据的数据表 其中包括每场比赛和多名球员的比赛日期 我想创建一个列来计算自上一场比赛以来的天数 我在 R 中使用 data table 包 PLAYERID GAME DATE 1 2989 2014 01 1 2 298
  • 在 R 中使用 apply() 时出现未使用参数错误

    当我尝试对日期列使用 apply 条件以返回一组系数时 收到错误消息 我有一个数据集 为简单起见 此处进行了修改 但可重现 ADataset lt data table Epoch c 2007 11 15 2007 11 16 2007
  • 基于两列对数据框中的行进行求和[重复]

    这个问题在这里已经有答案了 我想添加一列的值 将它们按两列分组 我找到了如何在一列上执行此操作 但无法弄清楚如何在两列上执行此操作 例如 如果我有以下数据框 x c a a b b c c a a b b c c a a b b c c y
  • 如何扩展 ggplot y 轴限制以包含最大值

    通常 在图中 Y 轴值标签会在绘制的最大值下方被截断 For example library tidyverse mtcars gt ggplot aes x mpg y hp geom point 我知道scale y continous
  • 尝试使用 movie3d 制作 3D PCA 图(rgl)的电影

    我已经使用 pca3d 包在 R 中制作了 rgl 3D PCA 图 并且我正在尝试使用 movie3d 制作一个包含旋转图电影的 gif 文件 pca3d 包 makeMoviePCA 中有一个函数 它将其参数传递给 movie3d 这是
  • 计算横截面积作为高度的函数

    我试图弄清楚如何计算不同水位的河流横截面的充满水的面积 对于横截面 我有 5 m 宽河流上每 25 cm 的深度 并且可以根据之前很好回答的问题来计算面积计算不同高度的横截面积 https stackoverflow com questio
  • 在两个向量之间交换元素(交叉)

    假设我有 chromosome 1 lt c 0010000001010000 chromosome 2 lt c 0100000001001010 我该如何实施step 3 5 Evaluate NC1 否 中 1 个chromosome
  • 计算网格中物种的出现次数

    我有大约500 000点R美国各地候鸟物种的出现数据 我试图在这些点上覆盖网格 然后计算每个网格中出现的次数 统计完计数后 我想将它们引用到网格单元 ID 在 R 中 我使用了over 函数只获取范围图中的点 这是一个形状文件 Read i
  • 闪亮的传单添加大量分离的折线

    我有一个 200k 行数据集 其中包含出发地和目的地的坐标 我有一个 R 闪亮的应用程序 带有传单地图 可以在这些坐标上显示圆圈 尽管坐标数量很大 但效果很好 这是数据的简化示例 每行包含出行id 出发地经纬度 目的地经纬度 id lat
  • 如何在 Shiny 应用程序中访问/打印/跟踪当前选项卡选择?

    我正在一个闪亮的应用程序中工作 我希望能够访问用户在会话中当前所在选项卡上的信息 我有一个观察事件 用于侦听要单击的特定按钮 简而言之 我想存储 打印用户单击此按钮时所在的当前选项卡 单击此按钮后 选项卡将更改为带有 updateTabIt
  • 正则表达式在 R 中同时多次包含字母/特殊字符时删除单词

    我想删除那些单词中字母 特殊字符的数量同时出现两次以上的单词 例如 输入就像 Google in theee lland of whhhat c c and e 输出应该是 Google in lland of c c and x lt G
  • 如何从数据框中按降序获取前n家公司

    我正在尝试从数据框中获取排名前 n 的公司 下面是我的代码 data Forbes2000 package HSAUR sort Forbes2000 profits decreasing TRUE 现在我想从这个排序向量中获取前 50 个
  • 为什么在 R 中绘图时,hovertemplate 无法正确显示某些数据点

    mydat2 lt data frame subject c math english chemistry score c 80 50 65 class c A B A count c 50 60 70 library plotly plo
  • R:igraph、社区检测、edge. Betweenness 方法、统计/列出每个社区的成员?

    我有一个相对较大的图表 其中顶点 524 边 1125 是现实世界的交易 边是有向的并且具有权重 包含是可选的 我正在尝试调查图中的各个社区 并且本质上需要一种方法 计算所有可能的社区 计算最佳社区数量 返回每个 最佳 社区的成员 成员数量
  • 缩放geom_密度以将geom_bar与y上的百分比相匹配

    因为我对数学感到困惑上次我尝试问这个问题 https stackoverflow com questions 32412805 ggplot2 histogram with density curve that sums to 1 这是另一
  • “条件长度 > 1 并且仅使用第一个元素”错误

    我对 f 语句有疑问 因为它返回给我以下错误消息 条件长度 gt 1 并且仅使用第一个元素 我有一个名为 data summary 的数据框 我想创建两个新变量vol up and vol down取决于我的数据框的其他变量 这是我的脚本代
  • 使用 sprintf 打印换行符 - 有光泽

    我试图在打印时进行换行 这是我的代码 temp lt LETTERS 1 11 print sprintf Rank s s n 1 11 temp output 1 Rank 1 A n Rank 2 B n Rank 3 C n Ran
  • rpy2 无法加载外部库

    希望有人能帮忙解决这个问题 R版本 2 14 1rpy2版本 2 2 5蟒蛇版本 2 7 3 一直在尝试在 python 脚本中使用 rpy2 加载 R venneuler 包 该包以 rJava 作为依赖项 venneuler 和 rJa
  • 当我添加形状时,分组哑铃图变得不稳定

    我有以下数据显示白人与黑人在各个领域的一致性百分比 我想创建一个分组哑铃图 其中国家值和州值彼此相邻 以便于比较 Domain c A B C D E F G A B C D E F G A B C D E F G A B C D E F

随机推荐

  • 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