JavaFX 2.0如果为lineChart.setCreateSymbols(false)设置某些图形的符号;

时间:2014-02-05 18:22:23

标签: css graph javafx linechart

我绘制了更多的图形和大量的测量图形,这些图形在lineChart看起来像字母旋转H.测量的数量是动态的,在20-1000之间。首先我为所有图形创建ObservableList,然后插入一些值,然后我将它们添加到seriesLineChart中,然后将seriesLineChart添加到lineChart。

问题是我尝试了很多解决方案,但没有足够的好处。一些工作正常,5个例子休息他们崩溃。我想为某些图形设置圆圈并设置图形的颜色。

首先,我需要我所需要的一切:

 public static LineChart<Date, Number> lineChart; //the line chart

 ObservableList<XYChart.Series<Date, Number>> seriesLineChart =           FXCollections.observableArrayList(); //I put all graphs into this

 ObservableList<XYChart.Data<Date, Number>> Errors = FXCollections.observableArrayList(); 
 ObservableList<XYChart.Data<Date, Number>> graphNext = FXCollections.observableArrayList(); 
 ObservableList<XYChart.Data<Date, Number>> deadLine = FXCollections.observableArrayList();
 ObservableList<XYChart.Data<Date, Number>> MaximumError =               FXCollections.observableArrayList();

 //HERE I MADE DYNAMIC MEASUREMENTS IT DEPENDES OF SOME PARAMETERS

 XYChart.Series measurement1;  
 XYChart.Series measurement1000; 

将数据插入除测量之外的所有图表

 for(int i=0: i<data.length; i++){
      GraphNext.add(new XYChart.Data<Date, Number>(new GregorianCalendar(nextYearCalib, Integer.valueOf(splitDate[i])-1, Integer.valueOf(splitDate[i])).getTime(),data[i]));                    
 }       //THE LENGTH OF splitDate IS LIKE data AND I DO SOMETHING LIKE THIS FOR ALL GRAPHS EXCEPT Measurements

测量结果如下:

 for(int i=0: i<measurementX.length; i++){  //X=1...1000(max)
      measurementX.getData().add(new XYChart.Data<Date, Number>(new GregorianCalendar(Integer.valueOf(date[0]), Integer.valueOf(date[1])-1, Integer.valueOf(date[2])).getTime(),value));

}

在seriesLineChart中添加所有这些图:

 seriesLineChart.add(new XYChart.Series<>("SOME TEXT WHICH WILL BE TITLE IN LEGEND BELOW THE LINECHART" +, Errors));
 seriesLineChart.add(new XYChart.Series<>("SOME TEXT WHICH WILL BE TITLE IN LEGEND BELOW THE LINECHART" +, graphNext));
 seriesLineChart.add(new XYChart.Series<>("SOME TEXT WHICH WILL BE TITLE IN LEGEND BELOW THE LINECHART" +, deadLine));

 seriesLineChart.add(new XYChart.Series<>("SOME TEXT WHICH WILL BE TITLE IN LEGEND BELOW THE LINECHART" +, MaximumError));

 seriesLineChart.add(measurement1);
 ....
 seriesLineChart.add(measurement100);  //LET'S SAY FOR X=1..100

将seriesLineChart添加到lineChart:

 lineChart.setLegendVisible(true);     //sets legend below graph is visible              
 lineChart.setData(seriesLineChart);    //put seriesLineChart 
 lineChart.setCreateSymbols(false);     //this instruction disable to draw circles on every graph

CSS文件如下:

 /* graph errors */
 .default-color0.chart-series-line { 
-fx-stroke:  #0181e2, white;
-fx-background-radius: 5px;
 }

 /* .default-color0.chart-legend-item-symbol{ 
-fx-stroke:  #f9d900, white; 
 }*/

 .default-color0.chart-line-symbol {
-fx-background-color: #0181e2, white;
-fx-background-radius: 5px;
 }


 /* graph next */
 .default-color1.chart-series-line {
-fx-stroke: #ffaaaa, white;
 }

 /* .default-color1.chart-legend-item-symbol{
-fx-stroke: #a9e200, white;
 } */

 .default-color1.chart-line-symbol {
-fx-background-color: #ffaaaa, white;
 }
 /* graph deadline */
 .default-color2.chart-series-line {
-fx-stroke: #a9e200, white;
-fx-background-radius: 30px;
 }

 /* .default-color2.chart-legend-item-symbol{
-fx-stroke: #ff0000, white; 
 }*/

 .default-color2.chart-line-symbol {
-fx-background-color: #a9e200, white;   
 }

 /* graph maxerror */
 .default-color3.chart-series-line {
-fx-stroke: #ff0000, white;
 }

 /* .default-color3.chart-legend-item-symbol{ 
-fx-background-color: #000000, black;
 } */

 .default-color3.chart-line-symbol {
-fx-background-color: #ff0000, white;
 }

 .default-color4.chart-series-line {
-fx-stroke: #000000, white;
 }
 .default-color4.chart-line-symbol {
-fx-background-color: #000000, white;
 }



 //AND SO ON TO THE 1000
 /* graph measurement */
 .default-color1000.chart-series-line {
-fx-stroke: #000000, white;
 }
 .default-color1000.chart-line-symbol {
-fx-background-color: #000000, white;
 }

.default-colorX.chart-series-line设置为测量图的颜色 .default-color1000.chart-line-symbol设置为图表图例的颜色

在我的代码中我也设置了CSS文件,这不是默认的,因为我需要特定的颜色。它是在我在线图上绘制之前设置的。 。scena.getStylesheets()添加(的getClass()的getResource( “观看/ styleLineChart.css”)toExternalForm());

你可以先得到图表,然后是graphMeasurment。 在我绘制之前我使用:lineChart.setCreateSymbols(false);.但在我的错误和graphNext上,我需要这些圈子。所以我已经分析了这个问题如何解决它:

  1. 在CSS中为错误和graphNext

  2. 创建圆圈
  3. 在CSS中启用它和其他人(不是Error和graphNext)以删除圈子

  4. 我无法在一个lineChart上添加更多sereisLineChart,因为它显示的是最后一个。

  5. 例如:

     lineChart.setData(seriesLineChartErrors);    
     lineChart.setCreateSymbols(true);
     lineChart.setData(seriesLineChartGraphNext);    
     lineChart.setCreateSymbols(true);
     lineChart.setData(seriesLineChart);    //all others deadilne, maxError and all mesaruments
     lineChart.setCreateSymbols(false);
    
    1. 我没有为每个图设置符号的任何方法。

    2. 也许我没有计划好我的图表,因为所有Observebal列表和Observbel列表的ObservabelLists等等。

    3. 我还在图表中总结了我的传奇。我使用图表和一个只有一个测量。测量从2到X我删除。我想成为我的圈子和传统图表一样的传奇。

       for(Node n: lineChart.getChildrenUnmodifiable()){
      if(n instanceof Legend){
          final Legend legend = (Legend) n;
          ObservableList<LegendItem> legItem = legend.g!etItems();
          for(int i=0; i<legItem.size(); i++){
              legItem.remove(5, legItem.size());
              legend.setItems(legItem);
          }
      }
       }
      

      我也试过这个图表来获取他们的CSS我不会工作:

       for(Node n: lineChart.getChildrenUnmodifiable()){
            if(n instanceof Chart){
           final Chart chart = (Chart) n;
           chart.getStyleClass());
           /*TO ADD SOME CODE TO MANIPULATE CSS BUT I SAW THIS CAN'T BE DONE*/                    
            }
       }
      

      我也尝试了类似的东西,但我现在不知道如何编程我的视图/ styleLineChart.css。我认为这将是最好的解决方案。

       val s = new XYChart.Series[Number, Number]();
       s.setName(measurementX);  //X=[4-1000]
       s.getNode.getStyleClass.add("series-" + seriesName);
      

      我的最后一个选择是我会绘制圆圈并将它们插入到Errors和graphNext中。但我不喜欢这样做。

      所以我可以更容易理解我用简单的解释来调整图像。第二个是它应该是什么样子。 我希望你能帮助我!

      第一张图片:https://dl.dropboxusercontent.com/u/30889532/image.png 第二张图片:https://dl.dropboxusercontent.com/u/30889532/image2.png

0 个答案:

没有答案