【发布时间】:2019-11-19 06:47:27
【问题描述】:
我知道您可以使用coord_trans() 转换绘图的坐标,甚至可以沿两个轴执行坐标转换(例如coord_trans(x = "log10", y = "log10")),但是有没有办法执行取决于坐标转换的坐标转换两个轴的值,比如剪?
我知道在将数据传递给 ggplot 之前,我可以执行线性变换,使用类似 ggforce::linear_trans() 之类的东西,如下例所示:
trans <- linear_trans(shear(1, 0))
square <- data.frame(x = c(0, 0, 1, 1), y = c(0, 1, 1, 0))
square2 <- trans$transform(square$x, square$y)
ggplot(square2, aes(x, y)) +
geom_polygon(colour = 'black')
但是,我希望有一种方法可以编写自定义坐标系,这样就不需要事先转换数据,例如:
square <- data.frame(x = c(0, 0, 1, 1), y = c(0, 1, 1, 0))
ggplot(square, aes(x, y)) +
geom_polygon(colour = 'black') +
coord_shear(x=1)
【问题讨论】:
-
这在原则上应该是可能的,因为
coord_sf()这样做了,但我不知道任何当前的实现。您必须编写自己的坐标。 -
我不反对自己制作坐标,所以我会研究
coord_sf(),谢谢@ClausWilke