我创建了条形图的简单示例,但我注意到条形图的大小适合图表。我怎样才能限制尺寸?我想限制宽度大小。
正如我们在这里所讨论的,要设置每个条形图的最大宽度,我们必须在每次调整场景或图表的大小时相应地更改bargap
或categorygap
。
与参考问题的唯一区别是,我们必须在第一次显示时调整图表的大小。
基于相同的代码,让我们创建setmaxbarwidth()
方法:
private final NumberAxis yAxis = new NumberAxis();
private final CategoryAxis xAxis = new CategoryAxis();
private final BarChart<String,Number> bc = new BarChart<>(xAxis,yAxis);
private void setMaxBarWidth(double maxBarWidth, double minCategoryGap){
double barWidth=0;
do{
double catSpace = xAxis.getCategorySpacing();
double avilableBarSpace = catSpace - (bc.getCategoryGap() + bc.getBarGap());
barWidth = (avilableBarSpace / bc.getData().size()) - bc.getBarGap();
if (barWidth >maxBarWidth){
avilableBarSpace=(maxBarWidth + bc.getBarGap())* bc.getData().size();
bc.setCategoryGap(catSpace-avilableBarSpace-bc.getBarGap());
}
} while(barWidth>maxBarWidth);
do{
double catSpace = xAxis.getCategorySpacing();
double avilableBarSpace = catSpace - (minCategoryGap + bc.getBarGap());
barWidth = Math.min(maxBarWidth, (avilableBarSpace / bc.getData().size()) - bc.getBarGap());
avilableBarSpace=(barWidth + bc.getBarGap())* bc.getData().size();
bc.setCategoryGap(catSpace-avilableBarSpace-bc.getBarGap());
} while(barWidth < maxBarWidth && bc.getCategoryGap()>minCategoryGap);
}
@Override
public void start(Stage stage) {
bc.setTitle("1");
xAxis.setLabel("Groups");
yAxis.setLabel("Value");
XYChart.Series series1 = new XYChart.Series();
series1.setName("Groups");
series1.getData().add(new XYChart.Data("kk", 1));
Scene scene = new Scene(bc,800,600);
bc.getData().addAll(series1);
stage.setScene(scene);
stage.show();
setMaxBarWidth(40, 10);
bc.widthProperty().addListener((obs,b,b1)->{
Platform.runLater(()->setMaxBarWidth(40, 10));
});
}
我已经用platform.runlater()
包装了对setmaxbarwidth()
的调用,这样场景图就有时间正确地刷新图表,避免了在while循环过程中多次重新绘制。另外,我已经将监听器移到bc.widthproperty()
,以防图表嵌入到其他容器中。
我正在使用chartjs版本:2.1.4在MVC应用程序中创建图表。我正在使用控制条形图的宽度,以进行固定宽度设置。它在只有条形图的情况下工作正常,但在“堆叠条形图”的情况下,我无法确定条形图的宽度。我正在使用以下代码创建堆叠条形图,如下所示: 在这种情况下,"barper"属性不起作用。请在"chartjs版本: 2.1.4"中建议我解决方案。 提前谢谢
问题内容: 当文字到达图片的右侧时,如何将文字包裹在其中? 这是笔:http : //codepen.io/mjankowski/pen/pbzejy 在上述情况下,第二个图形标题移动到图像的右侧之外。我希望它在“ Longname”之后换行。 另外,对于更简单的方法,也欢迎提出建议。我只希望图像/标题整洁。 谢谢,马特 问题答案: 一种方法是使您的元素具有弹性容器,并将其对齐方式设置为。这样可以
我的一个程序中的java类遇到了一个奇怪的问题。谢天谢地,我能够使用示例取自Oracle网站: https://docs.oracle.com/javase/tutorial/displayCode.html?code=https://docs.oracle.com/javase/tutorial/uiswing/examples/components/FrameDemoProject/src/c
问题内容: 有人可以告诉我如何修改此使用matplotlib的Python代码,以便无论绘制多少分,条的宽度都将保持恒定吗?先感谢您! 问题答案: 条的宽度相同!它们看起来不一样的原因是因为您正在使用以下行: 这将更改您的x值,从而更改x轴的比例。为了抵消这种影响,您可以更改x轴的限制,也可以使条形宽度取决于分数的数量,例如,如果0.35的宽度适用于10个分数,那么如果将分数的数量加倍,条宽度的一
我需要限制节点的子级大小。我的父节点是一个VBox。我试图设置maxWidth,但它不起作用(wide子级不在VBox范围内) 如何将孩子的大小限制在父母的范围内?除了绑定还有别的办法吗? 预期行为:Children maxWidth自动与VBox相同(无需手动设置) 我的代码(fxml):