r - 如何在 R 中可视化多个轨迹?
问题描述
我正在尝试使用 R 可视化虚拟房间中多个参与者的轨迹。我有一个参与者从右侧(黑色方块)进入并向左移动,那里有一个出口门(红色方块)。有时在房间中间(圆圈)有一个障碍物,参与者绕过它,移动到障碍物的左侧(即图表的下半部分)或障碍物的右侧(那将是图表的上半部分)。在下面的示例中,参与者移动到障碍物的左侧以避开它。
library(shape)
# black line continuous
pos_x <- c(5.04,4.68,4.39,4.09,3.73,3.37,3.07,2.77,2.47,2.11)
pos_z <- c(0.74,0.69,0.64,0.60,0.56,0.52,0.50,0.50,0.50,0.51)
df1 <- cbind.data.frame(pos_x,pos_z)
x.2 <- df1$pos_x
z.2 <- df1$pos_z
plot(x.2,z.2,type="l", xlim=range(x.2), ylim=c(-1,3.5), xlab="x", ylab="z", main = "jagged trajectory using LINES function")
filledrectangle(wx = 0.2, wy = 0.2,col = "black", mid = c(5.16, 1), angle = 0)
filledrectangle(wx = 0.2, wy = 0.2,col = "red", mid = c(2, 1), angle = 0)
plotcircle(mid = c(3.4, 1), r = 0.05)
为了在同一张图上可视化多个参与者的轨迹(即多条线),我使用函数plot来设置绘图本身(和第一条线),然后我使用函数线添加其他轨迹。
这种设置通常效果很好,但我对功能线有疑问。当参与者从房间的左侧穿过房间到右侧或反之亦然(即从图表的底部到图表的顶部,反之亦然)时,我有一个伪影,一条锯齿线(见下面的红线。)
# adding a red line (jagged) to the plot above
pos_x <- c(4.93,4.58,4.29,4.00,3.66,3.52,3.59,3.72,3.76,3.67)
pos_z <- c(0.42,0.33,0.25,0.17,0.20,0.52,0.80,1.14,1.44,1.72)
df2 <- cbind.data.frame(pos_x,pos_z)
x.3 <- df2$pos_x
z.3 <- df2$pos_z
lines(x.3[order(x.3)], z.3[order(x.3)], xlim=range(x.2), ylim=c(-1,3.5), pch=16, col="red")
如果我只对那条线使用函数“绘图”,那么轨迹就会正确(见下面的红线。)
# red line continuous
pos_x <- c(4.93,4.58,4.29,4.00,3.66,3.52,3.59,3.72,3.76,3.67)
pos_z <- c(0.42,0.33,0.25,0.17,0.20,0.52,0.80,1.14,1.44,1.72)
df2 <- cbind.data.frame(pos_x,pos_z)
x.3 <- df2$pos_x
z.3 <- df2$pos_z
plot(x.3,z.3,type="l", xlim=range(x.2), ylim=c(-1,3.5), xlab="x", ylab="z",col="red", main = "smooth trajectory using PLOT function")
filledrectangle(wx = 0.2, wy = 0.2,col = "black", mid = c(5.16, 1), angle = 0)
filledrectangle(wx = 0.2, wy = 0.2,col = "red", mid = c(2, 1), angle = 0)
plotcircle(mid = c(3.4, 1), r = 0.05)
我想知道您是否认为有一种方法可以使用这些功能使线条更平滑,通过调整一些参数,或者是否应该使用其他功能。我不得不说,当我处理绘图时,我(仍然)主要在基础 R 中工作,但如果需要,我欢迎 ggplot 中的解决方案。或者您对如何可视化轨迹有任何其他想法或资源?
解决方案
推荐阅读
- virtualbox - 在 VBox 中配置 MAAS 以访问另一个 VBox,PXE 的问题
- npm - 运行 npm audit fix 时出现 404 错误
- r - read_tsv 返回 1 列 df 预期有许多列
- python - 如何在多个客户端之间进行通信?
- excel - Excel:如何计算每个州内的唯一 ID 以及每个州内购买的门票
- reactjs - `onBlur` 未在 'Jodit` wyswig 编辑器代码编辑器模式下触发,`useCallback` 无法正常工作
- azure - 在 Azure VM 上为 HTTPS 配置 SSRS
- python - 在 Matplotlib 中向折线图添加数据标签
- reactjs - 如何在我的 React 应用程序中向 Monaco Editor 添加使用 Antlr4 语法文件功能的自动完成、语法突出显示?
- node.js - 为什么我不能在端口 5000 上运行项目?