Charts 使用JavaFX偏移图表图例/分层图表

Charts 使用JavaFX偏移图表图例/分层图表,charts,javafx-2,legend,Charts,Javafx 2,Legend,简短版本:是否可以在JavaFX中偏移图表图例,即左对齐底部图例或将图例偏离中心20px?无论是Java代码还是CSS,通过查看JavaFX文档还是普通的Google搜索,都不可能做到这一点 较长版本: 比如说,我有一张图表,显示了4个不同断路器上的三相交流电源利用率。我想在“一张图表”上显示电路的总利用率和每个单独相位的利用率。因此,我选择了两个不同的条形图,并将它们堆叠起来,最后得到如下结果: 但是,由于总体利用率和阶段利用率在不同的图表中,因此它们有不同的图例。由于阶段图表位于总体图表

简短版本:是否可以在JavaFX中偏移图表图例,即左对齐底部图例或将图例偏离中心20px?无论是Java代码还是CSS,通过查看JavaFX文档还是普通的Google搜索,都不可能做到这一点


较长版本:

比如说,我有一张图表,显示了4个不同断路器上的三相交流电源利用率。我想在“一张图表”上显示电路的总利用率和每个单独相位的利用率。因此,我选择了两个不同的条形图,并将它们堆叠起来,最后得到如下结果:

但是,由于总体利用率和阶段利用率在不同的图表中,因此它们有不同的图例。由于阶段图表位于总体图表的顶部,因此我们无法看到总体利用率图表的图例。那么,是否可以偏移到两个图例,以使两个图例都可见,如下图所示(经过照片编辑):


这是可能的,还是仅仅是一种愚蠢的方法,比如,有没有更好的方法来获得这个或其他类似的结果?如果您有任何想法,我们将不胜感激。

不那么优雅、硬编码,但简单易懂的方式似乎又在玩CSS:

 /* The default css of chart legend in caspian. */
.chart-legend {
   -fx-background-color:  #cccccc, #eeeeee;
   -fx-background-insets: 0,1;
   -fx-background-radius: 6,5;
   -fx-padding: 6px;
}

/* We customize the above default background-color to transparent for 
   the chart legend on the right side, in our own CSS file. */
#my-legend-on-the-right-side .chart-legend {
   -fx-background-color: transparent;
   -fx-background-insets: 0,1;
   -fx-background-radius: 6,5;
   -fx-padding: 6px;
}

/* Then we customize the legend on the left side by padding 
   it to the left while its background covers the legend on the right. */
#my-legend-on-the-left-side .chart-legend {
   -fx-background-color:  #cccccc, #eeeeee;
   -fx-background-insets: 0,1;
   -fx-background-radius: 6,5;
   -fx-padding: 6px 300px 6px 6px;
}
通过设置ID来使用它们:

barChartTotal.setId("my-legend-on-the-left-side");
barChartPhases.setId("my-legend-on-the-right-side");

不确定我是如何漏掉/隔开填充作为解决方案的,但确实如此。虽然有点笨重,但它完成了任务。谢谢作为旁注,通过在右侧添加左填充,我可以将其移动,以便图例保持在图表下方的中心位置,而不会有一堆填充物粘在一边。看起来干净一点。因此,代替
-fx填充:6px,类似于
-fx填充:6px,6px,6px,100px用于右侧。@Paul Marshall。不客气,是的,另一种对称方式也适用。