【问题标题】:Remove white spaces in a large image with small colored zones删除带有小彩色区域的大图像中的空白
【发布时间】:2014-11-18 07:02:37
【问题描述】:

我有一个有很大空白空间的情节。当我尝试使用savefig() 保存它时,我的彩色区域显示为小点,如下图所示:

但如果我放大show() 输出,我可以看到绘制的矩形: (几乎 x100)

每个轴上的值如下:

x = [[start0,end0],[start1,end1],singlePoint1,...,[startn,endn],singlePoint2]
y = [[start0,end0],[start1,end1],singlePoint1,...,[startn,endn],singlePoint2]

还有一个有效区域列表:

valid = [[s0,e0], [s1,e1],SP1,...,[sn,en],SP2,... ]

其中xy 是它的子集。

我怎样才能减少空白并获得像缩放图像一样的东西(人类可检测到!)。

感谢任何帮助

编辑: 我有一个删除无效区域的想法(不在valid 列表中的区域),但不知道该怎么做。 有效区域中的空白比无效空白更令人担忧。

【问题讨论】:

  • 您是否在问如何删除空格并在 x/y 轴上有几个中断?如果是这样,我建议并排制作 6 或 8 个图,以便读者一眼就可以清楚地看到你做了什么。在除原点以外的任何地方中断轴,尤其是多个轴,即使不是完全具有欺骗性,也是非常具有误导性的。
  • 如果我想并排绘制它们,恐怕需要一百个子图。并且存在有效区域的列表,也许我应该提一下。
  • 如果你有一百个感兴趣的区域,你怎么有足够的屏幕空间来做这个?
  • 这就是我要删除无效空格的原因。然后将连接有效区域(尽管我更喜欢连接部分或不同颜色之间的边缘)并且有效区域中的空白区域更加明显。
  • 我的问题是否含糊?如果需要任何说明,我会对其进行编辑

标签: python algorithm plot


【解决方案1】:

您要求的内容非常不标准,因此如果 matplotlib 中存在该功能,我会感到惊讶。

如果您有感兴趣的区域列表,那么您可以尝试

for x0,y0,x1,y1 in valid_zones:
    plt.axis([x0, x1, y0, y1])
    plt.saveFig()

这会为每个有效区域提供一个 png,全部放大,并带有轴和所有内容。如果我理解您的问题,那么您希望通过将它们全部并排推入某种网格来将它们组合成一个图像。你可以使用图像处理工具来做到这一点,我喜欢PIL。您已经知道您有多少个有效区域,假设它是 100,当您重新加载其中一个 png 时,您可以知道它们的 [高度,宽度] 是多少。所以现在制作一个 [10*height, 10*width] 的巨大空图像,然后遍历所有图像文件并将它们逐块复制到大空图像中。这将为您提供有效区域的网格,每个区域都有自己的轴,如果您对顺序很聪明,它们甚至会位于大致正确的笛卡尔位置。如果我对您的问题的理解正确,这与删除空格几乎相同。

[注意]:正如我在上面的评论中所说,如果这只是为了你的眼睛,那很酷,但如果你打算把它放在报告/论文中,那么请注意这真的是 具有误导性和科学问题。

【讨论】:

  • 确保不会在误导性报告中使用它 :) 我正在寻找有效区域中的空白区域。问题是有效区域只是整个平面的一小部分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-12
  • 2022-07-19
  • 1970-01-01
  • 1970-01-01
  • 2017-01-05
  • 2023-03-15
  • 1970-01-01
相关资源
最近更新 更多