【问题标题】:Understanding quiver plot scale了解箭袋情节规模
【发布时间】:2013-07-09 12:04:07
【问题描述】:

我试图了解规模如何在箭袋情节中发挥作用。我找到了解释 here ,但我想再次确认一下,我理解作者所说的。

当他说

将angles关键字设置为'xy'意味着向量分量是根据物理轴单位而不是页面上的几何单位进行缩放的。

他的意思是说,如果我有一些 1 像素的运动(为了简单起见,假设是每 1 秒)并且这发生在 232x232 图像上(我实际拥有),那么 1px/运动显示放大 232 倍?那是 1/232 吗?或者 1px/s 会显示为代表 1 px(无论与轴的角度如何),即它需要 1px,但是该像素出现在 232 x 232 像素大小的图像上?

将向量分量单位乘法转换为物理轴单位的实际比例因子是宽度/比例,其中宽度是以物理单位表示的绘图宽度,比例是 quiver 的 scale 关键字参数指定的数字。

这是否意味着如果说,我选择我的比例为 10,实际上是 10px/s 的向量将显示为 1px/s ? (我知道这些是非常基本的问题,但我对“物理轴”和“页面上的几何单位”感到困惑)。

我想我会通过简单地使用两张图片来测试这一点,一张是 40x40,另一张是 160x160,移动相同的 1px,看看这对情节有何影响。

我想要做的是实际上有 1px/s 表示 1px 长度,无论该长度是由绘图表示的(使用 matplotlib.pyplot)。

【问题讨论】:

  • 你用一些假数据试过这个吗?稍作探索即可回答您的问题。
  • 是的。我现在确信它正在使用一种非常特殊的方式来缩放向量。例如,我有一个 64x64 的图像,在那里我做了 1 个像素的偏移(我在两个具有黑色背景和 1px 大小的白点的图像上使用相关性 - “粒子”)。所以 1px/s 矢量将是 64px 长,如果没有缩放,即如果我想看到 1px/s 矢量由 1px 长度表示(如图像上所示),则比例需要为 64。我想探索如果图像不是正方形但有不同的侧面是否会有问题(我还没有时间这样做)。我的目标是发布对此的答案。

标签: python matplotlib scale vector-graphics


【解决方案1】:

好的,所以我使用合成数据并使用“angles = 'xy'”或者只是将其排除在外(即有类似

的东西

q = pl.quiver(a[valid,0],a[valid,1],a[valid,2],a[valid,3], color='r',**kw), 其中一个 kwargs 是您的比例因子。

它似乎随着情节的宽度而缩放。我用过

pl.draw() pl.xticks(np.arange(0,120,32)) pl.yticks(np.arange(0,100,32)) pl.grid(color = 'y') pl.savefig(new_file, bbox = "tight") 保存我的图(实际图像为 120x100(在本例中)、120x120 和 64x64。

我做了什么来测试它: 我在水平和垂直方向上创建了一个像素偏移,然后在其他一些图像上创建了 5px 的对角线偏移(向右 3 像素和向下 4 像素)。

要让 1px/s 向量在图像中采用 1px 的长度,您必须将比例设置为绘图的 宽度,即在我的情况下它是 64 或 120。我想看看非方形图像是否会影响比例,所以我将图像裁剪为 100px 高度。从我所做的几个测试来看,它似乎没有任何效果。使用不同的像素偏移进行测试是值得的,但是由于使用不同边长的图像不会以不同的方式缩放水平/垂直偏移,我认为可以安全地假设它的行为符合预期。

我想知道这种向量缩放的原因是什么......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-04
    • 1970-01-01
    • 1970-01-01
    • 2017-03-17
    • 1970-01-01
    • 1970-01-01
    • 2017-02-22
    相关资源
    最近更新 更多