[英]How to draw at a desired scale using ggplot2?
我有一些車輛的位置,我想將其可視化為交通的俯視圖
我有以下 2 個數據集:
dat1 <- structure(list(
fvn = 1L, Time = 0, xn1 = 100, vn1 = 13.9, ln1 = 5,
sn_star = 9.41820693123826, v_dot = -1.44071910265916, xn = 85,
vn = 12, sn = 10, deltav = -1.9
), row.names = c(NA, -1L), class = "data.frame")
dat2 <- structure(list(fvn = 1:5, Time = c(0, 0, 0, 0, 0), xn1 = c(
100,
85, 70, 55, 40
), vn1 = c(13.9, 12, 12, 12, 12), ln1 = c(
5, 5,
5, 5, 5
), sn_star = c(9.41820693123826, 16, 16, 16, 16), v_dot = c(
-1.44071910265916,
-1.5, -1.5, -1.5, -1.5
), xn = c(85, 70, 55, 40, 25), vn = c(
12,
12, 12, 12, 12
), sn = c(10, 10, 10, 10, 10), deltav = c(
-1.9,
0, 0, 0, 0
)), row.names = c(NA, -5L), class = "data.frame")
在下面的 plot 中,您可以看到由於 x 和 y 的比例不同,汽車(矩形)看起來更寬而不是更長:
library(ggplot2)
ggplot() +
geom_rect(data = dat1,
aes(xmin = xn1 - ln1,
xmax = xn1,
ymin = 0.628,
ymax = 3.028)) +
geom_rect(data = dat2,
aes(group = fvn,
fill = as.factor(fvn),
xmin = xn - 5,
xmax = xn,
ymin = 0.628,
ymax = 3.028)) +
geom_hline(yintercept = 3.6, linetype = "longdash") +
ylim(c(0, 8)) +
xlim(c(20, 100))
如果我更改ylim
,情況會有所改善:
ggplot() +
geom_rect(data = dat1,
aes(xmin = xn1 - ln1,
xmax = xn1,
ymin = 0.628,
ymax = 3.028)) +
geom_rect(data = dat2,
aes(group = fvn,
fill = as.factor(fvn),
xmin = xn - 5,
xmax = xn,
ymin = 0.628,
ymax = 3.028)) +
geom_hline(yintercept = 3.6, linetype = "longdash") +
ylim(c(0, 75)) +
xlim(c(20, 100))
這更好,因為汽車現在看起來像預期的那樣更長,但是 plot 的很大一部分是空的。 我怎樣才能擺脫那個空白空間?
您可以使用coord_fixed
保持ratio=1
:
ggplot() +
geom_rect(data = dat1,
aes(xmin = xn1 - ln1,
xmax = xn1,
ymin = 0.628,
ymax = 3.028)) +
geom_rect(data = dat2,
aes(group = fvn,
fill = as.factor(fvn),
xmin = xn - 5,
xmax = xn,
ymin = 0.628,
ymax = 3.028)) +
geom_hline(yintercept = 3.6, linetype = "longdash") +
coord_fixed(ratio=1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.