【问题标题】:Transform x,y coordinate space in ggplot在ggplot中变换x,y坐标空间
【发布时间】: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

标签: r ggplot2


【解决方案1】:

我实现了一个自定义坐标来执行此操作。它需要一个类似ggforce::linear_trans 生产的变压器并将其应用于 ggplot。在我的 deeptime 包中查看 here。

【讨论】:

    猜你喜欢
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-01
    • 1970-01-01
    相关资源
    最近更新 更多