java - 如何更改散点图中的点大小?

标签 java css javafx plot scatter-plot

我有这个用 JavaFX 制作的 ScatterChart: Bifurcation diagram 如何设置数据点大小?

我发现它应该在 CSS 中完成,但即使有 docs ,我还是想不通。

最佳答案

使用

.chart-symbol {
    -fx-background-radius: 10px ;
    -fx-padding: 10px ;
}

如果您只需要将其应用于特定图表,请为图表指定一个 ID 并在 CSS 文件中使用该 ID:

chart.setId("bifurcation-diagram");
#bifurcation-diagram .chart-symbol {
    -fx-background-radius: 10px ;
    -fx-padding: 10px ;
}

中南合作:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.ScatterChart;
import javafx.scene.chart.XYChart.Data;
import javafx.scene.chart.XYChart.Series;
import javafx.stage.Stage;

public class ScatterChartExample extends Application {

    @Override
    public void start(Stage primaryStage) {

        ScatterChart<Number, Number> chart = new ScatterChart<>(new NumberAxis(), new NumberAxis());

        chart.setId("bifurcation-diagram");

        Series<Number, Number> series = new Series<>();
        chart.getData().add(series);

        for (int i = 0 ; i <= 100; i++) {
            double lambda = 4.0 * i / 100 ;
            double x = 0.5 ;
            for (int j = 0 ; j < 100 ; j++) {
                x = lambda * x * (1-x);
            }
            for (int j = 0 ; j < 50; j++) {
                series.getData().add(new Data<>(lambda, x));
                x = lambda * x * (1-x);
            }
        }

        Scene scene = new Scene(chart, 1200, 800);
        scene.getStylesheets().add("bifurcation.css");
        primaryStage.setScene(scene);
        primaryStage.show();

    }

    public static void main(String[] args) {
        launch(args);
    }
}

fork .css:

#bifurcation-diagram .chart-symbol {
    -fx-background-radius: 10px ;
    -fx-padding: 10px ;
}

enter image description here

如果您想要更小的点,这似乎效果不佳(我假设是因为它们与为图表数据生成的默认节点不兼容)。在这种情况下,您可能还需要为数据设置节点:

for (int i = 0 ; i <= 400; i++) {
    double lambda = 1.0 * i / 100 ;
    double x = 0.5 ;
    for (int j = 0 ; j < 100 ; j++) {
        x = lambda * x * (1-x);
    }
    for (int j = 0 ; j < 50; j++) {
        Data<Number, Number> data = new Data<>(lambda, x);
        Region plotpoint = new Region();
        plotpoint.setShape(new Circle(0.5));
        data.setNode(plotpoint);
        series.getData().add(data);
        x = lambda * x * (1-x);
    }
}

和 CSS

#bifurcation-diagram .chart-symbol {
    -fx-background-radius: 0;
    -fx-padding: 1px ;
}

enter image description here

关于java - 如何更改散点图中的点大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39947456/

相关文章:

java - 使 SOLR 拼写检查器搜索不区分大小写但返回原始大小写

javascript - 粘性导航不会对齐中心

java - 如何更新显示更新对象属性的 JAVA FX 元素(标签、列表等)

javafx - 如何在JavaFX的MenuButton中创建子菜单?

Java RegEx - 如何防止一行特殊字符被另一个字符替换?

java - 如何从 TypeMirror 创建实例

java - 如何在 Java.String 类上添加方法

html - 相对 div 与父表格单元格重叠

javascript - 如何更改动态创建图像的类属性值?

java - 有没有办法在 JavaFX 的同一文本行中使用两种不同的字体大小?