【问题标题】:How to modify the scale of x and y axes of image pixel plot object from spatstat package in R如何从 R 中的 spatstat 包修改图像像素图对象的 x 和 y 轴的比例
【发布时间】:2020-08-07 14:54:15
【问题描述】:

我有这个图像像素对象,使用 R 中的 Spatstat 包创建。x 轴的范围是 [0,24],y 轴的范围是 [28000, 29500]。当我在 R studio 中绘制它时,图表看起来很窄,如下所示:

我猜是因为 x 轴的范围与 y 轴相比太小了。我应该怎么做才能使情节更宽?

【问题讨论】:

  • 您有一个 25 像素宽和 1500 高的图像,因此其纵横比为 1:60。图像是什么?把它拉长有意义吗?您的三个选项是通过插值拉伸 x 轴,通过聚合压缩 y 轴,或者找到另一种绘图方法。但是,您需要记住,如果您拉伸 x 轴以使图像呈正方形,则“像素”的宽度将是其高度的 60 倍。这真的是你想要的吗?您还没有提供任何其他信息,因此很难在这里给您提供更好的建议。
  • @AllanCameron 我想像素宽 60 倍就可以了。

标签: r spatstat


【解决方案1】:

spatstat 包中,空间对象始终以等距方式绘制。该图对 xy 轴使用相同的物理比例。

spatstat 中的空间对象在二维空间中占据特定的位置和大小。像素图像("im" 类的对象)与二维空间中特定位置的具有特定宽度和高度的矩形区域相关联。如果该区域又长又细,则打印出来的图像将显示为又长又细,并且不会重新缩放以适应屏幕或页面。

如果要拉伸spatstat中的像素图像,需要将其转换为另一张图像,该图像将定义在二维空间的不同区域。

您可以使用spatstat 函数affine 做到这一点。在您的示例中,如果 Z 是您的原始像素图像,您可以这样做

A <- affine(Z, diag(c(60,1)))

第二个参数是变换矩阵,在这种情况下,它只是 x 轴的 60 倍拉伸。(变换将拉伸图像的域,并拉伸每个单个像素,在 x 方向上放大 60 倍。像素的数量和像素值将保持不变。不会发生插值或其他捏造。)

请参阅the spatstat book 中的第 3 章和第 4 章

【讨论】:

    猜你喜欢
    • 2020-07-04
    • 2015-09-11
    • 1970-01-01
    • 1970-01-01
    • 2015-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多