JavaFX - 为什么LineChart在几个图之后重复颜色?

时间:2014-07-22 22:44:55

标签: java css colors javafx linechart

我尝试绘制14个数据集,但我在LineChart中遇到颜色问题。我正确地在.css文件中定义了14种颜色:

.default-color0.chart-series-line { -fx-stroke: red; } 
....
.default-color13.chart-series-line { -fx-stroke: goldenrod; } 

一切正常,直到7个数据线条都有不同的颜色。然后从color0到color7再次重新划分线条的颜色。我不知道发生了什么。此外,当我不添加任何.css样式时,线图会自动生成颜色,但在7个数据后它会重复颜色。

1 个答案:

答案 0 :(得分:4)

在Java 8中,系列的默认颜色编码由以下内容确定:

series.defaultColorStyleClass = DEFAULT_COLOR+(nextClearBit%8);

(这是来自JavaFX XYChart源的内部实现代码)。在处理样式类时,您可以看到它使用模8运算。这意味着您在0到7范围之外定义的任何默认样式类都将被忽略。

  

还有其他任何可能性迫使LineChart用样式类绘制更多颜色吗?

是的,您不必使用默认颜色,您可以根据需要分配任意数量的自定义颜色。例如,您可以看到以下样式表颜色,特别是序列号(仅受图表上系列数量限制),而不是默认颜色(将在8系列后重复):

.chart-series-line.series0 {
    -fx-stroke: green;
}
.chart-line-symbol.series0 {
    -fx-background-color: green, white;
}

.chart-series-line.series1 {
    -fx-stroke: black;
}
.chart-line-symbol.series1 {
    -fx-background-color: black, white;
}

.chart-series-line.series2 {
    -fx-stroke: crimson;
}
.chart-line-symbol.series2 {
    -fx-background-color: crimson, white;
}

使用上述样式的示例图像只显示了三个系列,但希望您能够根据需要将其扩展为多个系列和颜色:

image

另见: