如何在 ILNumerics 中配置刻度标签位置?

2024-03-15

I draw some lines with ILLinePlot. enter image description here

然后我旋转立方体(目的是更改从顶部开始的 Y 刻度标签的位置):

Rotation = Matrix4.Rotation(new Vector3(1, 0, 0), ILMath.pif),

It produces results like this. enter image description here

在此图中,我丢失了 Y 轴上的刻度标签。如何配置呢?那么标签可以显示吗?

Update:这个问题与:如何反转 ILNumerics 中的轴 https://stackoverflow.com/questions/24502759/how-to-reverse-the-axis-in-ilnumerics

At first, I have make a graph that consists some lines like this figure: enter image description here That figure is produced by this code:

scene.Add(new ILPlotCube
{
   Children = {
      new ILLinePlot(ILMath.tosingle(responses["1,0;:"]),lineWidth:1, markerStyle: MarkerStyle.None),
      new ILLinePlot(line1, lineColor: Color.Black ,lineWidth: 2)
   },

   Axes =
   {
      YAxis =
      {
          LabelAnchor = new PointF(1, 0)
      },
      ZAxis = 
      {
         Visible = false,  
      }
   }
});

BoreholeRespondilPanel.Scene = scene;
BoreholeRespondilPanel.Refresh();

Then I want to reverse the Y axis scale become like this: enter image description here

从这个线程:如何反转 ILNumerics 中的轴 https://stackoverflow.com/questions/24502759/how-to-reverse-the-axis-in-ilnumerics,他建议我将绘图立方体绕 X 轴旋转 180°。然后这是我的最终代码:

scene.Add(new ILPlotCube
{
   Children = {
      new ILLinePlot(ILMath.tosingle(responses["1,0;:"]),lineWidth:1, markerStyle: MarkerStyle.None),
      new ILLinePlot(line1, lineColor: Color.Black ,lineWidth: 2)
   },
   Rotation = Matrix4.Rotation(new Vector3(1, 0, 0), ILMath.pif), //<<==== added this line

   Axes =
   {
      YAxis =
      {
          LabelAnchor = new PointF(1, 0)
      },
      ZAxis = 
      {
         Visible = false,  
      }
   }
});

BoreholeRespondilPanel.Scene = scene;
BoreholeRespondilPanel.Refresh();

但是,结果缺少 Y 轴上的刻度标签。如何配置才能显示刻度标签?


编辑和新答案与解决方案

经过一番调查后,您的问题可能会重现。实际上我们有两个问题:

1)旋转绘图立方体以翻转轴就可以了。但应该正确地进行。这涉及到一个旋转and一个翻译。两者可以组合并一起应用于ILPlotCube.Rotation财产:

Rotation = Matrix4.Translation(0, 0, -2).Rotate(Vector3.UnitX, ILMath.pif)

需要平移,因为旋转总是围绕原点进行。绘图立方体的原点位于 (0,0,0),绕 X 轴旋转使绘图立方体更靠近相机。如果没有平移,它可能会太接近,从而导致 ZNear 上的剪辑启动并阻止场景的某些部分显示。

2) BUTILNumerics 中存在错误ILOGLLabelILNumerics 的 OpenGL 标签类先前版本 4.1 将阻止标签在此类旋转的绘图立方体中显示。该错误将在 4.1 中修复。 为了解决这个错误,

a. Use ILPlotCube.Transform代替ILPlotCube.Rotation, and
b.重新配置设置ILPlotCube.ZNear and ILPlotCube.ZFar:

plotCube.Transform = Matrix4.Translation(0, 0, -2).Rotate(Vector3.UnitX, ILMath.pif); 
plotCube.ZNear = -1; plotCube.ZFar = 1;

Recap

要使用 ILNumerics 版本 > 4.0 反转 Y 轴,只需应用 1)。对于旧版本(4.0 及以下),只需使用 2)。


旧答案

@编辑:旧答案并没有真正回答问题。请参阅上面的第一部分以找到原始问题的解决方案。为了完整起见,这个旧答案留在这里,因为它无论如何都是有用的:它展示了如何通过允许用户交互来确保稳定的配置。


我无法完全重现您的问题,但这里有一个潜在的解决方案。

通过反转绘图立方体以获得从上到下方向的 Y 轴,您必须确保用户无法通过双击场景来重置绘图立方体。我们可以处理双击事件并将旋转放在那里。

无论如何,对于下面的示例,所有刻度都正确显示。如果问题仍然存在,请发布屏幕截图和runnable例子。

private void ilPanel1_Load(object sender, EventArgs e) {
    // generate some test data
    ILArray<float> A = ILMath.tosingle(ILMath.randn(1, 20));
    ILArray<float> B = A + ILMath.vec<float>(1, 20);
    // add two lines
    ilPanel1.Scene.Add(new ILPlotCube {
        Children = {
            new ILLinePlot(A, lineWidth:1, markerStyle: MarkerStyle.None),
            new ILLinePlot(B, lineColor: Color.Black, lineWidth: 2)
        },
        // rotate the plotcube so the Y axis appears in top down direction
        Rotation = Matrix4.Rotation(new Vector3(1, 0, 0), ILMath.pif), //<<==== added this line

        // configure some axis label properties
        Axes = {
            YAxis = {
                LabelAnchor = new PointF(1, 0)
            },
            ZAxis = {
                Visible = false,
            }
        }
    });

    // override the double click event: resetting the plotcube will restore the reversed axis
    ilPanel1.Scene.First<ILPlotCube>().MouseDoubleClick += (_s, _a) => {
        var plotCube = _s as ILPlotCube;
        if (plotCube != null) {
            plotCube.Reset(); 
            plotCube.Rotation = Matrix4.Rotation(new Vector3(1, 0, 0), ILMath.pif);
            _a.Refresh = true;
            _a.Cancel = true; 
        }
    }; 
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 ILNumerics 中配置刻度标签位置? 的相关文章

  • 如何显示 matplotlib 饼图中的实际值

    我有一个饼图 绘制从 CSV 文件中提取的值 当前显示值的比例 百分比显示为 autopct 1 1f 有没有办法显示每个切片的数据集中表示的实际值 Pie for Life Expectancy in Boroughs import pa
  • Bellman-Ford 算法检测什么?负重还是负循环?

    如果给定一个图 现在我们要从源头计算最短路径 现在 如果一条边具有负权重 但在到达目的地时有边到后边返回到该边 我的意思是如果没有循环 那么我们就没有负循环 但是here http en wikipedia org wiki Bellman
  • 使用 d3 进行多级/分组轴标签

    我想知道是否有一种简单的方法可以在 d3 中添加多级 分层 分组轴标签 例如 如果我有一个折线图 其中 x 轴的月份名称跨越多年 那么我还希望将年份作为月份名称下方的标签 因此它看起来像这样 Oct Nov Dec Jan Feb Mar
  • 如果 1 个 Gremlin 查询中不存在顶点和边,则创建

    我找到以下代码来创建边缘 如果它尚不存在 g V hasLabel V1 has userId userId as a V hasLabel V1 has userId userId2 coalesce bothE link where o
  • Flash 图表和图形的最佳解决方案是什么? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我知道融合图表 http www fusioncharts com 还有其他好的解决方案或 API 用
  • 如何计算 Postgres 上图表中所有连接的节点(行)?

    我的桌子有account id and device id One account id可以有多个device ids 反之亦然 我正在尝试计算每个连接的多对多关系的深度 Ex account id device id 1 10 1 11
  • 用表达式分割轴标签

    我有一个带有包含表达式的长标签的图 我想将其分成两行 在表达式中添加 n 结果不符合预期 ylabel lt expression A very long label with text and n expression alpha bet
  • 为什么图的 C++ 数据结构隐藏连续的整数索引?

    有向图和无向图的数据结构至关重要 众所周知且广泛使用的实现 例如Boost图库 http www boost org doc libs 1 56 0 libs graph doc table of contents html and Lem
  • Web 服务响应包含无效的 XML 字符

    我的应用程序正在连接到 Web 服务 rpc encoded 我使用的是 Axis 1 4 当 Web 服务发送响应时 它会发送一个无效字符 然后发送一个异常 http xml apache org axis stackTrace org
  • core-plot:仍然不明白如何拥有自定义标签和刻度

    我有这个问题很长时间了 但我找不到任何东西可以解决这个问题 我阅读了几个论坛 但无法找到可行的解决方案 我有以下代码 Adjust graph using above data CPXYPlotSpace plotSpace CPXYPlo
  • Android 中的垂直(旋转)标签

    我需要两种在 Android 中显示垂直标签的方法 水平标签逆时针旋转 90 度 字母在侧面 带有字母的水平标签 如商店招牌 我是否需要为这两种情况 一种情况 开发自定义小部件 我可以使 TextView 以这种方式呈现吗 如果我需要完全自
  • ClearCase:查找仅具有一个特定标签而不是更多标签的文件

    我想在 ClearCase 中查找标有特定标签的文件 但是没有设置任何其他标签 例如 如果我有这样标记的文件 file1 LBL A LBL B file2 LBL A 我想要一个只提供 file2 而不是 file1 的查询 有没有办法用
  • 生成和保存 ZedGraph 绘图而不在表单上显示

    是否可以将数据绘制到 ZedGraph 图表上并将其保存为文件 而不显示 生成用户可见的图表 我希望处理大量数据集并生成图表并将其保存到文件中以便在应用程序外部查看 如果无法做到这一点 是否可以在隐藏 最小化表单上显示图形 保存图形 关闭窗
  • 如何在matplotlib中部分填充之间,如不同值的不同颜色

    I m trying to color the space between the graph line and the x axis The color should be based on the value of the corres
  • ggplot2极坐标图轴标签位置

    This is just a extension for a old question ggplot2 polar plot arrows https stackoverflow com questions 10515703 ggplot2
  • MATLAB 子图标题和轴标签

    我有以下脚本来最终绘制 4 x 2 子图 files getAllFiles preliminaries n size files cases cell 1 n m cell 1 n for i 1 1 n S load files i c
  • iOS绘图3D图形库[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在搜索一个可以帮助我绘制 3D 图表的库 我想要类似的东西这一页 http www math uri edu bkaskosz fla
  • Seaborn HeatMap - 如何在多个不同的数据集中设置颜色分级

    所以我需要在seaborn中创建许多具有不同数据规模的热图 有些范围是 0 100 有些是 100 到 100 我需要做的是保持所有图表的颜色分级相同 例如 我希望任何低于 0 的值稳定地从深蓝色变为浅蓝色 而高于 0 的值则逐渐变为深红色
  • matplotlib matshow 标签

    我一个月前开始使用 matplotlib 所以我仍在学习 我正在尝试用 matshow 制作热图 我的代码如下 data numpy array a reshape 4 4 cax ax matshow data interpolation
  • IMAP x Gmail => 标签?

    有没有从 imap 连接获取 Gmail 标签 甚至过滤器 的经验 找不到线索 谢谢您提供有关它的任何信息 或者 如果您以编程方式使用 IMAP 则可以使用 gmail imap 扩展来访问此信息 http code google com

随机推荐