Javafx 图表将 NumberAxis 更改为 CategoryAxis

Javafx chart change NumberAxis to CategoryAxis

我用 SceneBuilder 创建了一个 AreaChart X 轴 NumberAxis 和 Y 轴上的 NumberAxis

@FXML
private  AreaChart<Number,Number> areaChart;

和 FXML:

<AreaChart fx:id="areaChart" alternativeColumnFillVisible="true" createSymbols="false" style="-fx-horizontal-grid-lines-color: white;" title="Altura durante la sesión">
    <xAxis>
        <NumberAxis fx:id="areaX" animated="false" label="Distancia (metros)"    style="axis_color: white;" />
    </xAxis>
    <yAxis>
        <NumberAxis fx:id="areaY" label="Altura (metros)" style="axis_color:    white;" />
    </yAxis>

我想通过按下按钮将该 areaChart 转换为 AreaChart,在 Y 轴上具有 NumberAxis,在 X 轴上具有 CategoryAxis。 因为我必须制作一个高度 x 距离图表,然后按下按钮将该图表转换为高度 x 时间图表 按下按钮后的结果必须是这样的:

<AreaChart fx:id="areaChart" alternativeColumnFillVisible="true" createSymbols="false" style="-fx-horizontal-grid-lines-color: white;" title="Altura durante la sesión">
    <xAxis>
        <CategoryAxis fx:id="areaX" animated="false" label="Distancia (metros)"    style="axis_color: white;" />
    </xAxis>
    <yAxis>
        <NumberAxis fx:id="areaY" label="Altura (metros)" style="axis_color:    white;" />
    </yAxis>

我认为更改图表的轴类型不是个好主意(我什至不确定你是否可以这样做)。

相反,我建议:

  1. 正在创建两个图表。
  2. 一个使用 CategoryAxis,另一个使用 NumberAxis。
  3. 向两个图表添加相似的数据(但可能不同)系列。
  4. 将两个图表放在 StackPane 中。
  5. 添加一个ToggleButton, ToggleSwitch, CheckBox or RadioButton(某种切换控件),以在两种状态之间切换。
  6. 将一个图表的可见性绑定到切换的选定状态,并将另一个图表的可见性绑定到切换的非选定状态。

这应该允许您根据需要显示具有适当轴类型的适当图表。