gpt4 book ai didi

graphics - 查找绘图的最终显示区域中的框架/轴的坐标

转载 作者:行者123 更新时间:2023-12-02 19:51:40 24 4
gpt4 key购买 nike

如果我使用 Frame->True 进行绘图,有没有办法可以在图像的绝对坐标中找到框架角的坐标?我有 PlotRange 和 PlotRangePadding 的数值,但请注意,我不想以任何方式篡改实际绘图,只需找出 Mathematica 在完整显示区域中选择放置绘图的框架/轴的位置即可。

正如 Brett Champion 所指出的,我正在寻找坐标 {x,y},使得 Scaled[{0,0}] == ImageScaled[{x,y}]。

[请注意,我编辑了这个问题,以消除对术语“缩放坐标”的令人困惑的误用。]

最佳答案

框架的角位于 Scaled[{0,0}]Scaled[{1,1}] .

完整图形(包括标签)的角位于 ImageScaled[{0,0}]ImageScaled[{1,1}] .

它们之间的转换很困难,尽管理论上可以转换 Scaled和用户(未缩放)坐标(如果您知道 PlotRange 的实际数字设置)和PlotRangePadding .

根据您的应用程序,您也许还可以使用 MousePosition,它也知道这些事情。

Rasterize (和 HTML 导出)还知道如何在位图/像素坐标系中查找注释的边界框:

In[33]:= Rasterize[
Plot[Sin[x], {x, 0, 10}, Frame -> True,
Prolog -> {LightYellow,
Annotation[Rectangle[Scaled[{0, 0}], Scaled[{1, 1}]], "One",
"Region"]}], "Regions"]

Out[33]= {{"One", "Region"} -> {{22., 1.33573}, {358.9, 209.551}}}

下面是 dreeves 如何使用 Rasterize 技巧来创建一个函数来准确返回他正在寻找的内容(注意全局变量 imgsz 的假设,它提供了用于光栅化绘图的 ImageSize 选项 - 框架的坐标取决于在该值上):

(* Returns the geometry of the frame of the plot: 
{width, height, x offset, y offset, total width, total height}. *)
geom[p_Graphics] := Module[{q, x1, y1, x2, y2, xmax, ymax},
q = Show[p, Prolog->{Annotation[Rectangle[Scaled[{0,0}], Scaled[{1,1}]],
"MAGIC00","MAGIC11"]}];
{{x1,y1}, {x2,y2}} = Rasterize[q, "Regions", ImageSize->imgsz][[1,2]];
{xmax,ymax} = Rasterize[p, "RasterSize", ImageSize->imgsz];
{x2-x1, y2-y1, x1, y1, xmax, ymax}]

关于graphics - 查找绘图的最终显示区域中的框架/轴的坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5589774/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com