当前位置: 首页 > 知识库问答 >
问题:

如何在JavaFx中获取折线图的刻度标签的宽度?

方昊阳
2023-03-14

如何在下面的屏幕截图中获得由红色附件突出显示的部分的宽度?

我试过了

LineChart<Number, Number> sourceChart = ...;
NumberAxis axis = (NumberAxis) sourceChart.getXAxis();
FilteredList<Node> filtered = axis.getChildrenUnmodifiable().filtered(node -> node instanceof Text);
node = filtered.get(0);

filter是刻度的列表,但node没有任何返回刻度宽度的方法,例如getPrefWidth()或任何此类方法。

共有2个答案

董永宁
2023-03-14

在大多数情况下,yAxis.getWidth()已经足够了,但是如果你想精确地得到这些信息,没有直接的方法(如果我没有弄错的话),所以你必须找到一个变通的方法,我建议你访问chart-plot-background,然后找到那个区域的layoutX,它实际上是你的标记区域的宽度。以下是实现这一目标的方法:

Region r = (Region) lineChart.lookup("Region"); // access chart-plot-background
double yAxisWidth = r.getLayoutX(); // find out where it starts
System.out.println(yAxisWidth);

为了解释这个想法,这里有一张图片(图表-情节-背景有黑色背景颜色):

PS。我仍然不确定这是正确的方法,它可能会失败,具体取决于您可能在图表上应用的不同CSS规则

萧晔
2023-03-14

好吧,所以我在JKostikiadis的帮助下想通了。基本上,正如他/她所提到的,你得到绘图区域的布局X,然后只需添加绘图区域的左填充。

Region plotArea = (Region) sourceChart.lookup("Region");
double plotAreaLayoutX = plotArea.getLayoutX();
double chartLeftPad = sourceChart.getPadding().getLeft();
double labelWidth = plotAreaLayoutX + chartLeftPad;
 类似资料:
  • 显然,有两个方法和 是这样的: 我看了这篇文章,但它推荐了一种已弃用的方法: 如何在爪哇fx中获取标签

  • 我需要移动轴中所有刻度线的标签(),使文本位于其自己的刻度线和下一个刻度线的中间。 我正在使用Roland的甘特图控件(经过一些修改)和Christian Schudt的DateAxis作为我的X轴。我的目标是根据Date值绘制甘特图(忽略时间;所有时间值都被截断)。 我的甘特图对每个任务都有一个“开始日期”和“结束日期”(即在图表上,它由一个条形图表示)。 考虑一下: 我有一个从2月1日开始的任

  • 问题内容: 我遇到了与此处报告的问题类似的问题。我不明白为什么刻度标签文本为空字符串: 输出: 我得到的结果相同,但是绘制的图在保存或显示时在x轴上显示了八个带标记的刻度。但是,如果我 在 显示图 后 要求标签,则该列表已正确填充。当然,现在要做任何更改都为时已晚。 输出: 为什么会发生这种情况(Mac OS X Yosemite,Matplotlib 1.5.1),以及 在 显示或保存绘图 之前

  • 本文向大家介绍如何删除JavaFX XY图表中的刻度线?,包括了如何删除JavaFX XY图表中的刻度线?的使用技巧和注意事项,需要的朋友参考一下 该javafx.scene.XYChart类是基类所有已在xy窗格中绘制的图表。通过实例化此类的子类,您可以创建各种XY图表,即-折线图,面积图,条形图,饼图,气泡图,散点图等。 在XY图表中,给定的数据点绘制在XY平面上。沿x和y轴,您将具有刻度线和

  • 本文向大家介绍如何修改JavaFX XY图表中刻度线的长度?,包括了如何修改JavaFX XY图表中刻度线的长度?的使用技巧和注意事项,需要的朋友参考一下 在XY图表中,给定的数据点绘制在XY平面上。沿x和y轴,您将具有刻度线和刻度线标签。刻度线代表间隔均匀的各种值。 更改刻度线的长度 javafx.scene.chart.Axis类(abstract)是基类中的所有XY图表轴。要创建X和Y轴,您

  • 问题内容: 我可以用 但这也会删除标签。我可以以任何方式绘制刻度标签,但不能绘制刻度和书脊 问题答案: 您可以使用(http://matplotlib.org/api/axes_api.html#matplotlib.axes.Axes.tick_params)将刻度长度设置为0 :